1. 程式人生 > >經典軟體體系結構風格(五)

經典軟體體系結構風格(五)

import java.io.*;
import java.net.*;
public class tcpServer {
 	public static final int PORT=8888;
 	public static void main(String[] args) throws IOException{
  	  //建立ServerSocket
  	  ServerSocket s=new ServerSocket(PORT);
  	  System.out.println("ServerSocket:"+s);
  	  try{
  	    /*程式阻塞,等待連線。即直到有一個客戶請求到達,程式方能繼續執行*/
        Socket ss=s.accept();
        System.out.println("Socket accept:"+ss);
        try {
	      //連線成功,建立相應的I/O資料流
          DataInputStream dis=new DataInputStream(ss.getInputStream());
          DataOutputStream dos=new DataOutputStream(ss.getOutputStream());
	  	  //在迴圈中,與客戶機通訊
      	  while(true){
            String str=dis.readUTF();	//從客戶機中讀資料
        	if(str.equals("end"))break;	//當讀到end時,程式終止
        	System.out.println(str);
       		dos.writeUTF("Echoing:"+str);	//向客戶機中寫資料
      	  }
      	  dos.close();
      	  dis.close();
    	}finally{
      	  ss.close();
    	}
  	  }finally{
        s.close();
  	  }
 	}
}

客戶機端程式 tcpClient.java

import java.io.*;
import java.net.*;
public class tcpClient {
public static void main(String[] args) throws IOException{
//建立Socket,伺服器在本機的8888埠處進行“偵聽”
Socket ss=new Socket("127.0.0.1",8888);
System.out.println("Socket:"+ss);
try{
//套接字建立成功,建立I/O流進行通訊
DataInputStream dis=new DataInputStream(ss.getInputStream());
DataOutputStream dos=new DataOutputStream(ss.getOutputStream());
for(int i=0;i<6;i++){
          dos.writeUTF("測試:"+i);	//向伺服器發資料
          dos.flush();			//重新整理輸出緩衝區,以便立即傳送
          System.out.println(dis.readUTF());	//將從伺服器接收的資料輸出
}
dos.writeUTF("end");		//向伺服器傳送終止標誌
dos.flush();				//重新整理輸出緩衝區,以便立即傳送
dos.close();
dis.close();
}finally{
ss.close();
      }
    }
}

B/S三層架構

瀏覽器/伺服器(B/S)是三層C/S風格的一種實現方式

–表現層:瀏覽器

–邏輯層:• Web伺服器• 應用伺服器

–資料層:資料庫伺服器

基本元件:

–資料庫伺服器• 存放資料的資料庫、負責資料處理的業務邏輯;

–Web伺服器/應用伺服器• 業務邏輯:對資料進行處理;• 客戶端應用程式以網頁形式存放於Web伺服器上;

–瀏覽器• 在客戶端上的瀏覽器中鍵入相應的網址

連線件:經由網路的呼叫-返回機制或隱式呼叫機制

–瀏覽器ßàWeb伺服器/應用伺服器:瀏覽器向Web伺服器/應用伺服器傳送請求,並接收返回結果。

–Web伺服器/應用伺服器ßà資料伺服器: Web伺服器/應用伺服器向資料伺服器傳送請求,並接收返回結果。

優點:

基於B/S體系結構的軟體,系統安裝、修改和維護全在伺服器端解決,系統維護成本低:

–客戶端無任何業務邏輯,使用者在使用系統時,僅僅需要一個瀏覽器就可執行全部的模組,真正達到了“零客戶端”的功能,很容易在執行時自動升級。

–良好的靈活性和可擴充套件性:對於環境和應用條件經常變動的情況,只要對業務邏輯層實施相應的改變,就能夠達到目的。

§ B/S體系結構還提供了異種機、異種網、異種應用服務的聯機、聯網、統一服務的最現實的開放性基礎。

§較好的安全性:在這種結構中,客戶應用程式不能直接訪問資料,應用伺服器不僅可控制哪些資料被改變和被訪問,而且還可控制資料的改變和訪問方式。

§三層模式成為真正意義上的“瘦客戶端”,從而具備了很高的穩定性、延展性和執行效率。

§三層模式可以將服務集中在一起管理,統一服務於客戶端,從而具備了良好的容錯能力和負載平衡能力。

§擴大了組織計算機應用系統功能覆蓋範圍,可以更加充

分利用網路上的各種資源,同時應用程式維護的工作量也大大減少

– B/S結構出現之前,管理資訊系統的功能覆蓋範圍主要是組織內部。

– B/S結構“零客戶端”方式使組織的供應商和客戶(這些供應商和客戶有可能是潛在的,也就是說可能是事先未知的)的計算機方便地成為管理資訊系統的客戶端,進而在限定的功能範圍內查詢組織相關資訊,完成與組織的各種業務往來的資料交換和處理工作。

§ B/S結構的計算機應用系統與Internet的結合也使新近提出的一些新的企業計算機應用(如電子商務,客戶關係管理)的實現成為可能。

缺點:

§客戶端瀏覽器以同步的請求/響應模式交換資料,每請求一次伺服器就要重新整理一次頁面;

§受HTTP協議“基於文字的資料交換”的限制,在資料查詢等響應速度上,要遠遠低於C/S體系結構;

§資料提交一般以頁面為單位,資料的動態互動性不強,不利於線上事務處理(OLTP)應用;

§受限於HTML的表達能力,難以支援複雜GUI(如報表等)。


程式:

詳見部落格其他網頁文章

C/S+B/S混合體繫結構:

–混合原則一:“內外有別”的原則

–混合原則二:“查改有別”的原則

§混合原則一:“內外有別”的原則:

–企業內部使用者通過區域網直接訪問資料庫伺服器

• C/S結構;

• 互動性增強;

• 資料查詢與修改的響應速度高;

–企業外部使用者通過Internet訪問Web伺服器/應用伺服器

• B/S結構;

• 使用者不直接訪問資料,資料安全;

§ “內外有別”模型的缺點是企業外部使用者修改和維護資料時,速度較慢,較繁鎖,資料的動態互動性不強

§混合原則二:“查改有別”的原則:

–不管使用者處於企業內外什麼位置(區域網或Internet),凡是需要對資料進行更新(維護和修改資料)操作的(Add, Delete, Update),都需要使用C/S結構;

–如果只是執行一般的查詢與瀏覽操作(Read/Query),則使用B/S結構。

§ “查改有別”模型體現了B/S體系結構和C/S體系結構的共同優點。

§但因為外部使用者能直接通過Internet連線到資料庫伺服器,企業資料容易暴露給外部使用者,給資料安全造成了一定的威脅。