軟件體系結(jié)構(gòu)風(fēng)格之二

這里要說的是三類分布式系統(tǒng):局域網(wǎng)文件服務(wù)器結(jié)構(gòu)、客戶/服務(wù)器體系結(jié)構(gòu)(2層和N層)、基于Web的計(jì)算

1. 局域網(wǎng)文件服務(wù)器體系結(jié)構(gòu)

(1)服務(wù)器僅裝載了數(shù)據(jù)層,系統(tǒng)應(yīng)用的其他層都在客戶端實(shí)現(xiàn)

(2)執(zhí)行過程:

a. 用戶向服務(wù)器發(fā)送一個(gè)文件請(qǐng)求。

b. 文件服務(wù)器會(huì)從數(shù)據(jù)庫中找到相應(yīng)的表,傳送給客戶端,同時(shí)對(duì)所選表加鎖,直到客戶端返回表為止。

c. 客戶端采用本地程序?qū)Ρ磉M(jìn)行修改、讀取或其他處理,然后再把表返回文件服務(wù)器。

(3)適用領(lǐng)域:較少的小型數(shù)據(jù)庫。

(4)缺點(diǎn):

a. 客戶端和服務(wù)器之間需要移動(dòng)大量不必要的數(shù)據(jù),降低了應(yīng)用性能。

【客戶端和服務(wù)器之間傳輸?shù)亩际俏募?/p>

b. 客戶端必須相當(dāng)健壯。

【客戶端做了幾乎所有的工作,而且必須有足夠的磁盤空間來存儲(chǔ)下載的表】

c. 容易破壞數(shù)據(jù)的完整性。

【客戶端可以直接修改數(shù)據(jù)庫中的表】

d. 對(duì)環(huán)境的變化及用戶需求變革的適應(yīng)性差。

【一旦發(fā)生變化,客戶端和服務(wù)器端的應(yīng)用程序都必須修改,增加了維護(hù)的工作量】

2. 客戶機(jī)/服務(wù)器(Client/Server)體系結(jié)構(gòu)(兩層分布式)

(1)服務(wù)器端:數(shù)據(jù)存儲(chǔ)層、數(shù)據(jù)處理層

? ? ? ? 客戶端:應(yīng)用邏輯層、表現(xiàn)邏輯層、表現(xiàn)層

【充分挖掘使用了客戶端的計(jì)算能力】

(2)C/S體系結(jié)構(gòu)有三個(gè)主要組成部分:數(shù)據(jù)庫服務(wù)器、客戶應(yīng)用程序和網(wǎng)絡(luò)。

(3)服務(wù)器的任務(wù):數(shù)據(jù)庫安全性的要求;數(shù)據(jù)庫訪問并發(fā)性的控制;數(shù)據(jù)庫前端的客戶應(yīng)用程序的全局?jǐn)?shù)據(jù)完整性規(guī)則;數(shù)據(jù)庫的備份與恢復(fù)。

【服務(wù)器和數(shù)據(jù)庫的訪問、數(shù)據(jù)修改之類的有關(guān)】

? ? ? ? 客戶端的任務(wù):提供用戶與數(shù)據(jù)庫交互的界面;向數(shù)據(jù)庫服務(wù)器提交用戶請(qǐng)求并接收來自數(shù)據(jù)庫服務(wù)器的信息;利用客戶應(yīng)用程序?qū)Υ嬖谟诳蛻舳说臄?shù)據(jù)執(zhí)行應(yīng)用邏輯要求。

【客戶端和用戶交互、服務(wù)器訪問、數(shù)據(jù)處理有關(guān)】

(4)C/S的處理流程:

(5)優(yōu)點(diǎn):

a. 具有強(qiáng)大的數(shù)據(jù)操作和事務(wù)處理能力,模型思想簡(jiǎn)單,易于人們理解和接受。

b. 對(duì)于硬件和軟件的變化顯示出極大的適應(yīng)性和靈活性,而且易于對(duì)系統(tǒng)進(jìn)行擴(kuò)充和縮小。

【系統(tǒng)是分布式的,客戶端和服務(wù)器運(yùn)行在不同的電腦上】

c. 系統(tǒng)中的功能構(gòu)件充分隔離。

【服務(wù)器和客戶端任務(wù)分明?!?/p>

d. 將大的應(yīng)用處理任務(wù)分布到許多通過網(wǎng)絡(luò)連接的低成本計(jì)算機(jī)上,以節(jié)約大量費(fèi)用。

(6)缺點(diǎn):

a. 開發(fā)成本較高

b. 客戶端程序設(shè)計(jì)復(fù)雜

c. 用戶界面風(fēng)格不一,使用繁雜,不利于推廣使用

