李云云
(太原理工大學(xué)輕紡工程與美術(shù)學(xué)院,山西 晉中 030600)
軟件體系結(jié)構(gòu)是軟件需求和軟件設(shè)計之間的一座橋梁,使得軟件設(shè)計能夠很真實地反映并滿足軟件的需求,從而提高了軟件需求和軟件設(shè)計的質(zhì)量。軟件體系結(jié)構(gòu)設(shè)計的一個核心問題是能否使用重復(fù)的體系結(jié)構(gòu)模式,即能否達到體系結(jié)構(gòu)級的軟件重用。也就是說,能否在不同的軟件系統(tǒng)中,使用同一體系結(jié)構(gòu)?;谶@個目的,學(xué)者們開始研究和實踐軟件體系結(jié)構(gòu)的風(fēng)格。體系結(jié)構(gòu)風(fēng)格反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語義特性,并指導(dǎo)如何將各個模塊和子系統(tǒng)有效地組織成一個完整的系統(tǒng)。近年來,人們逐漸認識到軟件體系結(jié)構(gòu)在軟件開發(fā)中的重要地位,好的軟件體系結(jié)構(gòu)是決定一個軟件系統(tǒng)成功的重要因素。因此,軟件工程研究人員將研究熱點集中到軟件體系結(jié)構(gòu)的研究上。C/S結(jié)構(gòu)和B/S結(jié)構(gòu)是兩種常見的體系結(jié)構(gòu)風(fēng)格,現(xiàn)行的很多軟件系統(tǒng)都是架構(gòu)在這兩種風(fēng)格之上的。本文針對這兩種典型的體系結(jié)構(gòu)風(fēng)格進行討論。
C/S(Client/Server)結(jié)構(gòu)見圖1,是基于資源不對等,且為實現(xiàn)共享而提出來的一種體系結(jié)構(gòu),是20世紀90年代成熟起來的技術(shù)??蛻魴C/服務(wù)器結(jié)構(gòu)將應(yīng)用一分為二,服務(wù)器(后臺)負責(zé)數(shù)據(jù)管理,客戶機(前臺)完成與用戶的交互任務(wù)。通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client 端和Server端來實現(xiàn),降低了系統(tǒng)的開銷。客戶/服務(wù)器應(yīng)用模式的特點是大多基于“肥客戶機”結(jié)構(gòu)下的兩層結(jié)構(gòu)應(yīng)用軟件。服務(wù)器通常采用高性能的PC、工作站或小型機,并采用大型數(shù)據(jù)庫系統(tǒng),如 Oracle、Sybase、Informix或 SQL Server,客戶端安裝專用的客戶端軟件。
圖1 傳統(tǒng)的兩層C/S結(jié)構(gòu)
①C/S模型具有強大的數(shù)據(jù)操作和事務(wù)處理能力,且開發(fā)模型簡單,易于理解和接受。系統(tǒng)的客戶應(yīng)用程序和服務(wù)器構(gòu)件分別運行在不同的計算機上,易于擴充和壓縮。②在C/S結(jié)構(gòu)中,各功能構(gòu)件充分隔離,客戶應(yīng)用程序的開發(fā)集中于數(shù)據(jù)的查詢?yōu)g覽,而數(shù)據(jù)庫服務(wù)器的開發(fā)則集中于數(shù)據(jù)的管理,分工具體,且利于系統(tǒng)的安全性。由于客戶端與服務(wù)器的直接相連,因此實時性較好。③能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對應(yīng)的優(yōu)點就是客戶端響應(yīng)速度快,而且應(yīng)用服務(wù)器運行數(shù)據(jù)負荷較輕。
在C/S結(jié)構(gòu)中,表現(xiàn)層和事務(wù)層都放在客戶端,而數(shù)據(jù)邏輯層和數(shù)據(jù)存儲層則置于服務(wù)器端。這種組織安排帶來諸多的限制:
①維護和升級成本非常高。②C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)開發(fā)不同版本的軟件,已經(jīng)很難適應(yīng)百臺電腦以上局域網(wǎng)用戶同時使用,而且代價高、效率低。③C/S組織結(jié)構(gòu)不支持Internet,只適用于局域網(wǎng),而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動辦公和分布式辦公越來越普及,C/S結(jié)構(gòu)很顯然無法滿足這些需求。
另外,除了傳統(tǒng)的二層C/S結(jié)構(gòu),還存在三層次客戶機/服務(wù)器(C/S)結(jié)構(gòu)。三層次客戶機/服務(wù)器(C/S)結(jié)構(gòu)是在常規(guī)客戶機/服務(wù)器(C/S)結(jié)構(gòu)上提出的,系統(tǒng)在客戶機和數(shù)據(jù)庫服務(wù)器間添加一個應(yīng)用服務(wù)器。值得注意的是,3層C/S結(jié)構(gòu)各層間的通信效率若不高,即使分配給各層的硬件能力很強,作為整體來說,也達不到所要求的性能。此外,設(shè)計時必須慎重考慮3層間的通信方法、通信頻度及數(shù)據(jù)量,這和提高各層的獨立性一樣,是3層C/S結(jié)構(gòu)的關(guān)鍵問題。
在當前Internet/Intranet領(lǐng)域,瀏覽器/服務(wù)器結(jié)構(gòu)是當前非常流行的客戶機/服務(wù)器結(jié)構(gòu),簡稱B/S結(jié)構(gòu),見圖2,主要是利用不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的多種腳本語言,用通用瀏覽器就實現(xiàn)了原來需要復(fù)雜的專用軟件才能實現(xiàn)的強大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件體系結(jié)構(gòu)。
圖2 B/S結(jié)構(gòu)
B/S結(jié)構(gòu)是一種典型的3層結(jié)構(gòu)模式:表示層、處理層和數(shù)據(jù)層。表示層為瀏覽器。瀏覽器僅承擔(dān)網(wǎng)頁信息的瀏覽功能,以超文本格式實現(xiàn)信息的瀏覽和輸入,沒有任何業(yè)務(wù)處理能力;功能層由服務(wù)器承擔(dān)業(yè)務(wù)處理邏輯和頁面的存儲管理,接收客戶瀏覽器的任務(wù)請求,并根據(jù)任務(wù)請求類型執(zhí)行相應(yīng)的事務(wù)處理程序;數(shù)據(jù)層由數(shù)據(jù)庫服務(wù)器承擔(dān)數(shù)據(jù)處理邏輯,其任務(wù)是接收服務(wù)器對數(shù)據(jù)庫服務(wù)器提出的數(shù)據(jù)操作的請求,由數(shù)據(jù)庫服務(wù)器完成數(shù)據(jù)的查詢、修改、統(tǒng)計、更新等工作,并把對數(shù)據(jù)的處理結(jié)果提交給服務(wù)器。
①操作使用簡單。B/S最大的優(yōu)點就是可以在任何地方進行操作而不用安裝任何專門的軟件,只要有一臺能上網(wǎng)的電腦就能使用,客戶端零維護。系統(tǒng)的擴展非常容易,只要能上網(wǎng),再由系統(tǒng)管理員分配一個用戶名和密碼,就可以使用了。②維護和升級方式簡單。B/S結(jié)構(gòu)的軟件只需要管理服務(wù)器就行了,所有的客戶端只是瀏覽器,根本不需要做任何維護。無論用戶的規(guī)模有多大,有多少分支機構(gòu)都不會增加任何維護升級的工作量,所有的操作只需要針對服務(wù)器進行。如果是異地,只需要把服務(wù)器連接專網(wǎng)即可,實現(xiàn)遠程維護、升級和共享。③成本降低,選擇更多。B/S結(jié)構(gòu)可以支持任何操作系統(tǒng)和瀏覽器,對系統(tǒng)性能和配置要求相對較低,既可以節(jié)省成本,對用戶而言,對操作系統(tǒng)和瀏覽器又有更多的選擇。
B/S模式也存在不足,表現(xiàn)在服務(wù)器負擔(dān)過重,尤其是在業(yè)務(wù)邏輯復(fù)雜和處理量大的情況下,服務(wù)器的處理能力成為影響系統(tǒng)效率的關(guān)鍵因素。另外,服務(wù)器也成為系統(tǒng)的瓶頸。具體表現(xiàn)在:①由于瀏覽器只是為了進行WEB瀏覽而設(shè)計的,當應(yīng)用于WEB系統(tǒng)時,許多功能不能實現(xiàn)或?qū)崿F(xiàn)起來比較困難。比如,通過瀏覽器進行大量的數(shù)據(jù)輸入,或進行報表的應(yīng)答都是比較困難和不便的。②復(fù)雜的應(yīng)用構(gòu)造困難。雖然可以用ActiveX、Java等技術(shù)開發(fā)較為復(fù)雜的應(yīng)用,但是相對于發(fā)展已非常成熟的一系列應(yīng)用工具來說,這些技術(shù)的開發(fā)復(fù)雜,并沒有完全成熟的技術(shù)供其使用。③HTTP可靠性低,有可能造成應(yīng)用故障,特別是對于管理者來說,采用瀏覽器方式進行系統(tǒng)的維護是非常不安全和不方便的。④WEB服務(wù)器成為數(shù)據(jù)庫的唯一客戶端,所有對數(shù)據(jù)庫的連接都通過該服務(wù)器實現(xiàn)。WEB服務(wù)器同時要處理與客戶請求,以及與數(shù)據(jù)庫的連接,當訪問量大時,服務(wù)器端負載過重。⑤由于業(yè)務(wù)邏輯和數(shù)據(jù)訪問程序一般由JavaScript、VBScript等嵌入式小程序?qū)崿F(xiàn),分散在各個頁面里,難以實現(xiàn)共享,給升級和維護也帶來了不便。
為了克服B/S和C/S結(jié)構(gòu)的缺點,在原有B/S體系結(jié)構(gòu)基礎(chǔ)上,采用一種新的體系結(jié)構(gòu),即C/S與B/S相結(jié)合的體系結(jié)構(gòu),見圖3。
圖3 B/S和C/S混合結(jié)構(gòu)
在C/S、B/S相結(jié)合的體系結(jié)構(gòu)中,一些需要用Web處理的,滿足大多數(shù)訪問者請求的功能界面(如信息發(fā)布查詢界面)采用B/S結(jié)構(gòu),后臺只需少數(shù)人使用的功能應(yīng)用(如數(shù)據(jù)庫管理維護界面)采用C/S結(jié)構(gòu)??蛻舳税l(fā)出HTTP請求到Web Server,Web Server將請求傳送給Web應(yīng)用程序。Web應(yīng)用程序?qū)?shù)據(jù)請求傳送給數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫服務(wù)器將數(shù)據(jù)返回Web應(yīng)用程序,然后再由Web Server將數(shù)據(jù)傳送給客戶端。
采用這種結(jié)構(gòu)的優(yōu)點在于:①充分發(fā)揮了B/S與C/S體系結(jié)構(gòu)的優(yōu)勢,彌補了兩者的不足。充分考慮用戶利益,保證瀏覽查詢者方便操作的同時也使得系統(tǒng)更新簡單,維護簡單靈活,易于操作。②信息發(fā)布采用B/S結(jié)構(gòu),保持了瘦客戶端的優(yōu)點。裝入客戶機的軟件可以采用統(tǒng)一的WWW瀏覽器。而且WWW瀏覽器和網(wǎng)絡(luò)綜合服務(wù)器都是基于工業(yè)標準,可以在所有的平臺上工作。③數(shù)據(jù)庫端采用C/S結(jié)構(gòu),通過ODBC連接。這一部分只涉及到系統(tǒng)維護、數(shù)據(jù)更新等,不存在完全采用C/S結(jié)構(gòu)帶來的客戶端維護工作量大等缺點,并且在客戶端可以構(gòu)造非常復(fù)雜的應(yīng)用,界面友好靈活,易于操作,能解決許多B/S存在的固有的缺點。④對于原有基于C/S體系結(jié)構(gòu)的應(yīng)用,可以非常容易地升級到這種體系結(jié)構(gòu),只需開發(fā)用于發(fā)布的WWW界面,可以保留原有的C/S結(jié)構(gòu)的某些子系統(tǒng),充分地利用現(xiàn)有系統(tǒng)的資源,使得現(xiàn)有系統(tǒng)或資源無需大的改造即可以連接使用,保護了用戶以往的投資。⑤將服務(wù)器端劃分為Web服務(wù)器和Web應(yīng)用程序兩部分。
目前單一的B/S結(jié)構(gòu)和C/S結(jié)構(gòu)由于它們固有的優(yōu)勢和劣勢,已經(jīng)很難滿足現(xiàn)實需要了,而更多的是根據(jù)具體的應(yīng)用需求設(shè)計恰當?shù)腂/S和C/S的混合結(jié)構(gòu),從而發(fā)揮他們各自的優(yōu)勢,揚長避短,只有這樣,才能適應(yīng)復(fù)雜多變的實際應(yīng)用場合。
[1]周叢林.CS與BS在石油信息系統(tǒng)的應(yīng)用[J],中國石油和化工,2009,10.
[2]李常春,曹明武,王康年等.基于CORBA的電信業(yè)基站運維管理系統(tǒng)[J],計算機應(yīng)用與軟件,2009,9.
[3]吳正平,謝學(xué)文,王仁明.基于CS模式的多機器人網(wǎng)絡(luò)通信系統(tǒng)[J],三峽大學(xué)學(xué)報(自然科學(xué)版),2009,3.
[4]劉紅梅.基于C/S和B/S體系結(jié)構(gòu)應(yīng)用系統(tǒng)的開發(fā)方法[J],計算機與現(xiàn)代化,2007,11.
[5]曾學(xué)軍.淺析B/S和C/S結(jié)構(gòu)的開發(fā)與應(yīng)用[J],網(wǎng)絡(luò)通訊與安全,2007,3.
[6]張煒.C/S與B/S混合軟件體系結(jié)構(gòu)及其在數(shù)字化教學(xué)系統(tǒng)中的應(yīng)用[J],計算機教育,2007,8.
[7]沈劍翹,聶華北.軟件體系結(jié)構(gòu)(風(fēng)格)綜述[J],電腦開發(fā)與應(yīng)用,2007,11.