計算機(jī)體系結(jié)構(gòu)變遷_第1頁
計算機(jī)體系結(jié)構(gòu)變遷_第2頁
計算機(jī)體系結(jié)構(gòu)變遷_第3頁
計算機(jī)體系結(jié)構(gòu)變遷_第4頁
計算機(jī)體系結(jié)構(gòu)變遷_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第一章三層次CLIENT/SERVER介紹..............................................1

第一節(jié)計算機(jī)體系結(jié)構(gòu)變遷......................................................1

1.1終端方式...................................................................................................................................1

1.2Client/Server............................................................................................................................2

1.3三層結(jié)構(gòu)..................................................................................................................................2

第二節(jié).三層的必要性...........................................................5

2.1數(shù)據(jù)的集中->分布一>合理化集中...............................................................................5

2.2三層結(jié)構(gòu)應(yīng)用系統(tǒng)的優(yōu)越性..................................................................................................7

2.3三層及兩層的使用場合........................................................................................................16

第三節(jié)、數(shù)據(jù)的一致性、兩階段提交和事務(wù)處理器..................................19

3.1數(shù)據(jù)的一致性與數(shù)據(jù)庫的隔離級別(IsolationLevel).......................................................19

3.2分布式事務(wù)處理....................................................................................................................25

3.3XA規(guī)范..................................................................................................................................29

3.4一階段提交,兩階段提交及遠(yuǎn)程數(shù)據(jù)源的數(shù)據(jù)一致性....................................................34

第四節(jié)通用在線事務(wù)處理軟件一CICS............................................36

4.1CICS的簡介.........................................................................................................................36

4.2CICS提供的功能模塊..........................................................................................................37

4.3CICS的主要特性:.............................................................................................................38

4.4CICS的有關(guān)的幾個概念.....................................................................................................41

4.5CICS的資源.........................................................................................................................45

4.6CICS資源操作命令..............................................................................................................48

4.7CICS客戶機(jī).........................................................................................................................5/

4.8通信網(wǎng)關(guān)................................................................................................................................52

第五節(jié)CICS如何工作..........................................................55

第一章三層次Client/Server介紹

第一節(jié)計算機(jī)體系結(jié)構(gòu)變遷

從計算機(jī)誕生一直到今天,計算機(jī)網(wǎng)絡(luò)從無到有發(fā)展起來。從50年代到70年代初期,

基本上是獨(dú)立專用的大型機(jī)系統(tǒng)的?統(tǒng)天下;70年代初期到80年代中期,開始有些小型機(jī)

系統(tǒng)與自有網(wǎng)絡(luò)或APPANET連接;80年代中期到90年代初期,開始出現(xiàn)服務(wù)器與PC客

戶機(jī)通過局域網(wǎng)互連;90年代初期至今,服務(wù)器與瘦客戶機(jī)通過局域網(wǎng)、廣域網(wǎng)或Internet

相連。

1.1終端方式

很長一段時間,大型機(jī)是商業(yè)計算的核心:工資、檔案、庫存、賬戶全都由一個大型中

央計算機(jī)處理。專門的計算機(jī)MIS部門負(fù)責(zé)維護(hù)、備份、二次開發(fā)和升級等。主機(jī)的價格

非常貴,只能用于重要的、非交互任務(wù)。

在60年代后期和70年代初期開始有廠商生產(chǎn)小型機(jī)。小型機(jī)比大型機(jī)便宜,有交互能

力。小型機(jī)主要優(yōu)點(diǎn)是可以為公司或部門服務(wù),而不僅僅是計算中心。其系統(tǒng)模式往往是大

型機(jī)和小型機(jī)各存儲一部分?jǐn)?shù)據(jù),大約20%的備份和維護(hù)的工作量移到了部門中,而主要

的維護(hù)工作仍處于集中狀態(tài),總的擁有成本仍然很高,或許比純大型機(jī)環(huán)境還要稍高。但

是,小型機(jī)仍有其積極意義。它將計算機(jī)帶入部門級應(yīng)用,提供可交互終端和通信軟件,

Email和電子備忘錄開始改造傳統(tǒng)工作文化,營造了一個虛擬工作世界。

與此同時,小型機(jī)的出現(xiàn)引起了MIS中心與其他部門的紛爭。早期MIS中心壟斷了

整個公司的計算,其他部門往往對此不滿,小型機(jī)第一次給他們提供了向?qū)V铺魬?zhàn)的機(jī)會。

有遠(yuǎn)見的部門看到了自己掌握計算能力的好處,借助小型機(jī),他們開始雇用自己的程序員做

自主開發(fā)和部分維護(hù)工作。隨著部門中越來越多的人在高中和大學(xué)接受計算機(jī)教育,這種轉(zhuǎn)

變得到了進(jìn)一步推動。

1.2Client/Server

在80年代中后期,一些新發(fā)展又引起計算模式變化。首先,PC逐漸表現(xiàn)出優(yōu)勢。PC

可以安置在每個辦公桌上,有充足的應(yīng)用軟件,包括字處理、電子郵件、賬戶管理、項(xiàng)目管

理以及簡單的數(shù)據(jù)庫等。局域網(wǎng)的興起為獨(dú)立的PC機(jī)互連提供了可能,更促進(jìn)了PC機(jī)的

普及。其次,“迷你小型機(jī)”——工作站出現(xiàn)了。工作站的性能在很多場合足以替代小型機(jī),

而價格則接近PC機(jī)。很多部門既擁有工作站,又保持以前的支持隊(duì)伍,做自開發(fā)和支持。

工作站與PC機(jī)運(yùn)行在同一網(wǎng)絡(luò)上,有足夠的性能為部門級應(yīng)用開發(fā)提供環(huán)境。由于PC機(jī)

價格飛跌,到了90年代初期,個人開始紛紛購買PC機(jī)在家中工作。剛開始是通過軟盤交

換數(shù)據(jù),后來隨著Modem的普及,可以通過電話線實(shí)現(xiàn)高速數(shù)據(jù)傳輸。數(shù)據(jù)計算第一次從

集中處理轉(zhuǎn)向了本地處理。隨著網(wǎng)絡(luò)速率從80年代初56Kbps發(fā)展為90年代的10Mbps,

在部門中與部門間實(shí)現(xiàn)大量數(shù)據(jù)共享逐漸成為可能。從而,出現(xiàn)了客戶/服務(wù)器系統(tǒng)時代,

即把軟件安裝到每一臺機(jī)器上。

1.3三層結(jié)構(gòu)

傳統(tǒng)的客戶/服務(wù)器應(yīng)用軟件模式大都是基于“肥客戶機(jī)”結(jié)構(gòu)下的兩層結(jié)構(gòu)應(yīng)用軟件。

客戶機(jī)方軟件?般由應(yīng)用程序及相應(yīng)的數(shù)據(jù)庫連接程序組成,服務(wù)器方軟件一般是某種數(shù)據(jù)

庫系統(tǒng)。它面臨的一個主要問題是系統(tǒng)的可伸縮性差和安裝維護(hù)困難。多層結(jié)構(gòu)應(yīng)用軟件與

傳統(tǒng)的C/S模式下的兩層結(jié)構(gòu)應(yīng)用軟件相比,有著可伸縮性好、可管理性強(qiáng)、安全性高、軟

件重用性好以及節(jié)省開發(fā)時間等諸多優(yōu)點(diǎn)。在Internet/Intranet環(huán)境下,這些優(yōu)點(diǎn)顯得更加突

出?很多公司也提出了多層應(yīng)用軟件體系結(jié)構(gòu)。

三層結(jié)構(gòu)的客戶/服務(wù)器模型是一種先進(jìn)的協(xié)同應(yīng)用程序開發(fā)模型,這種方案將客戶/服務(wù)

器系統(tǒng)中各種各樣的部件劃分為三"層"服務(wù),它們共同組成一個應(yīng)用程序,這三層服務(wù)包括:

1)、客戶端服務(wù)程序;

2)、業(yè)務(wù)服務(wù)和其它“中間層"服務(wù)程序;

3)、數(shù)據(jù)服務(wù)(數(shù)據(jù)庫)。

這些層并不一定與網(wǎng)絡(luò)上的具體物理位置相對應(yīng),它們只是概念上的層,借助這些概念

可以開發(fā)出強(qiáng)大的應(yīng)用程序。使用這種方法設(shè)計應(yīng)用程序,開發(fā)人員在網(wǎng)絡(luò)上部署進(jìn)程及數(shù)

據(jù)時可以有相當(dāng)大的靈活性,從而有利于實(shí)現(xiàn)最佳的性能、更好的安全性以及更方便的維護(hù)。

