經典軟體體系結構風格(五)
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連線到資料庫伺服器,企業資料容易暴露給外部使用者,給資料安全造成了一定的威脅。