d. 信息內(nèi)容和形式單一

e. 軟件移植困難

f. 軟件維護(hù)和升級(jí)困難

g. 新技術(shù)不能輕易應(yīng)用

3. C/S N層體系結(jié)構(gòu)

(1)在客戶端和服務(wù)器之間加入一層或多層服務(wù)器。

4. 客戶機(jī)/服務(wù)器(Client/Server)體系結(jié)構(gòu)(三層)

(1)客戶端:表現(xiàn)邏輯層、表現(xiàn)層

? ? ? ? ?中間服務(wù)器:應(yīng)用邏輯層

? ? ? ? ?服務(wù)器:數(shù)據(jù)存儲(chǔ)層、數(shù)據(jù)處理層

(2)三層C/S的處理流程

(3)優(yōu)點(diǎn):

a. 應(yīng)用的各層可以并行開發(fā),可以選擇各自最適合的開發(fā)語言。

b. 利用功能層有效地隔離開表示層與數(shù)據(jù)層,未授權(quán)的用戶難以繞過功能層而利用數(shù)據(jù)庫工具或黑客手段去非法地訪問數(shù)據(jù)層,為嚴(yán)格的安全管理奠定了堅(jiān)實(shí)的基礎(chǔ)。

?【有點(diǎn)像封裝】

c. 允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對(duì)獨(dú)立性,能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性。

d. 把應(yīng)用的業(yè)務(wù)邏輯與用戶界面分開,將商業(yè)邏輯放在經(jīng)過合理任務(wù)劃分與物理部署后的中間層應(yīng)用服務(wù)器上,從而客戶程序通過中間層簡(jiǎn)介訪問數(shù)據(jù)庫,客戶端修改不影響服務(wù)器

e. 客戶數(shù)可以充分?jǐn)U展,如果需要修改應(yīng)用程序代碼,只需對(duì)中間層應(yīng)用服務(wù)器進(jìn)行修改,而不用修改成千上萬的客戶端應(yīng)用程序。

【中間的應(yīng)用邏輯層相當(dāng)于軟件的功能,然后客戶端是一個(gè)顯示界面】

5. 瀏覽器/服務(wù)器(B/S)風(fēng)格

(1)B/S風(fēng)格是上述三層應(yīng)用結(jié)構(gòu)的一種實(shí)現(xiàn)方式,其具體結(jié)構(gòu)為:瀏覽器/Web服務(wù)器/數(shù)據(jù)庫服務(wù)器。


(2)基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端解決。

【用戶僅僅需要一個(gè)瀏覽器就能使用所有的模塊】

(3)缺點(diǎn):

a. 缺乏對(duì)動(dòng)態(tài)頁面的支持能力,沒有集成有效的數(shù)據(jù)庫處理功能。

【因?yàn)橐粩嗨⑿虏拍塬@取】

b. 系統(tǒng)擴(kuò)展能力差,安全性難以控制。

【所有東西都在服務(wù)器上】

c. 在數(shù)據(jù)查詢等響應(yīng)速度上,要遠(yuǎn)遠(yuǎn)地低于C/S體系結(jié)構(gòu)。

d. 數(shù)據(jù)提交一般以頁面為單位,數(shù)據(jù)的動(dòng)態(tài)交互性不強(qiáng),不利于在線事務(wù)處理(OLTP)應(yīng)用。

6. 公共對(duì)象請(qǐng)求代理結(jié)構(gòu)CORBA(Common?Object Request Broker Architecture)

(1)是一種獨(dú)立于語言和軟件/硬件平臺(tái)的軟件構(gòu)件模型。

(2)CORBA主要由對(duì)象請(qǐng)求代理、公共對(duì)象服務(wù)、通用設(shè)施和應(yīng)用接口組成。

(3)對(duì)象請(qǐng)求代理ORB:建立基于分布式對(duì)象的應(yīng)用程序的基礎(chǔ),使得分布式對(duì)象之間能夠透明的發(fā)送請(qǐng)求或接受響應(yīng)。

【CORBA中所有的通信都通過ORB進(jìn)行,所以遠(yuǎn)程和近程是等價(jià)的。】

? ? ? ? 對(duì)象服務(wù):對(duì)象管理體系結(jié)構(gòu)OMA定義的一系列獨(dú)立于應(yīng)用領(lǐng)域的服務(wù)。它的本職是將覆蓋對(duì)象整個(gè)生存期的對(duì)象管理任務(wù)標(biāo)準(zhǔn)化。

【用來提供基本ORB功能之上的更高系統(tǒng)級(jí)服務(wù)?!?/p>

? ? ? ?通用設(shè)施:是IDL定義的、向終端用戶應(yīng)用程序提供的一組服務(wù)接口的集合。

