软件架构风格整理(6 CS,BS等)
1.1????? CS結(jié)構(gòu)
?C/S軟件體系結(jié)構(gòu)是基于資源不對等,且為實現(xiàn)共享而提出來的,是20世紀90年代成熟起來的技術(shù), C/S體系結(jié)構(gòu)定義了工作站如何與服務(wù)器相連,以實現(xiàn)數(shù)據(jù)和應(yīng)用分布到多個處理機上。
C/S體系結(jié)構(gòu)有三個主要組成部分:數(shù)據(jù)庫服務(wù)器、客戶應(yīng)用程序和網(wǎng)絡(luò)。
l? 服務(wù)器
(1)數(shù)據(jù)庫安全性的要求;
(2)數(shù)據(jù)庫訪問并發(fā)性的控制;
(3)數(shù)據(jù)庫前端的客戶應(yīng)用程序的全局數(shù)據(jù)完整性規(guī)則;
(4)數(shù)據(jù)庫的備份與恢復(fù)。
l? 客戶應(yīng)用程序
(1)提供用戶與數(shù)據(jù)庫交互的界面;
(2)向數(shù)據(jù)庫服務(wù)器提交用戶請求并接收來自數(shù)據(jù)庫服務(wù)器的信息;
(3)利用客戶應(yīng)用程序?qū)Υ嬖谟诳蛻舳说臄?shù)據(jù)執(zhí)行應(yīng)用邏輯要求。
1)???????? 優(yōu)點
ü? C/S 體系結(jié)構(gòu)具有強大的數(shù)據(jù)操作和事務(wù)處理能力,模型思想簡單,易于人們理解和接受。
ü? 系統(tǒng)的客戶應(yīng)用程序和服務(wù)器構(gòu)件分別運行在不同的計算機上,系統(tǒng)中每臺服務(wù)器都可以適合各構(gòu)件的要求,這對于硬件和軟件的變化顯示出極大的適應(yīng)性和靈活性,而且易于對系統(tǒng)進行擴充和縮小。
ü? 在C/S體系結(jié)構(gòu)中,系統(tǒng)中的功能構(gòu)件充分隔離,客戶應(yīng)用程序的開發(fā)集中于數(shù)據(jù)的顯示和分析,而數(shù)據(jù)庫服務(wù)器的開發(fā)則集中于數(shù)據(jù)的管理,不必在每一個新的應(yīng)用程序中都要對一DBMS進行編碼。將大的應(yīng)用處理任務(wù)分布到許多通過網(wǎng)絡(luò)連接的低成本計算機上,以節(jié)約大量費用。
2)???????? 缺點
ü? 開發(fā)成本較高
ü? 客戶端程序設(shè)計復(fù)雜
ü? 信息內(nèi)容和形式單一
ü? 用戶界面風格不一,使用繁雜,不利于推廣使用
ü? 軟件移植困難
ü? 軟件維護和升級困難
ü? 新技術(shù)不能輕易應(yīng)用
1.2????? CS三層架構(gòu)
c/s軟件體系結(jié)構(gòu)是20世紀90年代成熟起來的技術(shù),它將應(yīng)用一分為二,服務(wù)器(后臺)負責數(shù)據(jù)管理.客戶機(前臺)完成與用戶的交互任務(wù)。 傳統(tǒng)的二層c/s結(jié)構(gòu)存在以下幾個局限:
1.二層c/s結(jié)構(gòu)是 單一服務(wù)器且以局域網(wǎng)為中心的.所以難以擴展至大型企業(yè)廣域網(wǎng)或Internet;
2.軟硬件的組合及集成能力有限;
3.客戶機的負荷太重.難以管理大量的客戶機.系統(tǒng)的性能容易變壞;
4.數(shù)據(jù) 安全性不好。
因為二層C/S有這么多缺點.三層C/S結(jié)構(gòu)應(yīng)運而生。三層C/S結(jié)構(gòu)是將應(yīng)用功能分成表示層、功能層和數(shù)據(jù)層三個部分.
圖 2 三層C/S結(jié)構(gòu)示意圖
表示層是應(yīng)用的用戶接口部分,它擔負著用戶與應(yīng)用間的對話功能。它用于檢查用戶從鍵盤等輸入的數(shù)據(jù),顯示應(yīng)用輸出的數(shù)據(jù)。為使用戶能直觀地進行操作,一般要使用圖形用戶接口,操作簡單、易學易用。在變更用戶接口時,只需改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他兩層。檢查的內(nèi)容也只限于數(shù)據(jù)的形式和取值的范圍,不包括有關(guān)業(yè)務(wù)本身的處理邏輯。
功能層相當于應(yīng)用的本體,它是將具體的業(yè)務(wù)處理邏輯編入程序中。例如,在制作訂購合同時要計算合同金額,按照定好的格式配置數(shù)據(jù)、打印訂購合同,而處理所需的數(shù)據(jù)則要從表示層或數(shù)據(jù)層取得。表示層和功能層之間的數(shù)據(jù)交往要盡可能簡潔。例如,用戶檢索數(shù)據(jù)時,要設(shè)法將有關(guān)檢索要求的信息一次性地傳送給功能層,而由功能層處理過的檢索結(jié)果數(shù)據(jù)也一次性地傳送給表示層。
通常,在功能層中包含有確認用戶對應(yīng)用和數(shù)據(jù)庫存取權(quán)限的功能以及記錄系統(tǒng)處理日志的功能。功能層的程序多半是用可視化編程工具開發(fā)的,也有使用COBOL和C語言的。
數(shù)據(jù)層就是數(shù)據(jù)庫管理系統(tǒng),負責管理對數(shù)據(jù)庫數(shù)據(jù)的讀寫。數(shù)據(jù)庫管理系統(tǒng)必須能迅速執(zhí)行大量數(shù)據(jù)的更新和檢索。因此,一般從功能層傳送到數(shù)據(jù)層的要求大都使用SQL語言。
三層C/S的解決方案是:對這三層進行明確分割,并在邏輯上使其獨立。原來的數(shù)據(jù)層作為數(shù)據(jù)庫管理系統(tǒng)已經(jīng)獨立出來,所以,關(guān)鍵是要將表示層和功能層分離成各自獨立的程序,并且還要使這兩層間的接口簡潔明了。
一般情況是只將表示層配置在客戶機中,如果連功能層也放在客戶機中,與二層C/S結(jié)構(gòu)相比,其程序的可維護性要好得多,但是其他問題并未得到解決。客戶機的負荷太重,其業(yè)務(wù)處理所需的數(shù)據(jù)要從服務(wù)器傳給客戶機,所以系統(tǒng)的性能容易變壞。
如果將功能層和數(shù)據(jù)層分別放在不同的服務(wù)器中,則服務(wù)器和服務(wù)器之間也要進行數(shù)據(jù)傳送。但是,由于在這種形態(tài)中三層是分別放在各自不同的硬件系統(tǒng)上的,所以靈活性很高,能夠適應(yīng)客戶機數(shù)目的增加和處理負荷的變動。例如,在追加新業(yè)務(wù)處理時,可以相應(yīng)增加裝載功能層的服務(wù)器。因此,系統(tǒng)規(guī)模越大這種形態(tài)的優(yōu)點就越顯著。
n? 與傳統(tǒng)的二層結(jié)構(gòu)相比,三層C/S結(jié)構(gòu)具有以下優(yōu)點:
1)??????? 允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對獨立性,從而使整個系統(tǒng)的邏輯結(jié)構(gòu)更為清晰,能提高系統(tǒng)和軟件的可維護性和可擴展性。
2)??????? 允許更靈活有效地選用相應(yīng)的平臺和硬件系統(tǒng),使之在處理負荷能力上與處理特性上分別適應(yīng)于結(jié)構(gòu)清晰的三層;并且這些平臺和各個組成部分可以具有良好的可升級性和開放性。例如,最初用一臺Unix工作站作為服務(wù)器,將數(shù)據(jù)層和功能層都配置在這臺服務(wù)器上。隨著業(yè)務(wù)的發(fā)展,用戶數(shù)和數(shù)據(jù)量逐漸增加,這時,就可以將Unix工作站作為功能層的專用服務(wù)器,另外追加一臺專用于數(shù)據(jù)層的服務(wù)器。若業(yè)務(wù)進一步擴大,用戶數(shù)進一步增加,則可以繼續(xù)增加功能層的服務(wù)器數(shù)目,用以分割數(shù)據(jù)庫。清晰、合理地分割三層結(jié)構(gòu)并使其獨立,可以使系統(tǒng)構(gòu)成的變更非常簡單。因此,被分成三層的應(yīng)用基本上不需要修正。
3)??????? 三層C/S結(jié)構(gòu)中,應(yīng)用的各層可以并行開發(fā),各層也可以選擇各自最適合的開發(fā)語言。使之能并行地而且是高效地進行開發(fā),達到較高的性能價格比;對每一層的處理邏輯的開發(fā)和維護也會更容易些。
4)??????? 允許充分利用功能層有效地隔離開表示層與數(shù)據(jù)層,未授權(quán)的用戶難以繞過功能層而利用數(shù)據(jù)庫工具或黑客手段去非法地訪問數(shù)據(jù)層,這就為嚴格的安全管理奠定了堅實的基礎(chǔ);
5)??????? 整個系統(tǒng)的管理層次也更加合理和可控制。
n? 要注意的問題
1)???????? 三層C/S結(jié)構(gòu)各層間的通信效率若不高,即使分配給各層的硬件能力很強,其作為整體來說也達不到所要求的性能。
2)???????? 設(shè)計時必須慎重考慮三層間的通信方法、通信頻度及數(shù)據(jù)量。這和提高各層的獨立性一樣是三層C/S結(jié)構(gòu)的關(guān)鍵問題。
1.3????? 瀏覽器/服務(wù)器風格
瀏覽器/服務(wù)器(B/S)風格就是上述三層應(yīng)用結(jié)構(gòu)的一種實現(xiàn)方式,其具體結(jié)構(gòu)為:瀏覽器/Web服務(wù)器/數(shù)據(jù)庫服務(wù)器。◎ B/S體系結(jié)構(gòu)主要是利用不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的多種腳本語言,用通用瀏覽器就實現(xiàn)了原來需要復(fù)雜的專用軟件才能實現(xiàn)的強大功能,并節(jié)約了開發(fā)成本。從某種程度上來說,B/S結(jié)構(gòu)是一種全新的軟件體系結(jié)構(gòu)。
優(yōu)點
1)???????? 基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護全在服務(wù)器端解決。用戶在使用系統(tǒng)時,僅僅需要一個瀏覽器就可運行全部的模塊,真正達到了“零客戶端”的功能,很容易在運行時自動升級。
2)???????? B/S體系結(jié)構(gòu)還提供了異種機、異種網(wǎng)、異種應(yīng)用服務(wù)的聯(lián)機、聯(lián)網(wǎng)、統(tǒng)一服務(wù)的最現(xiàn)實的開放性基礎(chǔ)。
缺點
1)???????? B/S體系結(jié)構(gòu)缺乏對動態(tài)頁面的支持能力,沒有集成有效的數(shù)據(jù)庫處理功能。
2)???????? B/S體系結(jié)構(gòu)的系統(tǒng)擴展能力差,安全性難以控制。
3)?? 采用B/S體系結(jié)構(gòu)的應(yīng)用系統(tǒng),在數(shù)據(jù)查詢等響應(yīng)速度上,要遠遠地低于C/S體系結(jié)構(gòu)。
4)???????? B/S體系結(jié)構(gòu)的數(shù)據(jù)提交一般以頁面為單位,數(shù)據(jù)的動態(tài)交互性不強,不利于在線事務(wù)處理(OLTP)應(yīng)用。
?
1.4????? C/S與B/S混合軟件體系結(jié)構(gòu)
B/S與C/S混合軟件體系結(jié)構(gòu)是一種典型的異構(gòu)體系結(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)下,用戶界面完全通過WWW瀏覽器實現(xiàn),一部分事務(wù)邏輯在前端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實現(xiàn)。
B/S體系結(jié)構(gòu)主要是利用不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的多種腳本語言,用通用瀏覽器就實現(xiàn)了原來需要復(fù)雜的專用軟件才能實現(xiàn)的強大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件體系結(jié)構(gòu)。基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護全在服務(wù)器端解決。用戶在使用系統(tǒng)時,僅僅需要一個瀏覽器就可運行全部的模塊,真正達到了"零客戶端"的功能,很容易在運行時自動升級。B/S體系結(jié)構(gòu)還提供了異種機、異種網(wǎng)、異種應(yīng)用服務(wù)的聯(lián)機、聯(lián)網(wǎng)、統(tǒng)一服務(wù)的最現(xiàn)實的開放性基礎(chǔ)。
但是,與C/S體系結(jié)構(gòu)相比,B/S體系結(jié)構(gòu)也有許多不足之處,例如:
(1)B/S體系結(jié)構(gòu)缺乏對動態(tài)頁面的支持能力,沒有集成有效的數(shù)據(jù)庫處理功能。
(2)B/S體系結(jié)構(gòu)的系統(tǒng)擴展能力差,安全性難以控制。
(3)采用B/S體系結(jié)構(gòu)的應(yīng)用系統(tǒng),在數(shù)據(jù)查詢等響應(yīng)速度上,要遠遠地低于C/S體系結(jié)構(gòu)。
(4)B/S體系結(jié)構(gòu)的數(shù)據(jù)提交一般以頁面為單位,數(shù)據(jù)的動態(tài)交互性不強,不利于在線事務(wù)處理(OLTP)應(yīng)用。
從上面的對比分析中,我們可以看出,傳統(tǒng)的C/S體系結(jié)構(gòu)并非一無是處,而新興的B/S體系結(jié)構(gòu)也并非十全十美。由于C/S體系結(jié)構(gòu)根深蒂固,技術(shù)成熟,原來的很多軟件系統(tǒng)都是建立在C/S體系結(jié)構(gòu)基礎(chǔ)上的,因此,B/S體系結(jié)構(gòu)要想在軟件開發(fā)中起主導作用,要走的路還很長。我們認為,C/S體系結(jié)構(gòu)與B/S體系結(jié)構(gòu)還將長期共存。
C/S與B/S混合軟件體系結(jié)構(gòu)的優(yōu)點是外部用戶不直接訪問數(shù)據(jù)庫服務(wù)器,能保證企業(yè)數(shù)據(jù)庫的相對安全。企業(yè)內(nèi)部用戶的交互性較強,數(shù)據(jù)查詢和修改的響應(yīng)速度較快。
C/S與B/S混合軟件體系結(jié)構(gòu)的缺點是企業(yè)外部用戶修改和維護數(shù)據(jù)時,速度較慢,較煩瑣,數(shù)據(jù)的動態(tài)交互性不強。
?PS:其實BS和CS(三層)的融合是必然之路,這是各自風格的優(yōu)缺點和系統(tǒng)實際需要所決定的.比如在ERP系統(tǒng)中,貼近生產(chǎn),需要操作效率(例如 MRP)和對本地控制要求比較高的可以采用CS三層,但對于一些行政OA性質(zhì)的,一些對外接口則可以采用BS的(例如電子商務(wù)部分).
總結(jié)
以上是生活随笔為你收集整理的软件架构风格整理(6 CS,BS等)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 毕业设计 单片机心率检测器设计与实现 -
- 下一篇: 图片缩放库 Photoview 和 Gi