中間層中包括提供業(yè)務(wù)服務(wù)和其它中間服務(wù)的部件,是聯(lián)系用戶服務(wù)和數(shù)據(jù)服務(wù)的橋梁,它們

響應(yīng)用戶(或其它業(yè)務(wù)服務(wù))發(fā)來的請求,執(zhí)行某種業(yè)務(wù)任務(wù),并對相應(yīng)的數(shù)據(jù)進(jìn)行處理。用戶

不需要直接與數(shù)據(jù)庫打交道。在實(shí)際應(yīng)用過程中,中間層部件通??煞譃閮蓚€以上一的層次。

因此,該應(yīng)用模型也被稱為多層次結(jié)構(gòu)。

當(dāng)企業(yè)信息系統(tǒng)從客戶/服務(wù)器模式向多層分布式應(yīng)用模式轉(zhuǎn)變時,需要應(yīng)用服務(wù)器

(Applicationserver)的支持,以便將不同的應(yīng)用技術(shù)集成在一起,使多層分布式應(yīng)用的開發(fā)、

分發(fā)、管理變得更加容易。現(xiàn)在已經(jīng)有很多企業(yè)采用了應(yīng)用服務(wù)器技術(shù),極大地增強(qiáng)了企業(yè)

應(yīng)用的性能。目前,企業(yè)級應(yīng)用服務(wù)器主要分為以下兩類:

1.基于中間件的應(yīng)用服務(wù)器

基于中間件的應(yīng)用服務(wù)器通過與現(xiàn)有系統(tǒng)的集成,可以為企業(yè)提供更強(qiáng)大的功能,包括

事務(wù)處理、安全管理、容錯、負(fù)載平衡等。

2.基于Web的應(yīng)用服務(wù)器

80年代末,WWW開始為人所知。但在Netscape使之大眾化之前,Web站點(diǎn)與應(yīng)用

的發(fā)展緩慢。隨著瀏覽器的發(fā)展,研究三層結(jié)構(gòu)與客戶/服務(wù)器應(yīng)用的人員馬上意識到瀏覽

器就可以作為瘦客戶機(jī),Web服務(wù)器作為應(yīng)用服務(wù)器。Java為所有瀏覽器提供統(tǒng)一用戶接

口,而Web服務(wù)器端的CGI完成數(shù)據(jù)處理。即:將運(yùn)行在客戶端的應(yīng)用軟件將移植到服務(wù)

器端。客戶端將不再需要應(yīng)用程序,它們完全集中在服務(wù)器端。這意味著用戶完全可以通過

瀏覽器來執(zhí)行應(yīng)用。在這種體系結(jié)構(gòu)下,Web應(yīng)用服務(wù)器通常運(yùn)行在Webserver上,負(fù)責(zé)處

理客戶請求,與后臺數(shù)據(jù)庫的連接一般采用ODBC和JDBC技術(shù)。這種類型的應(yīng)用服務(wù)器

易于使用,并且支持基于EJB(EnterpriseJavaBeans)的服務(wù)器應(yīng)用程序開發(fā)。但這種應(yīng)用

服務(wù)器也存在不支持事務(wù)處理、安全性差、對已有交易系統(tǒng)支持有限以及性能較低等缺陷。

B/S結(jié)構(gòu)解決了各種分布式應(yīng)用和跨平臺應(yīng)用,擴(kuò)展了業(yè)務(wù)范圍;在B/S結(jié)構(gòu)下,整個系統(tǒng)

的管理、資源分配、數(shù)據(jù)庫操作、業(yè)務(wù)邏輯部件的管理及動態(tài)加載等工作集中于應(yīng)用服務(wù)器,

容易部署和管理。為實(shí)現(xiàn)B/S結(jié)構(gòu)的應(yīng)用,我們認(rèn)為解決之道是采用Java技術(shù),面向Internet

的數(shù)據(jù)庫。

我們深入探討一下這種新型對象Web的三層客戶/服務(wù)器體系結(jié)構(gòu)。

1)、客戶端

第一層是屬于以傳統(tǒng)的Web瀏覽器和Web為中心的新的桌面范疇,它與現(xiàn)在靜態(tài)的

Web頁不同,新的內(nèi)容將具有更接近于現(xiàn)實(shí)世界中真實(shí)對象的觀感。這種非常生動的動態(tài)內(nèi)

容是由JavaBeans組合提供的。JavaBeans被嵌到可移動容器(HTML頁或Jars等)中,用戶用

拖放操作來和這些對象進(jìn)行交互??蛻舳薆eans可以和容器內(nèi)的其它客戶端Beans以及服務(wù)

器Beans進(jìn)行交互,服務(wù)器Beans使用CORBA事件和回叫啟動客戶端Beans上的方法。II

OP和HTTP可在同?個網(wǎng)絡(luò)上工作,HTTP用于Web頁、Jars、圖像的下載,CORBA用于Java

客戶端和服務(wù)器間的雙向通信。

2)、中間層

第二層是一些服務(wù)器,這些服務(wù)器能為HTTP和CORBA客戶端提供服務(wù)。UNIX、NT、

OS/2、Netware、MacOS、OS/400,MVS以及TandemNonStopKernel等所有的操作系統(tǒng)平臺

都支持這種CORBA/HTTP組合。CORBA對象是作為中間層的應(yīng)用服務(wù)器來運(yùn)行的,這

些對象通過CORBA/HOP與客戶端JavaBeans進(jìn)行交互。在可縮放性要求較低的應(yīng)用中,通

過在HTML服務(wù)器頁內(nèi)運(yùn)行的腳本也可以調(diào)用這些對象,例如Netscape的Web應(yīng)用接口(WAI)

就提供這樣的功能。

另外,第二層也必須提供服務(wù)器端的組件協(xié)調(diào)程序,這就是眾所周知的對象TP監(jiān)視器

。組件協(xié)調(diào)程序不是管理遠(yuǎn)程過程,而是管理對象。組件協(xié)調(diào)程序啟動對象池分散負(fù)荷,

提供抗故障能力,協(xié)調(diào)多重組件進(jìn)行事務(wù)處理。如果沒有這些組件協(xié)調(diào)程序,ObjectWeb

就不能管理數(shù)目龐大的服務(wù)器端對象。

在CORBA/JavaObjectWeb中,第二層還有存儲組件標(biāo)題、HTML頁和可移動位置的功能。

這些組件標(biāo)題、HTML頁和可移動位置可以存儲在由DBMS或ODBMS所管理的、可移動

的JavaJars內(nèi)。

3)、后端

第三層包含所有CORBA對象能訪問的內(nèi)容,包括過程的TP監(jiān)視器、面向消息的中間

件、DBMS、ODBMS、LotusNotes和電子函件等。這樣,CORBA業(yè)務(wù)對象將置換中間層的

CGI應(yīng)用。這是一件大好的事情,正是CORBA語言發(fā)揮通信作用的用武之地。

在開發(fā)大型分布式應(yīng)用系統(tǒng)中表現(xiàn)出強(qiáng)大的生命力,并形成了四項(xiàng)具有代表性的主流技

術(shù),即IBM公司的CICS和BEA公司的TUXEDO、OMG的CORBA(CommonObjectRequest

BrokerArchitecture)Microsoft的ActiveX/DCOM(DistributedCompoundObjectModel)和

SUN公司的Java/RMI。IBM公司的CICS產(chǎn)品在中間件的市場占有率很高,也支持CORBA

技術(shù)。

OMG是一個非盈利性國際組織,致力于使CORBA成為"無所不在的中間件"。1989

年成立時僅有8家公司參與,而今天已經(jīng)是擁有900多個機(jī)構(gòu)成員的"議會式”標(biāo)準(zhǔn)化組織,

世界上幾乎所有最有影響的計算機(jī)公司(如IBM、Microsoft和HP等)、著名的工商企業(yè)(如

Boeing、Citibank和FordMotor等)和大學(xué)研究機(jī)構(gòu)都是這個組織的成員。0MG所制定的

分布對象計算標(biāo)準(zhǔn)規(guī)范包括CORBA/HOP、對象服務(wù)、公共實(shí)施和領(lǐng)域接口規(guī)范。遵照這些

規(guī)范開發(fā)出的分布計算軟件環(huán)境可以在幾乎所有的主流硬件平臺和操作系統(tǒng)上運(yùn)行?,F(xiàn)在,

CORBA/IIOP已成為Internet上實(shí)現(xiàn)對談互訪的技術(shù)標(biāo)準(zhǔn),OMG的IIOP也已成為許多公司

(如Oracle、Netscape.Sun和IBM等)進(jìn)行系統(tǒng)集成的基本協(xié)議。1995年