? ? ? ?應(yīng)用程序?qū)ο螅簽榻K端用戶執(zhí)行特定的任務(wù),主要為某一類應(yīng)用或一個(gè)特定的應(yīng)用提供服務(wù),位于整個(gè)OMA參考模型的最高層。

(4)對(duì)象管理結(jié)構(gòu)

(5)特點(diǎn):

a. CORBA在基于網(wǎng)絡(luò)的分布式應(yīng)用環(huán)境下實(shí)現(xiàn)應(yīng)用軟件的集成。

b. CORBA采用并吸收了面向?qū)ο蠹夹g(shù)、分布式計(jì)算技術(shù)和多層體系結(jié)構(gòu)技術(shù),實(shí)現(xiàn)了在分布式應(yīng)用環(huán)境中軟件的可復(fù)用性、可移植性和互操作性。

c. 提供“軟件總線”機(jī)制,任何應(yīng)用只要提供按照CORBA規(guī)范定義的一組接口,就可以方便的集成到CORBA系統(tǒng)中。

d. 使用代理擴(kuò)展了客戶/服務(wù)器的計(jì)算模型。

【代理的作用是:完成對(duì)客戶發(fā)出的抽象服務(wù)請(qǐng)求的映射,自動(dòng)發(fā)現(xiàn)并找到服務(wù)器,自動(dòng)設(shè)定路由,實(shí)現(xiàn)服務(wù)器程序的執(zhí)行】

【客戶和服務(wù)器完全分離??蛻舨辉倥c服務(wù)器直接聯(lián)系,而是與代理發(fā)生聯(lián)系。這樣,客戶和服務(wù)器都易于維護(hù)、修改?!?/p>

e. 使用IDL定義接口

7. 正交軟件體系結(jié)構(gòu)


(1)正交軟件體系結(jié)構(gòu)由組織層和線索的構(gòu)件構(gòu)成。

? ? ? ? 層是由一組具有相同抽象級(jí)別的構(gòu)件構(gòu)成。

? ? ? ? 線索是子系統(tǒng)的特例,它是由完成不同層次功能的構(gòu)件組成(通過相互調(diào)用來關(guān)聯(lián)),每一條線索完成整個(gè)系統(tǒng)中相對(duì)獨(dú)立的一部分功能。

【這里有點(diǎn)像分層的體系結(jié)構(gòu)】

(2)線索是縱向的,?每一條線索的實(shí)現(xiàn)與其他線索的實(shí)現(xiàn)無關(guān)或關(guān)聯(lián)很少,在同一層中的構(gòu)件之間是不存在相互調(diào)用的。

(3)如果線索是相互獨(dú)立的,即不同線索中的構(gòu)件之間沒有相互調(diào)用,那么這個(gè)結(jié)構(gòu)就是完全正交的。

(4)同一層次的構(gòu)件不允許互相調(diào)用。

【相互獨(dú)立】

(5)系統(tǒng)有一個(gè)公共驅(qū)動(dòng)層(一般為最高層)和公共數(shù)據(jù)結(jié)構(gòu)(一般為最低層)。

(6)特點(diǎn):

a. 結(jié)構(gòu)清晰,易于理解。

【線索功能相互獨(dú)立,不進(jìn)行互相調(diào)用。每個(gè)構(gòu)件的位置都十分明了?!?/p>

b. 易修改,可維護(hù)性強(qiáng)。

【由于線索之間是相互獨(dú)立的,所以對(duì)一個(gè)線索的修改不會(huì)影響到其他線索?!?/p>

c. 可移植性強(qiáng),重用粒度大。

8. 異構(gòu)結(jié)構(gòu)風(fēng)格

(1)由這些純體系結(jié)構(gòu)組合而成。

(2)C/S與B/S混合之內(nèi)外有別模型:

a. 優(yōu)點(diǎn):外部用戶不直接訪問數(shù)據(jù)庫服務(wù)器,能保證企業(yè)數(shù)據(jù)庫的相對(duì)安全。企業(yè)內(nèi)部的用戶交互性強(qiáng),數(shù)據(jù)查詢和響應(yīng)速度較快。

b. 缺點(diǎn):企業(yè)外部用戶修改和維護(hù)數(shù)據(jù)時(shí),速度較慢,較繁瑣,數(shù)據(jù)的動(dòng)態(tài)交互性不強(qiáng)。

(3)C/S與B/S混合之查改有別模型:


a. 缺點(diǎn):外部用戶能直接通過Internet連接到數(shù)據(jù)庫服務(wù)器,企業(yè)數(shù)據(jù)容易暴露給外部用戶,給數(shù)據(jù)安全這造成一定的威脅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容