版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024離婚協(xié)議要點(diǎn)及范本
- 2024石材礦山荒料資源整合與開發(fā)合同3篇
- 2025年度鴨苗繁育基地建設(shè)與運(yùn)營管理合同3篇
- 2025年度船舶船員體檢與健康保險合同3篇
- 二零二五年搬家物流運(yùn)輸合同樣本6篇
- 2024版建設(shè)工程施工合同ef0203
- 二零二五年度房地產(chǎn)項(xiàng)目土地置換合同3篇
- 2025年草原生態(tài)保護(hù)與草原旅游開發(fā)一體化合同3篇
- 2024版深圳股權(quán)轉(zhuǎn)讓合同協(xié)議書范本
- 2025年度高空樓頂廣告設(shè)計與施工一體化服務(wù)合同4篇
- 深圳2024-2025學(xué)年度四年級第一學(xué)期期末數(shù)學(xué)試題
- 中考語文復(fù)習(xí)說話要得體
- 《工商業(yè)儲能柜技術(shù)規(guī)范》
- 華中師范大學(xué)教育技術(shù)學(xué)碩士研究生培養(yǎng)方案
- 醫(yī)院醫(yī)學(xué)倫理委員會章程
- xx單位政務(wù)云商用密碼應(yīng)用方案V2.0
- 風(fēng)浪流耦合作用下錨泊式海上試驗(yàn)平臺的水動力特性試驗(yàn)
- 高考英語語法專練定語從句含答案
- 有機(jī)農(nóng)業(yè)種植技術(shù)操作手冊
- 【教案】Unit+5+Fun+Clubs+大單元整體教學(xué)設(shè)計人教版(2024)七年級英語上冊
- 2020年的中國海外工程示范營地申報材料及評分標(biāo)準(zhǔn)
評論
0/150
提交評論