以來,基于CORBA軟件的企業(yè)級應(yīng)用發(fā)展迅猛,大有覆蓋DCE之勢。目前世界上有定

影響的CORBA軟件制造商已有10多家。

ActiveX/DCOM是由Microsoft推出的對象構(gòu)件模型,最初用于集成Microsoft的辦公軟

件,目前已發(fā)展成為Microsoft世界的應(yīng)用系統(tǒng)集成標(biāo)準(zhǔn),并集中反映在其產(chǎn)品ActiveX中。

在分布計算技術(shù)匕OMG的優(yōu)勢比Microsoft至少領(lǐng)先2?3年。目前,只有OMG的技術(shù)

能夠支持異構(gòu)環(huán)境中大型分布式應(yīng)用的開發(fā),而Microsoft的DCOM技術(shù)尚不能勝任。

Microsoft的優(yōu)勢主要表現(xiàn)在應(yīng)用和市場能力上。從未來市場策略考慮,Microsoft決定支持

0MG提出的OLE/COM與CORBA的互操作標(biāo)準(zhǔn),從而使COM的對象能夠與CORBA的

對象進(jìn)行通信。今后3?5年內(nèi),0MG和Microsoft的分布對象技術(shù)將共存,并在許多方面

相互滲透。

按照Sun和JavaSoft對Java的界定,Java是一個應(yīng)用程序開發(fā)平臺,它提供了可移植、

可解釋、高性能和面向?qū)ο蟮木幊陶Z言及運(yùn)行環(huán)境。RMI(RemoteMethodlnvocation)是分布

在網(wǎng)絡(luò)中的各類Java對象之間進(jìn)行方法調(diào)用的ORB機(jī)制。

從應(yīng)用架構(gòu)上看,兩次重大的遷移最為引人注目。第一次是從主機(jī)終端方式向

Client/Server計算方式的遷移,這次遷移的積極效果之一是,打破了計算方式高度集中的局

面,使計算環(huán)境向客戶靠近了一大步。第二次則是從經(jīng)典的Client/Server計算方式向Internet

架構(gòu)下的集成計算方式的過渡與融合,這是一個目前正在進(jìn)行的過程。

每次遷移都沒有也不可能簡單地完全揚(yáng)棄各自的出發(fā)點(diǎn)。例如,在Client/Server計算方

式開始顯現(xiàn)其優(yōu)越性時,雖"拋棄大型主機(jī)”的議論甚囂塵上,但基于大型主機(jī)的集中式計算

不但依然存在而且在繼續(xù)發(fā)揮作用?,F(xiàn)在,在Intemet/Web的影響越來越被認(rèn)同的今天,我

們也依稀聽到了"Client/Server計算行將消亡"的議論。事實(shí)上,無論是今天還是以后,絕不

會有任何單一的技術(shù)能夠解決應(yīng)用中的一切問題。據(jù)GartnerGroup的一項(xiàng)調(diào)查顯示,在世

界經(jīng)濟(jì)500強(qiáng)的跨國大企業(yè)中,Client/Server計算方式現(xiàn)在仍然占據(jù)主導(dǎo)地位。

第二節(jié).三層的必要性

2.1數(shù)據(jù)的集中分布->合理化集中

在整個計算機(jī)發(fā)展的過程中,計算模式也在不斷發(fā)生變化。集中主機(jī)運(yùn)算模式在各個階

段都起了非常重要的作用,而且,目前的很多關(guān)鍵運(yùn)算,例如銀行核心業(yè)務(wù),航空訂票等還

必須依靠主機(jī)的高可靠性來維持關(guān)鍵任務(wù)的不間斷運(yùn)作。但以廉價的PC機(jī)為代表的分布式

客戶機(jī)/服務(wù)器將電腦的應(yīng)用普及到社會的各個方面。在中國,計算機(jī)的真正發(fā)展可以說就

是PC機(jī)的發(fā)展,在社會的很多部門,根本沒有經(jīng)歷大型主機(jī)集中式處理的階段。

客戶機(jī)/服務(wù)器系統(tǒng)在使用的初期有非常明顯的好處,特別是因?yàn)檫M(jìn)入門檻低,可以非

??焖俚亟⒁粋€應(yīng)用系統(tǒng),而且,在一定程度上,系統(tǒng)的升級和維護(hù)很方便:比起主機(jī)系

統(tǒng),還有的一個重要的優(yōu)勢是開發(fā)和管理人員的來源充分,這樣,就進(jìn)一步降低了擁有成本。

正因?yàn)檫@些原因,我們看到,客戶機(jī)/服務(wù)器系統(tǒng)在相當(dāng)程度上成為?個計算機(jī)應(yīng)用系統(tǒng)的

代名詞。在很大程度上,說起建立一個應(yīng)用系統(tǒng),就是選擇一個合適的數(shù)據(jù)庫,再加上一個

好用的前臺界面開發(fā)工具。

但是,隨著客戶機(jī)/服務(wù)器系統(tǒng)的發(fā)展,企業(yè)規(guī)模不斷擴(kuò)大,很多采用此類分散型運(yùn)算

的中國企業(yè)突然發(fā)現(xiàn)其服務(wù)器數(shù)量已經(jīng)到達(dá)令人吃驚的地步。由此帶來的是,復(fù)雜的管理模

式,運(yùn)算營運(yùn)成本失控,關(guān)鍵型應(yīng)用無法實(shí)現(xiàn),各子系統(tǒng)之間互不往來,而且,完全失去了

以客戶信息為中心的關(guān)注能力。各子系統(tǒng)都是為各自獨(dú)立的部門服務(wù),各自包含各自的客戶

信息,但是,卻無法得到客戶的完整信息,也就無法為客戶提供更好的服務(wù),甚至,也無從

知道什么才是更好的服務(wù)。

這時候,分散型運(yùn)算的弱點(diǎn)體現(xiàn)在:管理的困難,資料的分散,運(yùn)算成本的失控,低安

全性等因素,而這些弱點(diǎn)在集中主機(jī)運(yùn)算模式中恰恰能夠得到很好的解決而變成了優(yōu)點(diǎn)。這

樣企業(yè)被迫重新考慮再集中的問題。而最近電子商務(wù)的商業(yè)運(yùn)作模式的發(fā)展,中國企業(yè)與國

際進(jìn)一步接軌的需求,使企業(yè)與產(chǎn)品迅速擴(kuò)展到全球各地,對全球市場與金融變化的信息的

即時掌握,以及對更快的反應(yīng)速度的競爭要求,進(jìn)一步?jīng)Q定了集中計算模式成為目前與未來

的運(yùn)算模式的主流。

與國外企業(yè)有一個顯著的不同,國外企業(yè)可以實(shí)現(xiàn)完全意義上的集中計算,建立一個或

幾個互為備份的超級計算中心,為全國范圍甚至全世界范圍內(nèi)這個企業(yè)的全部核心業(yè)務(wù)服務(wù)。

我國國內(nèi)由于體制上的原因,往往無法實(shí)現(xiàn)一個全國范圍內(nèi)的計算中心,而?般較容易實(shí)現(xiàn)

地、市級,或省級的集中,這已經(jīng)在電腦應(yīng)用水平最高的幾個行業(yè)得到體現(xiàn)。

例如,銀行,作為我國計算機(jī)應(yīng)用最規(guī)范,應(yīng)用水平相對最高的行業(yè)之一,也最先實(shí)現(xiàn)

數(shù)據(jù)的集中化,這樣,在其基礎(chǔ)上的通存通兌,信用卡聯(lián)網(wǎng),一卡通,一本通,及至現(xiàn)在的

各種費(fèi)用的代收代繳等吸引客戶的服務(wù)才得以實(shí)現(xiàn)。這些業(yè)務(wù)無一例外,都屬于集中式的應(yīng)

用,都需要一個集中式的數(shù)據(jù)中心,否則,如果這些數(shù)據(jù)還是分布在各個地方,則不可能有

這樣的應(yīng)用。

中國電信,無疑是中國發(fā)展最迅速的一個行業(yè),在快速發(fā)展及市場競爭之下,也同樣面

對這個問題。隨著規(guī)模的發(fā)展,電信的最終分家,如何能為客戶提供更好的服務(wù),如何降低

成木,如何快速面對市場變化,都要求走向集中。在去年中國電信總局在制定本地電信業(yè)務(wù)

計費(fèi)帳務(wù)系統(tǒng)時,明確倡導(dǎo)利用三層結(jié)構(gòu)來實(shí)現(xiàn)。同時,可以看到,不但本地計費(fèi)系統(tǒng)這樣

要求,近期的其他系統(tǒng)也紛紛提出相同要求。

