- Java Web應(yīng)用開發(fā)項目教程
- 聶明編著
- 3147字
- 2018-12-30 08:42:53
1.1 C/S結(jié)構(gòu)與B/S結(jié)構(gòu)
1.1.1 C/S結(jié)構(gòu)
C/S結(jié)構(gòu),即Client/Server(客戶機/服務(wù)器)結(jié)構(gòu),是一種軟件系統(tǒng)體系結(jié)構(gòu)。它把整個軟件系統(tǒng)分成Client和Server兩個部分,Client和Server通常處在不同的計算機上。此結(jié)構(gòu)充分利用兩端硬件環(huán)境的優(yōu)勢,把數(shù)據(jù)庫內(nèi)容放在遠程的服務(wù)器上,而在客戶機上安裝相應(yīng)軟件。C/S軟件一般采用兩層結(jié)構(gòu),其分布結(jié)構(gòu)如圖1.1所示。Client端程序的任務(wù)是將用戶的請求提交給Server程序,再將Server程序返回的結(jié)果以特定的形式顯示給用戶;Server端程序的任務(wù)是接收客戶程序提出的服務(wù)請求,進行相應(yīng)的處理,再將結(jié)果返回給客戶程序。

圖1.1 客戶機/服務(wù)器結(jié)構(gòu)
C/S結(jié)構(gòu)中,常見的軟件功能的劃分如下:首先,數(shù)據(jù)庫的管理由數(shù)據(jù)庫服務(wù)器完成。其次,應(yīng)用程序的功能實現(xiàn)和數(shù)據(jù)處理,如數(shù)據(jù)訪問規(guī)則、業(yè)務(wù)規(guī)則、數(shù)據(jù)合法性校驗等則可能有兩種情況:一是全部由客戶機來完成,客戶機向服務(wù)器傳送的只是數(shù)據(jù)查詢請求,服務(wù)器只負責響應(yīng)請求、返回查詢結(jié)果,數(shù)據(jù)的處理和用戶的交互都放在客戶端進行,這種結(jié)構(gòu)也稱為胖客戶機/瘦服務(wù)器;二是由客戶機和服務(wù)器共同來承擔,程序處理一部分在客戶端以程序代碼來實現(xiàn),一部分在服務(wù)器端以數(shù)據(jù)庫中的觸發(fā)器或存儲過程實現(xiàn),如果運算和商業(yè)邏輯都在服務(wù)器端運行,而客戶端只負責一些簡單的用戶交互的結(jié)構(gòu)也稱為瘦客戶機/胖服務(wù)器。
C/S結(jié)構(gòu)在技術(shù)上很成熟,它的主要優(yōu)點是人-機交互性強、具有安全的存取模式、網(wǎng)絡(luò)響應(yīng)速度快、利于處理大量數(shù)據(jù)。但是該結(jié)構(gòu)的程序一般是針對性開發(fā),程序變更不夠靈活,維護和管理的難度較大。C/S結(jié)構(gòu)的系統(tǒng)每臺客戶機都需要安裝相應(yīng)的客戶端程序,分布功能弱且兼容性差,不能實現(xiàn)快速部署安裝和配置,因此缺少通用性,不利于擴展,通常只局限于小型局域網(wǎng)。C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,由于產(chǎn)品的更新?lián)Q代十分快,較高的維護代價已不能很好地適應(yīng)工作的需要。隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展,尤其在Java跨平臺語言出現(xiàn)之后,B/S結(jié)構(gòu)的軟件克服了C/S結(jié)構(gòu)的不足,對其形成挑戰(zhàn)和威脅。
1.1.2 B/S結(jié)構(gòu)
B/S軟件體系結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),是隨著Internet技術(shù)的興起,對C/S體系結(jié)構(gòu)的一種變化或者改進的結(jié)構(gòu)。B/S結(jié)構(gòu)的核心概念是將整個應(yīng)用的主要業(yè)務(wù)邏輯集中在服務(wù)器端執(zhí)行,而客戶端只負責簡單的數(shù)據(jù)表示和交互,一般在總體上分為表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)存儲層三個不同的處理層次,如圖1.2所示。三個層次是從邏輯上劃分的,具體可以有多種組合。業(yè)務(wù)邏輯層作為構(gòu)造B/S結(jié)構(gòu)應(yīng)用系統(tǒng)的核心部分,提供了以下主要功能:負責客戶機與服務(wù)器、服務(wù)器與服務(wù)器間的連接和通信;實現(xiàn)應(yīng)用與數(shù)據(jù)庫的高效連接;提供一個三層結(jié)構(gòu)應(yīng)用的開發(fā)、運行、部署和管理的平臺。這種三層結(jié)構(gòu)在層與層之間相互獨立,每一層的改變都不會影響其他層的功能。
在B/S體系結(jié)構(gòu)下,客戶端軟件被統(tǒng)一,Web瀏覽器(Browser)是客戶端最主要的應(yīng)用軟件,客戶機上只要安裝一個瀏覽器,如Internet Explorer、Netscape Navigator或Mozilla Firefox等。數(shù)據(jù)庫服務(wù)器端安裝Oracle、Sybase、Informix或SQLServer等數(shù)據(jù)庫。瀏覽器通過Web服務(wù)器同數(shù)據(jù)庫進行數(shù)據(jù)交互,系統(tǒng)功能實現(xiàn)的核心部分集中到應(yīng)用服務(wù)器上,簡化了系統(tǒng)的開發(fā)、維護和使用。B/S結(jié)構(gòu)利用不斷成熟和普及的瀏覽器技術(shù)實現(xiàn)原來需要復(fù)雜專用軟件才能實現(xiàn)的強大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù),系統(tǒng)安裝、修改和維護都在服務(wù)器端解決。
在B/S體系結(jié)構(gòu)系統(tǒng)中,用戶通過瀏覽器向分布在網(wǎng)絡(luò)上的服務(wù)器發(fā)出請求,服務(wù)器對瀏覽器的請求進行處理,將用戶所需信息返回到瀏覽器。而其余如數(shù)據(jù)請求、加工、結(jié)果返回。以及動態(tài)網(wǎng)頁生成、對數(shù)據(jù)庫的訪問和應(yīng)用程序的執(zhí)行等工作全部由服務(wù)器完成。隨著Windows將瀏覽器技術(shù)植入操作系統(tǒng)內(nèi)部,這種結(jié)構(gòu)已成為當今應(yīng)用軟件的首選體系結(jié)構(gòu)。B/S結(jié)構(gòu)應(yīng)用程序相對于傳統(tǒng)的C/S結(jié)構(gòu)應(yīng)用程序是一個非常大的進步。

