李云云
(太原理工大學輕紡工程與美術學院,山西 晉中 030600)
軟件體系結構是軟件需求和軟件設計之間的一座橋梁,使得軟件設計能夠很真實地反映并滿足軟件的需求,從而提高了軟件需求和軟件設計的質量。軟件體系結構設計的一個核心問題是能否使用重復的體系結構模式,即能否達到體系結構級的軟件重用。也就是說,能否在不同的軟件系統中,使用同一體系結構。基于這個目的,學者們開始研究和實踐軟件體系結構的風格。體系結構風格反映了領域中眾多系統所共有的結構和語義特性,并指導如何將各個模塊和子系統有效地組織成一個完整的系統。近年來,人們逐漸認識到軟件體系結構在軟件開發中的重要地位,好的軟件體系結構是決定一個軟件系統成功的重要因素。因此,軟件工程研究人員將研究熱點集中到軟件體系結構的研究上。C/S結構和B/S結構是兩種常見的體系結構風格,現行的很多軟件系統都是架構在這兩種風格之上的。本文針對這兩種典型的體系結構風格進行討論。
C/S(Client/Server)結構見圖1,是基于資源不對等,且為實現共享而提出來的一種體系結構,是20世紀90年代成熟起來的技術。客戶機/服務器結構將應用一分為二,服務器(后臺)負責數據管理,客戶機(前臺)完成與用戶的交互任務。通過它可以充分利用兩端硬件環境的優勢,將任務合理分配到Client 端和Server端來實現,降低了系統的開銷。客戶/服務器應用模式的特點是大多基于“肥客戶機”結構下的兩層結構應用軟件。服務器通常采用高性能的PC、工作站或小型機,并采用大型數據庫系統,如 Oracle、Sybase、Informix或 SQL Server,客戶端安裝專用的客戶端軟件。

圖1 傳統的兩層C/S結構
①C/S模型具有強大的數據操作和事務處理能力,且開發模型簡單,易于理解和接受。系統的客戶應用程序和服務器構件分別運行在不同的計算機上,易于擴充和壓縮。②在C/S結構中,各功能構件充分隔離,客戶應用程序的開發集中于數據的查詢瀏覽,而數據庫服務器的開發則集中于數據的管理,分工具體,且利于系統的安全性。由于客戶端與服務器的直接相連,因此實時性較好。③能充分發揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務器。對應的優點就是客戶端響應速度快,而且應用服務器運行數據負荷較輕。
在C/S結構中,表現層和事務層都放在客戶端,而數據邏輯層和數據存儲層則置于服務器端。這種組織安排帶來諸多的限制:
①維護和升級成本非常高。②C/S結構的軟件需要針對不同的操作系統開發不同版本的軟件,已經很難適應百臺電腦以上局域網用戶同時使用,而且代價高、效率低。③C/S組織結構不支持Internet,只適用于局域網,而隨著互聯網的飛速發展,移動辦公和分布式辦公越來越普及,C/S結構很顯然無法滿足這些需求。
另外,除了傳統的二層C/S結構,還存在三層次客戶機/服務器(C/S)結構。三層次客戶機/服務器(C/S)結構是在常規客戶機/服務器(C/S)結構上提出的,系統在客戶機和數據庫服務器間添加一個應用服務器。值得注意的是,3層C/S結構各層間的通信效率若不高,即使分配給各層的硬件能力很強,作為整體來說,也達不到所要求的性能。此外,設計時必須慎重考慮3層間的通信方法、通信頻度及數據量,這和提高各層的獨立性一樣,是3層C/S結構的關鍵問題。
在當前Internet/Intranet領域,瀏覽器/服務器結構是當前非常流行的客戶機/服務器結構,簡稱B/S結構,見圖2,主要是利用不斷成熟的WWW瀏覽器技術,結合瀏覽器的多種腳本語言,用通用瀏覽器就實現了原來需要復雜的專用軟件才能實現的強大功能,并節約了開發成本,是一種全新的軟件體系結構。