在保險行業(yè),根本就是以客戶為中心的。為了能夠?yàn)榭蛻籼峁└玫姆?wù),中國的保險

行業(yè)將客戶服務(wù)中心(CallCentre)作為發(fā)展的一個方向,而一個統(tǒng)的客服中心必須有一

個集中的數(shù)據(jù)中心。所以,現(xiàn)在的中國保險行業(yè),也在開始數(shù)據(jù)的大集中,建立地市級和省

級的數(shù)據(jù)中心。

其他行業(yè),也是一樣,競爭越激烈,發(fā)展越迅速,對集中計算要求的迫切性也越高。

2.2三層結(jié)構(gòu)應(yīng)用系統(tǒng)的優(yōu)越性

2.2.1性能問題

三層系統(tǒng)要解決的第一個問題是性能問題:

我們先以一個例子來說明系統(tǒng)架構(gòu)對性能的影響,如下表格(表1-1)以電信市話系統(tǒng)

的規(guī)模為例,表示用戶數(shù)在特定數(shù)量時,需要多少業(yè)務(wù)終端為其服務(wù):

表1-2-1

規(guī)模終端數(shù)最大終端數(shù)

<20萬50100

20萬-60萬100200

60萬-150萬200400

>150萬3001000

如果采用二層結(jié)構(gòu)的話,當(dāng)應(yīng)用相對簡單、數(shù)據(jù)訪問量不大的情況下可以承受。而在上

表,當(dāng)應(yīng)用變得復(fù)雜、龐大,數(shù)據(jù)的訪問量增大,客戶機(jī)數(shù)目很多,就會帶來性能急劇下降

的后果。我們來看一下,性能問題究竟有幾個方面:

1.數(shù)據(jù)庫并發(fā)連接:作為二層應(yīng)用,客戶機(jī)在訪問數(shù)據(jù)前,必須與數(shù)據(jù)庫建立連接。而建

立一次連接一般都會在數(shù)據(jù)庫服務(wù)器端有比較復(fù)雜的準(zhǔn)備工作,所以,為避免在每次訪

問數(shù)據(jù)庫時都建立一次連接的額外開銷,客戶機(jī)?般會保持長連接:即使不訪問數(shù)據(jù),

也保持此連接。而現(xiàn)在的開發(fā)工具往往在一個應(yīng)用之內(nèi)會保持若干個長連接。這在客戶

機(jī)數(shù)目有限的情況下,不會有太大的問題,但是,若是在有幾百甚至上千個客戶機(jī)的情

況下,這些數(shù)據(jù)庫的并發(fā)連接就相當(dāng)可觀。每種數(shù)據(jù)庫的實(shí)現(xiàn)方式不同,每個并發(fā)連接

所需消耗的系統(tǒng)資源也不一樣。如果以每個連接1M內(nèi)存來計算,1000個客戶機(jī)至少要

占用服務(wù)器1G的內(nèi)存,而且,這些內(nèi)存顯然利用率非常低;

2.遠(yuǎn)程連接:二層結(jié)構(gòu)的應(yīng)用一般是在局域網(wǎng)中的應(yīng)用,不太關(guān)心網(wǎng)絡(luò)開銷問題,而在

個復(fù)雜應(yīng)用環(huán)境,客戶機(jī)往往與數(shù)據(jù)庫服務(wù)器不在同一個比較高速的網(wǎng)絡(luò)匕需要通過

廣域網(wǎng)甚至撥號線路來實(shí)現(xiàn)連接。而數(shù)據(jù)庫客戶機(jī)和服務(wù)器之間的通訊一般并不是非常

有效,一次數(shù)據(jù)庫操作,客戶機(jī)和服務(wù)器之間的交互可以有若干次。而且,由于遠(yuǎn)程網(wǎng)

絡(luò)環(huán)境的不可靠,長連接的可靠性也會有很大的疑問;

3.數(shù)據(jù)庫的瓶頸效應(yīng):在整個系統(tǒng)中,山于任何一個操作都必須通過數(shù)據(jù)庫,數(shù)據(jù)庫服務(wù)

器往往是最先成為瓶頸的地方。在二層結(jié)構(gòu)中,每增加一個客戶機(jī),就又加重服務(wù)器的

負(fù)擔(dān)。因此,在完成了CPU升級,增加CPU、內(nèi)存之后,我們對數(shù)據(jù)庫服務(wù)器的能力

的增加也到頭了,而―臺主機(jī)這方面的升級能力總是有限。同時我們知道,在線事務(wù)

處理(OLTP)環(huán)境中,并發(fā)數(shù)據(jù)庫提高數(shù)據(jù)庫性能的能力也是有限的,不象在線分析

處理系統(tǒng)(OLAP)可以采用并行度很高的數(shù)據(jù)庫,幾十個,上百個節(jié)點(diǎn)的并行數(shù)據(jù)庫

可以大有用武之地。這是因?yàn)榉治霾僮饕话阌脩舨欢啵瑪?shù)據(jù)庫操作也不多,但都是復(fù)雜

的、需要大量時間的查詢操作,可以將其分散在各個節(jié)點(diǎn)獨(dú)立完成后將總體結(jié)果得到。

在線事務(wù)處理的操作都不太復(fù)雜,但非常多,而且往往都有寫操作,在并行系統(tǒng)中,為

保證事務(wù)的完整性,實(shí)際在每次操作時,都必須有一次各節(jié)點(diǎn)的兩階段提交,復(fù)雜性隨

節(jié)點(diǎn)的增加有呈指數(shù)上升的趨勢。所以,一般在線事務(wù)處理系統(tǒng)中,即使采用并行數(shù)據(jù)

庫,節(jié)點(diǎn)數(shù)也往往是二個、四個,更多的節(jié)點(diǎn)不但無法提高系統(tǒng)的性能,甚至還會使速

度變慢。

這些問題,二層結(jié)構(gòu)無法得到滿意的解決,而三層結(jié)構(gòu)正是解決問題的關(guān)鍵。與二層結(jié)

構(gòu)不同,三層結(jié)構(gòu)無須保持客戶機(jī)與服務(wù)器之間的長連接,通常采用了無連接或短連接

(Sessionless>Connectionless)的方法。客戶機(jī)和應(yīng)用服務(wù)器之間沒有復(fù)雜的上下文關(guān)系,

可以在每次請求時建立連接,服務(wù)器返回結(jié)果后可以馬上斷開與客戶機(jī)的連接,這樣,可以

充分共享服務(wù)器端系統(tǒng)資源,為更多的并發(fā)用戶服務(wù)。事實(shí)上,Web服務(wù)器采用的HTTP協(xié)

議就是一種無連接的協(xié)議,瀏覽器只有在請求忖才和Web服務(wù)器連接,取到結(jié)果后馬上結(jié)束

此連接。只有采取這種無連接模式,才可能同時為幾百、幾萬甚至更大的并發(fā)請求服務(wù)。

1.減少數(shù)據(jù)庫并發(fā)用戶:兩層C/S結(jié)構(gòu)無法滿足成百上千的終端用戶同時聯(lián)機(jī)的需求,是

因?yàn)榇罅康臄?shù)據(jù)庫并發(fā)連接消耗了很多寶貴的數(shù)據(jù)庫服務(wù)器資源,但其實(shí)這些并發(fā)連接

的使用率非常低。三層結(jié)構(gòu)可以通過共享數(shù)據(jù)庫連接的方式,來明顯地減少數(shù)據(jù)庫并發(fā)

連接數(shù)。以下,舉例說明如何減少并發(fā)用戶數(shù):

二層客戶機(jī)/服務(wù)器系統(tǒng)

客戶機(jī)

圖1-2-1

假設(shè),此時客戶機(jī)數(shù)目有100個,而此時,采用三層結(jié)構(gòu),系統(tǒng)為圖1-22

三層客戶機(jī)/服務(wù)器系統(tǒng)

客戶機(jī)

圖122

每個交易在客戶機(jī)端和服務(wù)器端所需時間是不一樣的。譬如,以銀行信用卡取款為例,

在銀行的營業(yè)員來說,這個服務(wù)必須包括接受用戶的信用卡,取款單,身份證,輸入用戶卡

號,得到授權(quán),要求用戶簽名,最后,交還用戶卡、證及所取款項(xiàng)。而相應(yīng)的操作,在服務(wù)

器端,只是幾個SELECT,UPDATE,INSERT語句,兩者完成時間相差很大。為簡化,我

們假設(shè)每個交易在客戶機(jī)端需要10秒完成,而在服務(wù)器端,只需1秒即可完成。這樣,在二