圖1.2 瀏覽器/服務(wù)器結(jié)構(gòu)
B/S結(jié)構(gòu)的主要特點是分布性強、維護方便、開發(fā)簡單且共享性強、總體擁有成本低。但數(shù)據(jù)安全性問題、對服務(wù)器要求過高、數(shù)據(jù)傳輸速度慢、軟件的個性化特點明顯降低,這些缺點使B/S結(jié)構(gòu)軟件難以實現(xiàn)傳統(tǒng)模式下的特殊功能要求。例如,通過瀏覽器進行大量的數(shù)據(jù)輸入或進行報表的應(yīng)答、專用性打印輸出都比較困難和不便。此外,實現(xiàn)復(fù)雜的應(yīng)用構(gòu)造有較大的困難。雖然可以用ActiveX、Java等技術(shù)開發(fā)較為復(fù)雜的應(yīng)用,但是相對于發(fā)展已非常成熟的C/S系列應(yīng)用工具來說,這些技術(shù)的應(yīng)用比較復(fù)雜,并沒有完全成熟的技術(shù)工具供使用。
1.1.3 C/S和B/S的比較
1.軟/硬件環(huán)境支撐環(huán)境
C/S是建立在局域網(wǎng)的基礎(chǔ)上的,而B/S是建立在廣域網(wǎng)的基礎(chǔ)上的。C/S通過專門服務(wù)器提供連接和數(shù)據(jù)交換服務(wù)。所處理的用戶不僅固定,并且處于相同區(qū)域,要求擁有相同的操作系統(tǒng)。B/S中的信息自己管理,具有比C/S更廣的適應(yīng)范圍,一般只要有操作系統(tǒng)和瀏覽器即可。
2.安全控制
由于C/S采用配對的點對點的結(jié)構(gòu)模式,并采用適用于局域網(wǎng)、安全性比較好的網(wǎng)絡(luò)協(xié)議(如Windows NT的NetBEUI協(xié)議),安全性可得到較好的保證。C/S一般面向相對固定的用戶群,程序更加注重流程,它可以對權(quán)限進行多層次校驗,提供了更安全的存取模式,對信息安全的控制能力很強。一般高度機密的信息系統(tǒng)采用C/S結(jié)構(gòu)適宜。而B/S采用瀏覽器訪問的模式,并采用TCP/IP這一類運用于Internet的開放性協(xié)議,其安全性通常依靠服務(wù)器上管理密碼的數(shù)據(jù)庫來保證,安全控制不及C/S結(jié)構(gòu)。
3.程序結(jié)構(gòu)與處理模式
C/S程序一般采用兩層結(jié)構(gòu),而B/S程序采用三層結(jié)構(gòu)。這兩種結(jié)構(gòu)的不同點是:兩層結(jié)構(gòu)中客戶端參與運算,而三層結(jié)構(gòu)中客戶端并不參與運算,只是簡單地接收用戶的請求,顯示最后的結(jié)果。由于三層結(jié)構(gòu)中的客戶端并不需要參與計算,所以對客戶端的計算機配置要求較低,只要裝上操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議軟件以及瀏覽器即可,這時的客戶機稱為瘦客戶機,而服務(wù)器則集中了所有的應(yīng)用邏輯。雖然B/S采用了邏輯上的三層結(jié)構(gòu),但在物理上的網(wǎng)絡(luò)結(jié)構(gòu)仍然是原來的以太網(wǎng)或環(huán)形網(wǎng)。這樣,第一層與第二層結(jié)構(gòu)之間的通信、第二層與第三層結(jié)構(gòu)之間的通信都需占用網(wǎng)絡(luò)資源,網(wǎng)絡(luò)通信量大。而C/S只有兩層結(jié)構(gòu),網(wǎng)絡(luò)通信量只包括Client與Server之間的通信量,網(wǎng)絡(luò)通信量低。所以,C/S處理大量信息的能力是B/S無法比擬的。
4.系統(tǒng)開發(fā)與維護
C/S程序側(cè)重于整體開發(fā),構(gòu)件的重用性不是很好;B/S程序一般采用三層或多層結(jié)構(gòu),要求構(gòu)件有相對獨立的功能,能夠相對較好的重用。系統(tǒng)維護是在軟件生存周期中開銷最大的一部分。C/S程序由于其本身的整體性,必須整體考察并處理出現(xiàn)的問題。而B/S結(jié)構(gòu)中客戶端不必安裝及維護。B/S結(jié)構(gòu)在構(gòu)件組成方面只變更個別構(gòu)件,開發(fā)、維護等工作都集中在服務(wù)器端。當需要升級時,只需更新服務(wù)器端的軟件,而不必更換客戶端軟件,實現(xiàn)系統(tǒng)的無縫升級,減輕了系統(tǒng)維護與升級的成本和工作量。
5.交互性
交互性強是C/S固有的一個優(yōu)點。在C/S中,客戶端有一套完整的應(yīng)用程序,在出錯提示、在線幫助等方面都有強大的功能,并且可以在子程序間自由切換。B/S雖然由JavaScript、VBScript等客戶端腳本程序提供了一定的交互能力,但與完整的C/S結(jié)構(gòu)的用戶交互設(shè)計相比顯得遜色了許多。
總的來說,B/S與C/S這兩種結(jié)構(gòu)各有利弊。C/S技術(shù)是20年前的主流開發(fā)技術(shù),它主要局限于內(nèi)部局域網(wǎng)的需要。因而缺乏作為應(yīng)用平臺的一些特性,難以擴展到互聯(lián)網(wǎng)這樣的環(huán)境上去,而且要求開發(fā)者自己去處理事務(wù)管理、消息隊列、數(shù)據(jù)的復(fù)制和同步、通信安全等系統(tǒng)級的問題。這對應(yīng)用開發(fā)者提出了較高的要求,而且迫使應(yīng)用開發(fā)者投入很多精力來解決應(yīng)用程序以外的問題。這使得應(yīng)用程序的維護、移植和互操作變得復(fù)雜,成了C/S的一大缺陷。但是,與B/S結(jié)構(gòu)相比,C/S技術(shù)發(fā)展歷史更為“悠久”。從技術(shù)成熟度及軟件設(shè)計、開發(fā)人員的掌握水平來看,C/S技術(shù)更成熟、更可靠。在某些情況下,采用100%的B/S方式將造成系統(tǒng)響應(yīng)速度慢、服務(wù)器開銷大、通信帶寬要求高、安全性差、總投資增加等問題。而且,對于一些復(fù)雜的應(yīng)用,B/S方式目前尚沒有合適方式進行開發(fā)。因此,在相當長的一段時間內(nèi)B/S與C/S這兩種結(jié)構(gòu)的軟件將長期共存。
- DB2 V9權(quán)威指南
- Deploying Node.js
- 玩轉(zhuǎn)Scratch少兒趣味編程
- 大學計算機基礎(chǔ)(第三版)
- iOS面試一戰(zhàn)到底
- R語言編程指南
- Learning ArcGIS for Desktop
- Illustrator CS6設(shè)計與應(yīng)用任務(wù)教程
- Learning iOS Security
- MyBatis 3源碼深度解析
- Mastering SciPy
- 軟硬件綜合系統(tǒng)軟件需求建模及可靠性綜合試驗、分析、評價技術(shù)
- Mastering ArcGIS Server Development with JavaScript
- React and React Native
- C++面向?qū)ο蟪绦蛟O(shè)計