圖2 B/S結構
B/S結構是一種典型的3層結構模式:表示層、處理層和數據層。表示層為瀏覽器。瀏覽器僅承擔網頁信息的瀏覽功能,以超文本格式實現信息的瀏覽和輸入,沒有任何業務處理能力;功能層由服務器承擔業務處理邏輯和頁面的存儲管理,接收客戶瀏覽器的任務請求,并根據任務請求類型執行相應的事務處理程序;數據層由數據庫服務器承擔數據處理邏輯,其任務是接收服務器對數據庫服務器提出的數據操作的請求,由數據庫服務器完成數據的查詢、修改、統計、更新等工作,并把對數據的處理結果提交給服務器。
①操作使用簡單。B/S最大的優點就是可以在任何地方進行操作而不用安裝任何專門的軟件,只要有一臺能上網的電腦就能使用,客戶端零維護。系統的擴展非常容易,只要能上網,再由系統管理員分配一個用戶名和密碼,就可以使用了。②維護和升級方式簡單。B/S結構的軟件只需要管理服務器就行了,所有的客戶端只是瀏覽器,根本不需要做任何維護。無論用戶的規模有多大,有多少分支機構都不會增加任何維護升級的工作量,所有的操作只需要針對服務器進行。如果是異地,只需要把服務器連接專網即可,實現遠程維護、升級和共享。③成本降低,選擇更多。B/S結構可以支持任何操作系統和瀏覽器,對系統性能和配置要求相對較低,既可以節省成本,對用戶而言,對操作系統和瀏覽器又有更多的選擇。
B/S模式也存在不足,表現在服務器負擔過重,尤其是在業務邏輯復雜和處理量大的情況下,服務器的處理能力成為影響系統效率的關鍵因素。另外,服務器也成為系統的瓶頸。具體表現在:①由于瀏覽器只是為了進行WEB瀏覽而設計的,當應用于WEB系統時,許多功能不能實現或實現起來比較困難。比如,通過瀏覽器進行大量的數據輸入,或進行報表的應答都是比較困難和不便的。②復雜的應用構造困難。雖然可以用ActiveX、Java等技術開發較為復雜的應用,但是相對于發展已非常成熟的一系列應用工具來說,這些技術的開發復雜,并沒有完全成熟的技術供其使用。③HTTP可靠性低,有可能造成應用故障,特別是對于管理者來說,采用瀏覽器方式進行系統的維護是非常不安全和不方便的。④WEB服務器成為數據庫的唯一客戶端,所有對數據庫的連接都通過該服務器實現。WEB服務器同時要處理與客戶請求,以及與數據庫的連接,當訪問量大時,服務器端負載過重。⑤由于業務邏輯和數據訪問程序一般由JavaScript、VBScript等嵌入式小程序實現,分散在各個頁面里,難以實現共享,給升級和維護也帶來了不便。
為了克服B/S和C/S結構的缺點,在原有B/S體系結構基礎上,采用一種新的體系結構,即C/S與B/S相結合的體系結構,見圖3。

圖3 B/S和C/S混合結構
在C/S、B/S相結合的體系結構中,一些需要用Web處理的,滿足大多數訪問者請求的功能界面(如信息發布查詢界面)采用B/S結構,后臺只需少數人使用的功能應用(如數據庫管理維護界面)采用C/S結構。客戶端發出HTTP請求到Web Server,Web Server將請求傳送給Web應用程序。Web應用程序將數據請求傳送給數據庫服務器,數據庫服務器將數據返回Web應用程序,然后再由Web Server將數據傳送給客戶端。
采用這種結構的優點在于:①充分發揮了B/S與C/S體系結構的優勢,彌補了兩者的不足。充分考慮用戶利益,保證瀏覽查詢者方便操作的同時也使得系統更新簡單,維護簡單靈活,易于操作。②信息發布采用B/S結構,保持了瘦客戶端的優點。裝入客戶機的軟件可以采用統一的WWW瀏覽器。而且WWW瀏覽器和網絡綜合服務器都是基于工業標準,可以在所有的平臺上工作。③數據庫端采用C/S結構,通過ODBC連接。這一部分只涉及到系統維護、數據更新等,不存在完全采用C/S結構帶來的客戶端維護工作量大等缺點,并且在客戶端可以構造非常復雜的應用,界面友好靈活,易于操作,能解決許多B/S存在的固有的缺點。④對于原有基于C/S體系結構的應用,可以非常容易地升級到這種體系結構,只需開發用于發布的WWW界面,可以保留原有的C/S結構的某些子系統,充分地利用現有系統的資源,使得現有系統或資源無需大的改造即可以連接使用,保護了用戶以往的投資。⑤將服務器端劃分為Web服務器和Web應用程序兩部分。
目前單一的B/S結構和C/S結構由于它們固有的優勢和劣勢,已經很難滿足現實需要了,而更多的是根據具體的應用需求設計恰當的B/S和C/S的混合結構,從而發揮他們各自的優勢,揚長避短,只有這樣,才能適應復雜多變的實際應用場合。
[1]周叢林.CS與BS在石油信息系統的應用[J],中國石油和化工,2009,10.
[2]李常春,曹明武,王康年等.基于CORBA的電信業基站運維管理系統[J],計算機應用與軟件,2009,9.
[3]吳正平,謝學文,王仁明.基于CS模式的多機器人網絡通信系統[J],三峽大學學報(自然科學版),2009,3.
[4]劉紅梅.基于C/S和B/S體系結構應用系統的開發方法[J],計算機與現代化,2007,11.
[5]曾學軍.淺析B/S和C/S結構的開發與應用[J],網絡通訊與安全,2007,3.
[6]張煒.C/S與B/S混合軟件體系結構及其在數字化教學系統中的應用[J],計算機教育,2007,8.
[7]沈劍翹,聶華北.軟件體系結構(風格)綜述[J],電腦開發與應用,2007,11.