層結(jié)構(gòu)中,在同一個交易內(nèi),這個服務(wù)器連接只在1/10時間內(nèi)工作,而在9/10的時間中都是

空閑無法利用。在三層結(jié)構(gòu)中,所有客戶機(jī)不直接和數(shù)據(jù)庫連,而是作為應(yīng)用服務(wù)器的客戶,

向應(yīng)用服務(wù)器發(fā)出請求。同樣,我們可以看到,如果所有客戶機(jī)都在進(jìn)行同?交易,從平均

意義上說(即,排除所有的交易都同時開始,同時結(jié)束,而是平均在任意時間段),同時只

有1/10的客戶在向服務(wù)器請求服務(wù)。應(yīng)用服務(wù)器只要保持1/10的客戶機(jī)總數(shù)的數(shù)據(jù)庫并發(fā)連

接,同時保證這些連接的滿負(fù)荷工作,就能和保持全部連接的二層系統(tǒng)一樣,滿足所有客戶

機(jī)對服務(wù)器的請求。就是說,只要有10個數(shù)據(jù)庫并發(fā)連接,就可以滿足100個客戶機(jī)。這樣,

由于同一交易在終端機(jī)完成所需時間與此交易在服務(wù)器端完成所需時間的不匹配(可以達(dá)到

一個數(shù)量級或更大),應(yīng)用服務(wù)器可以維持較少的數(shù)據(jù)庫并發(fā)連接而為大量終端用戶服務(wù)。

實(shí)際上,所需共享連接數(shù)不但和客戶端、服務(wù)器端完成時間的比值有關(guān),也和用戶需要

的響應(yīng)時間有關(guān)。還是以上面的例子,完成一個交易的實(shí)際時間為11秒,即客戶機(jī)端處理時

間+服務(wù)器端處理時間,這時,由于可以認(rèn)為客戶機(jī)端的處理時間為常數(shù),響應(yīng)時間的變化

就只和服務(wù)器端處理時間有關(guān)。但是,如果并不需要有這樣的響應(yīng)速度,而可以接受服務(wù)器

端平均2秒的響應(yīng),我們可以進(jìn)一步減少共享連接數(shù)目到5個,因?yàn)?,這個時候,在服務(wù)器端

每個交易都可以等待1秒才得到服務(wù)。因此,共享連接數(shù)可以用如下公式計算:

N=(TC"S)/(TR"S)

其中,N代表共享連接數(shù),。代表交易在客戶機(jī)端所用時間,Ts代表交易在服務(wù)器端

所用時間,TR代表要求交易在服務(wù)器端的響應(yīng)時間。

注:某些數(shù)據(jù)庫有連接共享的功能,實(shí)際并不為所有并發(fā)連接在物理上分配系統(tǒng)資源,也可

以減少大量并發(fā)用戶對服務(wù)器的消耗。

2.減少網(wǎng)絡(luò)開銷:同一次交易,應(yīng)用服務(wù)器與終端客戶只有一次交互,而如果是兩層

結(jié)構(gòu),就會有多次交互。仍以上面的例子,假設(shè)每次服務(wù)器與客戶機(jī)的交互時間是相同

的,且客戶機(jī)與服務(wù)器的每次交互為Tc,而應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器之間的交互每次

為Ts。而且,由于三層結(jié)構(gòu)接受用戶請求會將結(jié)果一次返回,所以網(wǎng)絡(luò)開銷有如下結(jié)果:

3.

表1-2-2

交互次數(shù)二層結(jié)構(gòu)耗時三層結(jié)構(gòu)耗時

1TcTc+Ts

T+2*T

22*TCCS

nn*TcTc+n*Ts

1)我們可以看到,由于客戶機(jī)和服務(wù)器之間往往不在局域網(wǎng)上,而應(yīng)用服務(wù)器和數(shù)據(jù)庫服

務(wù)器往往在高速局域網(wǎng),甚至是同?臺主機(jī),因此Tc遠(yuǎn)大于Ts。這樣,我們有結(jié)論,

在只有一次交互時,三層結(jié)構(gòu)和二層結(jié)構(gòu)所需網(wǎng)絡(luò)開銷大致相同,但如果一個交易有若

干個數(shù)據(jù)庫操作時,三層結(jié)構(gòu)的優(yōu)勢就非常明顯。即使只有一個數(shù)據(jù)庫操作,其實(shí)常常

還是兩個操作,如

SELECTClFROMTESTWHERE...;

COMMIT;

這其實(shí)代表兩次數(shù)據(jù)庫操作,會有兩次客戶機(jī)和服務(wù)器的交互。注意,使用存儲過程也

可以減少數(shù)據(jù)庫和客戶機(jī)的交互,但即使在這種情況下,客戶機(jī)和服務(wù)器也會有多次交互的

情況,例如,要在一個存儲過程中返回多個結(jié)果集時,兩者必然要進(jìn)行多次交互;或者一個

交易根本無法在?個存儲過程內(nèi)完成,而需要調(diào)用幾個存儲過程時,也必須有多次交互。

2)應(yīng)用服務(wù)器負(fù)載平衡:雖然數(shù)據(jù)庫的并行系統(tǒng)不能有很大的并發(fā)度,應(yīng)用服務(wù)器卻無此

限制。當(dāng)應(yīng)用服務(wù)器成為瓶頸時,可以任意增加應(yīng)用服務(wù)器數(shù)目,由多臺應(yīng)用服務(wù)器同

時為終端客戶服務(wù),實(shí)現(xiàn)平衡負(fù)裁,同時提高系統(tǒng)的整體可靠性。而且,在數(shù)據(jù)庫瓶頸

不可逾越時,可以由應(yīng)用服務(wù)器上的應(yīng)用來實(shí)現(xiàn)將分類過的數(shù)據(jù)訪問不同的數(shù)據(jù)庫的形

式,由多個數(shù)據(jù)庫實(shí)現(xiàn)應(yīng)用級的一個邏輯數(shù)據(jù)庫,一定程度匕消除數(shù)據(jù)庫服務(wù)器的瓶

頸。

3)分擔(dān)數(shù)據(jù)庫部分工作現(xiàn)在的二層結(jié)構(gòu)的應(yīng)用大量采用存儲過程,完成商業(yè)邏輯,同時,

也可以減少與客戶機(jī)的交互,提高性能。但是,在用戶并發(fā)連接很多的時候,數(shù)據(jù)庫本

身已經(jīng)是瓶頸,還要其完成包括復(fù)雜商業(yè)邏輯的存儲過程,就無法集中所有資源來處理

insert,update,select等必須由數(shù)據(jù)庫完成的操作。而且,由于存儲過程是一-種高級功能

性語言,缺乏編程語言的一些特性,所以,往往會借助臨時表等技術(shù)來存放中間結(jié)果,

這樣,就進(jìn)一步加深數(shù)據(jù)庫的負(fù)擔(dān)。因此,將存儲過程中的商業(yè)邏輯前移到應(yīng)用服務(wù)器,

就可以分擔(dān)原來數(shù)據(jù)庫的一部分工作,使數(shù)據(jù)庫資源的利用更有效。

2.2.2互連問題

第二個問題就是系統(tǒng)互連問題,從連接的范圍要求上說,可以分為

?同一系統(tǒng)內(nèi)應(yīng)用交互:在同一公司,同一部門,局域網(wǎng)環(huán)境,甚至共用主機(jī)系

統(tǒng)或數(shù)據(jù)庫系統(tǒng)的環(huán)境下,要將各個子系統(tǒng)連接在一起。這種互連由于通訊、

數(shù)據(jù)信息、相互接口容易控制,一般比較容易實(shí)現(xiàn)。但是,如果子系統(tǒng)很復(fù)雜,

各自采用不同技術(shù)平臺,就需要一個統(tǒng)?的接口標(biāo)準(zhǔn)共同遵循。

?異種系統(tǒng)間應(yīng)用交互:跨公司,跨部門應(yīng)用之間的互連,各互連系統(tǒng)之間相互

之間保持獨(dú)立,即對外是黑盒子,有特定的接口與外界交互,外部系統(tǒng)通過此

接口調(diào)用其公布的功能,而無從得知其內(nèi)部結(jié)構(gòu)、實(shí)現(xiàn)、數(shù)據(jù)格式等。而且,

只要保證此接口不變,系統(tǒng)可以作任何形式的改變。

從時間意義上說,可以分為

?實(shí)時或準(zhǔn)實(shí)時交互:實(shí)時互連需要即時的響應(yīng),一般響應(yīng)時間在秒級,就是說,

必須在幾秒時間內(nèi)必須返回結(jié)果。但由于在和其他系統(tǒng)互連時,往往無法預(yù)測

