官术网_书友最值得收藏!

3.3.3 三層C/S系統(tǒng)的結(jié)構(gòu)

在傳統(tǒng)的兩層C/S結(jié)構(gòu)中,開發(fā)工作主要集中在客戶方,客戶端軟件不但要完成用戶交互和數(shù)據(jù)顯示的工作,而且還要完成對應用邏輯的處理工作,即使用戶界面與應用邏輯位于同一平臺上。這樣就帶來了兩個突出的問題,即系統(tǒng)的可伸縮性較差和安裝維護較為困難。

因為在一個系統(tǒng)中,并不是所有的客戶機要求都一樣,所以它們要求程序的功能也不盡相同。使用兩層C/S結(jié)構(gòu)應用軟件時,開發(fā)人員提供的所有程序都是相同的,除非開發(fā)人員根據(jù)不同用戶的需求將大的軟件裁剪成不同的小軟件分發(fā)給不同的用戶。

另外,在系統(tǒng)開發(fā)完畢后,整個系統(tǒng)的安裝也非常繁雜。在每一臺客戶機上不但要安裝應用程序,而且還必須安裝相應的數(shù)據(jù)庫連接程序,以及完成大量的系統(tǒng)配置工作。所有的客戶端都要配置好幾層軟件,因而變得很龐大,被稱為“肥客戶機”。這樣一來,如果系統(tǒng)有大量的用戶,并且用戶是分布的和流動的(如廣域網(wǎng)環(huán)境下的應用系統(tǒng)),則整個系統(tǒng)的安裝和維護將非常困難。在系統(tǒng)進行修改后,所有客戶機上的軟件都要受到影響。

為了解決兩層C/S結(jié)構(gòu)應用軟件中所存在的問題,人們又提出了三層C/S結(jié)構(gòu)應用軟件。在三層C/S結(jié)構(gòu)應用軟件中,整個系統(tǒng)由三個部分組成,即客戶機、應用服務器和數(shù)據(jù)庫服務器。客戶機上只需安裝應用程序,負責處理與用戶的交互和與應用程序的交互。應用服務器負責處理應用邏輯,即接受客戶機方應用程序的請求,然后根據(jù)應用邏輯將這個請求轉(zhuǎn)化為數(shù)據(jù)庫請求后與數(shù)據(jù)庫服務器進行交互,并將與數(shù)據(jù)庫服務器交互的結(jié)果傳送給客戶機方的應用程序。數(shù)據(jù)庫服務器軟件根據(jù)應用服務器發(fā)送的請求進行數(shù)據(jù)庫操作,并將操作結(jié)果傳送給應用服務器。三層C/S結(jié)構(gòu)如圖3.3所示。

圖3.3 三層C/S結(jié)構(gòu)

從圖3.3中可以看出,三層C/S結(jié)構(gòu)應用軟件的特點是用戶界面與應用邏輯位于不同的平臺上,并且應用邏輯被所有的用戶共享。由于用戶界面和應用邏輯位于不同的平臺上,所以系統(tǒng)應提供用戶界面與應用邏輯之間的連接,兩者之間的通信協(xié)議是由系統(tǒng)自行定義的。

應用邏輯被所有的用戶共享是兩層C/S結(jié)構(gòu)應用軟件與三層C/S結(jié)構(gòu)應用軟件之間最大的區(qū)別。中間層(即應用服務器)是整個C/S系統(tǒng)的核心,它必須具有處理系統(tǒng)的具體應用的能力,并提供事務處理、安全控制以及滿足不同數(shù)量客戶機的請求而進行性能調(diào)整的能力。應用服務器軟件可以根據(jù)應用邏輯的不同被劃分為不同的模塊,從而使客戶機方應用程序在需要某種應用服務時只與應用服務器上處理這個應用邏輯的模塊通信,并且一個模塊能夠同時響應多個客戶機方應用程序的請求。

使用三層C/S結(jié)構(gòu)應用軟件開發(fā)系統(tǒng)的優(yōu)點是非常明顯的,主要有以下幾點。

(1)整個系統(tǒng)被分為不同的邏輯塊,層次非常清晰。

(2)能夠使“肥客戶機”變成“瘦客戶機”。

(3)開發(fā)和管理的工作向服務器方轉(zhuǎn)移,使得分布數(shù)據(jù)處理成為可能。

(4)管理和維護變得相對簡單。

另外,引進三層C/S結(jié)構(gòu)體系后,客戶機便可省去與數(shù)據(jù)庫系統(tǒng)直接互動的麻煩。客戶機直接調(diào)用服務器上的應用邏輯,應用邏輯則代表客戶機對數(shù)據(jù)庫進行存取,這樣就可以減少向服務器發(fā)出的SQL查詢和更新要求,從而使其性能比兩層C/S結(jié)構(gòu)更優(yōu)。此外,由于客戶機不直接連接數(shù)據(jù)庫系統(tǒng),而服務器能夠?qū)崿F(xiàn)更細致的授權定義,因此,三層C/S結(jié)構(gòu)能加強整個系統(tǒng)的安全。

主站蜘蛛池模板: 彩票| 德阳市| 花垣县| 庆安县| 白沙| 原阳县| 广丰县| 肇源县| 沅江市| 石景山区| 古蔺县| 子洲县| 河源市| 乌兰察布市| 黔东| 乐陵市| 房山区| 新乡市| 天峻县| 东宁县| 华安县| 黄石市| 古浪县| 延津县| 富阳市| 淮北市| 平阳县| 含山县| 全椒县| 扶余县| 潞城市| 合肥市| 洪泽县| 樟树市| 陵川县| 渭源县| 深水埗区| 黎平县| 都匀市| 东海县| 元江|