交易在其他系統(tǒng)內(nèi)的運(yùn)行時間,所以對即時響應(yīng)的要求會有所放寬,我們將這

種情況稱為準(zhǔn)實(shí)時交互。

?異步交互:無須即時響應(yīng),一般用于系統(tǒng)之間批處理,如數(shù)據(jù)采集,日終對帳

等。這種交互,對時間的要求并不很高,從幾分鐘,幾小時或更長,但一般需

要信息可靠的傳送。

系統(tǒng)互連不但需要一個好的架構(gòu)以便與將來應(yīng)用互連,也需要幫助已有系統(tǒng)甚至未知系

統(tǒng)的順利連入。二層結(jié)構(gòu),由于以數(shù)據(jù)庫為中心,除非不同系統(tǒng)之間能夠共享數(shù)據(jù)庫,即,

不同的應(yīng)用之間能將自己的數(shù)據(jù)庫公開,否則,必須采用其他方式來解決,譬如,數(shù)據(jù)庫的

復(fù)制等??傊?,二層結(jié)構(gòu)的應(yīng)用要互連,一定是在同一系統(tǒng)環(huán)境下,往往還要滿足非??量?/p>

的條件,而且,異種系統(tǒng)互連根本不可能。這是因?yàn)椋苯訉?shù)據(jù)源的引用有如下弊端:

1.所有客戶機(jī)必須安裝所連所有不同種數(shù)據(jù)庫的客戶軟件,增加維護(hù)復(fù)雜性

2.所有客戶機(jī)必須有所有數(shù)據(jù)庫的訪問權(quán)限,對于?個分布式環(huán)境,不但管理困

難,而且容易造成安全問題

3.增加數(shù)據(jù)庫的并發(fā)連接,加重數(shù)據(jù)庫負(fù)擔(dān)

4.數(shù)據(jù)模式對外公開,降低對其修改的自由度

這樣,互連時的耦合度太高,影響系統(tǒng)的獨(dú)立性。相反,三層結(jié)構(gòu)提供事務(wù)級別的調(diào)用

而非數(shù)據(jù)源的引用。客戶機(jī)看到的就是和業(yè)務(wù)邏輯相關(guān)的事務(wù),這樣,與其他系統(tǒng)互連時,

只要提供這些被外部調(diào)用事務(wù)的調(diào)用規(guī)范,不用做其他特殊的工作,自然形成三層甚至多層

C/S結(jié)構(gòu)。而且,在異種系統(tǒng)互連時,為屏蔽內(nèi)部系統(tǒng)和外部應(yīng)用,保證本地系統(tǒng)的安全,

往往會提供和外界相連的網(wǎng)關(guān)、前置機(jī),本身就是多層次的表現(xiàn)。

三層結(jié)構(gòu)的應(yīng)用服務(wù)器可以使用多種數(shù)據(jù)源為其提供數(shù)據(jù)服務(wù),而且,應(yīng)用服務(wù)器中的

事務(wù)也可以作為一種資源,被本地或遠(yuǎn)程應(yīng)用服務(wù)器的其他事務(wù)來調(diào)用。例如以下應(yīng)用,用

戶要查詢帳戶信息,向本地應(yīng)用服務(wù)器發(fā)出請求,帳戶信息可以在本地,也可以在遠(yuǎn)程。所

有的應(yīng)用服務(wù)器都有一個事物QRY1,接受用戶輸入的帳戶號,并返回查詢結(jié)果。

QRY1

接受用戶輸入帳戶號ACC;

IFACC是本地帳戶THEN

SELECTACC信息FROM本地數(shù)據(jù)庫;

返回ACC信息;

結(jié)束;

ELSE

判斷ACC在應(yīng)用服務(wù)器SVRN上;

CALLQRY1ONSVRNWITHACC:

返回ACC信息;

結(jié)束;

END;

那么,完成一個帳戶查詢的操作,流程可能就是這樣:

CALLQRY1WITHACCmmCALLQRY1ONSVR2WITHACC;

回ACC借自四回ACC偌鳥

mn

客戶機(jī)酶服務(wù)器

應(yīng)用服務(wù)器12

QRY1QRY1

接受用戶輸入帳戶號ACC;接受用戶輸入帳戶號ACC;

判斷ACC在應(yīng)用服務(wù)嘉SVR2上;

判斷ACC是本地帳戶;

CALLQRY1ONSVR2WITHACC:SELECTACC信息FROM本地數(shù)據(jù)庫:

返回ACC信息;返回ACC信息;

結(jié)束;結(jié)束;

圖1-2-3

從中可以看出,三層系統(tǒng)的互連在結(jié)構(gòu)上已經(jīng)得到保證,可以滿足用戶的需求。

2.2.3安全問題

在二層結(jié)構(gòu)中,安全問題也有很大的缺陷。安全,分為兩大部分:

?權(quán)限控制:控制不同的角色在系統(tǒng)中能夠訪問不同的資源。對于二層系統(tǒng)來說,

就是控制用戶對數(shù)據(jù)庫資源的訪問,對于不同的用戶、組、角色,賦予對不同

的表格、視圖以只讀、插入、修改、刪除等權(quán)限。在權(quán)限控制中,有一條非常

重要的原則:權(quán)限最小原則,即必須保證每個人得到的權(quán)限能夠滿足其擔(dān)當(dāng)角

色正常工作的要求,并且賦予的權(quán)限只能完成其指定的工作,而不應(yīng)該擁有其

他任何無關(guān)權(quán)限。

?信息安全:即信息私密性(只有信息接收方可以看到信息),信息完整性(信

息接收方看到信息的全部和發(fā)送出的信息完全相同,沒有任何部分被修改),

身份可確定性(可以確認(rèn)發(fā)送方的確切身份,無人可以假冒其身份發(fā)出相同信

息,同樣,可以保證只有指定接收方可以看到發(fā)送信息),不可悔改性(信息

發(fā)出后,發(fā)送方不可否認(rèn)其已經(jīng)作出的發(fā)送動作)。信息安全的四個方面往往

采用加密和身份認(rèn)證技術(shù)來實(shí)現(xiàn)。某些關(guān)鍵信息,如口令,或在系統(tǒng)互連時,

關(guān)鍵信息進(jìn)入其他系統(tǒng)過程中要特別注意信息的安全問題。

在二層系統(tǒng)中,用戶擁有的是數(shù)據(jù)庫服務(wù)器訪問的權(quán)限,所以無法阻止其用其他方法繞

過客戶端應(yīng)用的限制而直接操作數(shù)據(jù)庫,從而利用其被賦予的合法權(quán)限來完成超越其應(yīng)該擁

有的權(quán)限所做的操作。其次,在系統(tǒng)互連時,必須賦予外部系統(tǒng)訪問本地數(shù)據(jù)庫的權(quán)限,而

此時,此外部角色完全無法由本地控制,在這種情況下,要修改連接的規(guī)范,或者本地的數(shù)

據(jù)模式發(fā)生變化,或者要與其他應(yīng)用連接而要增加外部用戶時,都會要求對權(quán)限重新賦值,

管理工作非常困難。一旦系統(tǒng)中有若干個數(shù)據(jù)庫時,權(quán)限的分配更是一個嚴(yán)重的課題,因?yàn)?/p>

越復(fù)雜的系統(tǒng),越容易出現(xiàn)安全漏洞。

而在三層系統(tǒng)中,采用與二層結(jié)構(gòu)不同的權(quán)限控制方式。二層結(jié)構(gòu)由于訪問的是數(shù)據(jù)庫,

所以,控制的是對數(shù)據(jù)庫對象的訪問權(quán)限,而三層系統(tǒng)訪問的是事務(wù),控制的是對事務(wù)的訪

問權(quán)限??梢钥吹剑瑢κ聞?wù)訪問的控制比對數(shù)據(jù)對象的控制更精確,粒度更小。這是因?yàn)椋?/p>

所謂控制用戶的權(quán)限就是保證用戶執(zhí)行指定操作的能力,同時保證其無法執(zhí)行其他未指定的

操作。下面舉例說明兩者的區(qū)別。

在銀行環(huán)境中,有如下轉(zhuǎn)帳操作:

>讀出帳戶1數(shù)據(jù);

>判斷是否有足夠余額;

>修改帳戶1余額;

>修改帳戶2余額;

如果定義可以讀帳戶表格的權(quán)限為A,允許修改帳戶表格的權(quán)限為B,那么,在二層結(jié)

構(gòu)應(yīng)用中,必須賦予操作員權(quán)限A+B,即權(quán)限A和權(quán)限B任意組合的總和,其中,我們可以

知道A+B是能得到的最小權(quán)限在三層結(jié)構(gòu)中,賦予的權(quán)限是對完成此操作的事務(wù)的執(zhí)行權(quán),

特定地,是權(quán)限A和權(quán)限B在此情況下的某種特定組合,我們用AXB表示,在特定情況下,

得到權(quán)限A,才能得到權(quán)限B,可知,AXB是最小權(quán)限。A+B是所有組合的總和,而AXB

只是其中的一種組合,所以權(quán)限A+B遠(yuǎn)遠(yuǎn)大于AXB。在二層系統(tǒng)中,授權(quán)操作員可以單獨(dú)

使用權(quán)限B而對帳戶表格進(jìn)行任意修改,但是同樣在三層結(jié)構(gòu)中,操作員要么無法執(zhí)行任何

操作,要么必須按照指定的步驟同時使用權(quán)限A和B,完成指定操作。同樣是最小權(quán)限,二

層結(jié)構(gòu)的最小權(quán)限由于建立在數(shù)據(jù)對象匕和實(shí)際要控制的操作脫節(jié),因此,控制的粒度大,

相反,三層結(jié)構(gòu)事務(wù)的概念與最終要控制的操作是相同的,因此最小權(quán)限要更精確,比二層

結(jié)構(gòu)中的最小權(quán)限要小。

其次,在系統(tǒng)互連是大趨勢的情況下,不能為滿足安全要求而犧牲連接能力。

在二層系統(tǒng)中,要完成系統(tǒng)互連,必須開放數(shù)據(jù)模式以及建立特定的用戶,而在三層結(jié)構(gòu)中,

開放的是事務(wù),可以為此建立新的事務(wù),或者使用原來的事務(wù)。外界應(yīng)用無須知道內(nèi)部數(shù)據(jù)

結(jié)構(gòu),在內(nèi)部發(fā)生變化時,甚至業(yè)務(wù)邏輯發(fā)生變化,只要保證此事務(wù)的對外接口不變,與之

連接的系統(tǒng)不需要有任何改變。不管與外界連接的是何種事務(wù),在事務(wù)服務(wù)器中可以定義相

應(yīng)的用戶來賦予執(zhí)行權(quán),控制非常簡單而有效,減少出錯機(jī)會。

在整個系統(tǒng)中包含多個數(shù)據(jù)源的情況,如果是同種數(shù)據(jù)庫,還可能有統(tǒng)一的工具進(jìn)行管

理,對于異種數(shù)據(jù)庫,必須一一在各個數(shù)據(jù)庫上為二層應(yīng)用的用戶賦予對各數(shù)據(jù)庫對象的各

種權(quán)限,這是一種對管理員要求很高的工作。而在三層結(jié)構(gòu)的應(yīng)用中,數(shù)據(jù)源對最終客戶機(jī)

是透明的,無須為客戶分配數(shù)據(jù)庫的權(quán)限,只需控制不同用戶在事務(wù)服務(wù)器上對各種事務(wù)的

執(zhí)行權(quán)限。這樣,權(quán)限管理集中在事物服務(wù)器匕便于管理。

在信息安全方面,由于數(shù)據(jù)庫提供的客戶端軟件的限制,一般只能實(shí)現(xiàn)基本的身份認(rèn)證,

數(shù)據(jù)加密傳送的能力也非常有限。而在三層結(jié)構(gòu)中,可以使用系統(tǒng)本身的身份驗(yàn)證,也可以

實(shí)現(xiàn)在應(yīng)用級的身份驗(yàn)證。由于用戶可以自由定義每個事務(wù)的接口,用戶調(diào)用服務(wù)器端事務(wù)

的接口數(shù)據(jù)格式可以由用戶決定,所以,可以實(shí)現(xiàn)應(yīng)用級對不同數(shù)據(jù)域的身份認(rèn)證和加密傳

送,精確到不同字段使用不同算法。這樣,三層結(jié)構(gòu)也可以提供更好的信息安全。

2.2.4開發(fā)維護(hù)問題

在應(yīng)用開發(fā)時,也必須考慮應(yīng)用的易于開發(fā)維護(hù),主要體現(xiàn)在如下方面:

?保護(hù)原有技術(shù)投資:技術(shù)投資表現(xiàn)在兩個方面,代碼的復(fù)用、開發(fā)人員技術(shù)和

經(jīng)驗(yàn)的延續(xù)。市場在不斷變化,客戶需求也在不斷變化,如果每次開發(fā)應(yīng)用都

必須從頭開始,必然會延誤時機(jī),因此,如何保證代碼在外部情況變化情況下

的高復(fù)用性就變得非常重要。應(yīng)用開發(fā)必須依靠有技術(shù)和經(jīng)驗(yàn)的開發(fā)人員,希

望其技術(shù)有一定的穩(wěn)定性,即無須在不同的應(yīng)用或項(xiàng)目中學(xué)習(xí)不同的開發(fā)方法

和開發(fā)工具。同時,為保證開發(fā)人員的專門化和熟練化,希望有明確的分工,

不同的開發(fā)人員專注其中的一個或幾個方面。

?便于進(jìn)行RAD:用戶的需求在不斷變化,需要應(yīng)用在最短時間內(nèi)能反映這種變

化,這就需要快速應(yīng)用開發(fā)(RAD)技術(shù)和工具的使用。在市場上,有很多這

樣的工具如PB、Delphi,VB、C++Builder等。這一點(diǎn),二層應(yīng)用開發(fā)非常有優(yōu)

勢,因?yàn)檫@些工具都為建立二層數(shù)據(jù)庫應(yīng)用做了相當(dāng)?shù)膬?yōu)化,甚至就是為此目

的設(shè)計的。

?縮小維護(hù)時的牽涉面:在應(yīng)用需求、操作系統(tǒng)、數(shù)據(jù)模式、數(shù)據(jù)庫發(fā)生變化時,

能將其限制在一個盡可能小的范圍內(nèi)。這一點(diǎn)往往就是二層結(jié)構(gòu)最大的弱點(diǎn),

由于業(yè)務(wù)邏輯有相當(dāng)一部分需要在客戶機(jī)實(shí)現(xiàn),當(dāng)應(yīng)用需求發(fā)生變化,必須修

改應(yīng)用時,會引起客戶機(jī)版本的升級,這樣,當(dāng)終端客戶機(jī)數(shù)目大時,維護(hù)開

銷就非常可觀。而數(shù)據(jù)庫的變化更是致命,由于客戶機(jī)應(yīng)用和數(shù)據(jù)庫的耦合程

度相當(dāng)高,數(shù)據(jù)庫的變化可能就意味著應(yīng)用的重新開發(fā)。

三層結(jié)構(gòu)的應(yīng)用分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)層,各層都有明確的任務(wù)分工。明確

的分工可以保證開發(fā)人員在其開發(fā)的層面更專門化,更熟練,可以提高開發(fā)效率。

表示層負(fù)責(zé)和用戶的接口,不管使用何種終端設(shè)備,只要處理相同業(yè)務(wù),無須為各種終

端用戶(Windows,Unix終端,瀏覽器,WAP手機(jī),音頻電話,PDA等)定制不同后臺服

務(wù),可以調(diào)用應(yīng)用服務(wù)器上相同事務(wù)。這一點(diǎn),在當(dāng)前電子商務(wù)時代對普遍運(yùn)算(Pervasive

Computing)需求越來越強(qiáng)烈時變得尤其重要。

兩層結(jié)構(gòu)中,業(yè)務(wù)邏輯往往在表示層與數(shù)據(jù)層都存在,無法有效分工,而在三層結(jié)構(gòu)中,

業(yè)務(wù)邏輯作為獨(dú)立的一層,可以將所有業(yè)務(wù)邏輯集中在一個地方,同時隔離表示層與數(shù)據(jù)層

關(guān)系,這樣,只要維持與表示層的接口不變,改變數(shù)據(jù)模式(Schema)甚至更換數(shù)據(jù)庫平

臺都不會影響表示層。由于應(yīng)用服務(wù)器是整個系統(tǒng)性能的關(guān)鍵,因此,一般希望使用C或C++

來編制各種事務(wù),與數(shù)據(jù)庫連接時,則使用標(biāo)準(zhǔn)的嵌入式SQL(EmbededSQLforDB2.Pro*C

forOracle,ESQLforSybase)編程。由于嵌入式SQL是國際標(biāo)準(zhǔn),各種數(shù)據(jù)庫產(chǎn)品的實(shí)現(xiàn)基本

都一樣,這樣,應(yīng)用在不同的數(shù)據(jù)庫中移植都變得非常簡單。在日常維護(hù)中,不管是業(yè)務(wù)發(fā)

生變化,增加新的事務(wù),還是個別事務(wù)版本更新,只要保證與表示層的接口不變,只要更新

中心應(yīng)用服務(wù)器上的相關(guān)事務(wù)即可,無須更新所有的終端客戶代碼,無須改變無關(guān)事務(wù),事

務(wù)服務(wù)器也可以保持正常運(yùn)行無須停止再啟動。

數(shù)據(jù)層和原來的二層結(jié)構(gòu)沒有什么變化,數(shù)據(jù)模式的設(shè)計原則還是一樣的,但是,用戶

的管理就非常簡單,而且,原來要處理業(yè)務(wù)邏輯的存儲過程現(xiàn)在前移到應(yīng)用服務(wù)器。

在三層結(jié)構(gòu)的應(yīng)用開發(fā)時,根據(jù)各層的分工將人員分為以下若干角色:

?需求分析與接口設(shè)計:將業(yè)務(wù)邏輯分解為獨(dú)立的可實(shí)現(xiàn)的事務(wù),確定各層接口

后其他角色即可獨(dú)立進(jìn)行開發(fā);

?用戶界面設(shè)計:明確以事務(wù)為中心,無數(shù)據(jù)庫概念;

?業(yè)務(wù)邏輯設(shè)計:實(shí)現(xiàn)與用戶界面與數(shù)據(jù)庫的接口,完成最終業(yè)務(wù)邏輯;

?數(shù)據(jù)模式設(shè)計:定義數(shù)據(jù)模型在數(shù)據(jù)庫中的體現(xiàn),與二層結(jié)構(gòu)相同。

角色分工是概念上的,實(shí)際操作過程中,開發(fā)人員可以同時擁有幾個角色。

山于現(xiàn)在流行的開發(fā)工具對于二層結(jié)構(gòu)應(yīng)用的開發(fā)提供了非常方便的工具,比如,

PowerBuilder的數(shù)據(jù)窗口(DataWindow),可以動態(tài)從數(shù)據(jù)庫中取得信息建立用戶輸入輸

出窗口,并且,有強(qiáng)大的報表制作功能。即使以后數(shù)據(jù)模式發(fā)生變化,數(shù)據(jù)窗口的改變也很

容易實(shí)現(xiàn)。Delphi作為另一種流行的開發(fā)工具,提供大量的數(shù)據(jù)控制(DataControl)組件,

可以將用戶界面的大多數(shù)控制部件與數(shù)據(jù)庫連接起來,減少開發(fā)人員的工作量。在開發(fā)三層

結(jié)構(gòu)應(yīng)用的時候,由于不再和數(shù)據(jù)庫有直接聯(lián)系,這些開發(fā)工具中很大一部分功能就不能再

用,這樣,會造成開發(fā)復(fù)雜性的增加。為了方便使用這些開發(fā)工具,可以采取一些變通方法。

例如,在PowerBuilder中,可以將原來用數(shù)據(jù)庫作為數(shù)據(jù)源的數(shù)據(jù)窗口改變成使用外部數(shù)據(jù)

源的數(shù)據(jù)窗口,而不改變數(shù)據(jù)窗口的其他屬性,如字段格式、名稱等,通過將這種外部數(shù)據(jù)

窗口與應(yīng)用服務(wù)器返回的結(jié)果集連接在一起,可以達(dá)到原來開發(fā)二層結(jié)構(gòu)應(yīng)用相同的效果。

在Delphi中,應(yīng)用服務(wù)器也可以通過將返回的結(jié)果集做成內(nèi)存數(shù)據(jù)表格的方式,作為其他數(shù)

據(jù)控件的數(shù)據(jù)源,同樣可以在開發(fā)三層結(jié)構(gòu)應(yīng)用的時候,使用為二層結(jié)構(gòu)設(shè)計的這些控件。

在開發(fā)三層結(jié)構(gòu)的應(yīng)用時,我們可以看到,中間一層-業(yè)務(wù)邏輯邏輯層是關(guān)鍵。在開

發(fā)這層應(yīng)用時,往往在功能上再分為三層:

?用戶界面層:處理和用戶界面,處理相同的業(yè)務(wù),在為不同的用戶界面服務(wù)時,

會有一些不同。例如,同樣是銀行的帳戶查詢業(yè)務(wù),通過ATM機(jī)查詢,用戶輸

入的密碼,和通過電話銀行查詢,輸入的密碼并不相同。這樣,在處理時,用

戶的身份驗(yàn)證,記日志的方式都會不同,但是查詢帳戶金額的業(yè)務(wù)卻是相同,

因此,可以由不同的用戶界面處理模塊來屏蔽這種變化。

?'也務(wù)邏輯層:實(shí)現(xiàn)最終的'業(yè)務(wù)處理,并通過數(shù)據(jù)訪問層來取得對數(shù)據(jù)庫的訪問。

?數(shù)據(jù)訪問層:為業(yè)務(wù)邏輯層提供數(shù)據(jù)服務(wù),屏蔽數(shù)據(jù)源的變化。這樣,不管采

用何種數(shù)據(jù)庫,對于業(yè)務(wù)邏輯層來說,訪問界面是完全一樣的。

由于CICS采用無連接(Sessionless)模式,每個事務(wù)必須是獨(dú)立的。開發(fā)時,如果同一個

邏輯事務(wù)由多個物理事務(wù)組成,并且與客戶有多次交互,那么,這些物理事務(wù)間必須注意上

下文的處理。

為滿足OLTP的需要,必須保證應(yīng)用服務(wù)器的最大并行度,即,讓共享資源能被更多的

客戶服務(wù),所以事務(wù)應(yīng)該在最短時間內(nèi)完成,盡早釋放其對各種資源(CPU,數(shù)據(jù)庫,進(jìn)程等)

的占用。

注:使用存儲過程來實(shí)現(xiàn)業(yè)務(wù)邏輯可以在一定程度上避免二層結(jié)構(gòu)的缺陷,此時,我們稱這

種應(yīng)用為2.5層應(yīng)用,但整個應(yīng)用必須捆死在某種特定數(shù)據(jù)庫上。

2.3三層及兩層的使用場合

具體在實(shí)現(xiàn)時,用戶可以選擇使用三層結(jié)構(gòu),也可以選擇二層結(jié)構(gòu),或者,采用業(yè)務(wù)邏

輯使用存儲過程來實(shí)現(xiàn)的2.5層結(jié)構(gòu)。實(shí)際上,不管是采用哪種結(jié)構(gòu),一定有其非常適合的

應(yīng)用場合,也必然有其不太使用的場合。比如,圖1-4是國際知名咨詢公司GartnerGroup所

做的一份調(diào)查報告,比較三層結(jié)構(gòu)和二層結(jié)構(gòu)在應(yīng)用復(fù)雜程度和開發(fā)維護(hù)費(fèi)用之間的關(guān)系。

三層VS.兩層

開發(fā)及維護(hù)的費(fèi)用

Source.

GartnerGeup

用戶數(shù)量

應(yīng)用復(fù)雜度

應(yīng)用時限

圖1-2-4

從此圖可以看到,在系統(tǒng)比較簡單,用戶數(shù)很少時,采用二層結(jié)構(gòu)是一個非常好的選擇,

開發(fā)及維護(hù)費(fèi)用很低。但是,隨著應(yīng)用復(fù)雜程度的提高,用戶數(shù)的增長,采用二層結(jié)構(gòu)的應(yīng)

用開發(fā)和維護(hù)費(fèi)用急劇上升,呈指數(shù)型提高,在到達(dá)一定程度之后,成本就變得非常高。相

反,采用三層結(jié)構(gòu),起始成本較高,但是,隨應(yīng)用復(fù)雜程度提高的曲線比較平緩,因此,在

應(yīng)用復(fù)雜程度、用戶數(shù)量到達(dá)一定程度后,成為一種更經(jīng)濟(jì)的選擇。

所以,三層結(jié)構(gòu)不是萬能的,在用戶數(shù)量小時并不如兩層結(jié)構(gòu)。如限于小范圍使用,

無須和其他系統(tǒng)互連的內(nèi)部管理模塊等,采用二層結(jié)構(gòu)是更好的選擇。

為了彌補(bǔ)二層結(jié)構(gòu)的缺陷,也往往采用所謂的2.5層結(jié)構(gòu),即利用存儲過程實(shí)現(xiàn)業(yè)務(wù)邏

輯,這種模式即有二層結(jié)構(gòu)的優(yōu)點(diǎn),例如,可以方便地使用一些通用工具來進(jìn)行開發(fā),如

PowerBuilder,Delphi等;同時,也有三層結(jié)構(gòu)的優(yōu)點(diǎn),如業(yè)務(wù)邏輯與表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論