軟件體系結(jié)構(gòu)-第3章_第1頁
軟件體系結(jié)構(gòu)-第3章_第2頁
軟件體系結(jié)構(gòu)-第3章_第3頁
軟件體系結(jié)構(gòu)-第3章_第4頁
軟件體系結(jié)構(gòu)-第3章_第5頁
已閱讀5頁,還剩165頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1軟件體系結(jié)構(gòu)北京理工大學(xué)計算機科學(xué)技術(shù)學(xué)院徐進第三章2課程內(nèi)容第一章軟件體系結(jié)構(gòu)基本概念第二章軟件體系結(jié)構(gòu)經(jīng)典風(fēng)格第三章軟件體系結(jié)構(gòu)應(yīng)用框架第四章軟件體系結(jié)構(gòu)設(shè)計模式第五章軟件體系結(jié)構(gòu)研究與發(fā)展3第3章軟件體系結(jié)構(gòu)應(yīng)用框架

3.1客戶/服務(wù)器

3.2瀏覽器/服務(wù)器

3.3中間件

3.3.1

遠程過程中間件

3.3.2

消息中間件

3.3.3

數(shù)據(jù)訪問中間件

3.3.4

對象中間件

3.3.5

交易中間件

3.4面向服務(wù)的體系結(jié)構(gòu)

3.5

引擎結(jié)構(gòu)4

在經(jīng)典軟件體系結(jié)構(gòu)的基礎(chǔ)上,有一批當前廣為使用的軟件體系結(jié)構(gòu),這些流行的軟件體系結(jié)構(gòu)大都與應(yīng)用問題直接相關(guān),并且,是在經(jīng)典結(jié)構(gòu)的基礎(chǔ)上組態(tài)建立的??梢园阉鼈兝斫鉃橐慌鷳?yīng)用軟件體系結(jié)構(gòu)框架。并且,這些框架結(jié)構(gòu)都有相應(yīng)的軟件獨立產(chǎn)品或包含在開發(fā)環(huán)境的工具中。各大軟件產(chǎn)品開發(fā)商,都在相互競爭地、圍繞這些流行的軟件體系結(jié)構(gòu),發(fā)展自己獨特性能的構(gòu)造工具和環(huán)境,并不斷創(chuàng)造新的更具優(yōu)勢的結(jié)構(gòu)概念和輔助環(huán)境工具。軟件體系結(jié)構(gòu)應(yīng)用框架3.1客戶/服務(wù)器(Client/Server)

C/S結(jié)構(gòu)在信息產(chǎn)業(yè)的系統(tǒng)結(jié)構(gòu)中占有重要地位。是隨著網(wǎng)絡(luò)時代的發(fā)展,從集中式計算到分布式計算重大演變的產(chǎn)物。集中式計算模式使用大型機或小型機作為宿主機,與非智能終端相連,實現(xiàn)運行在宿主機上的應(yīng)用程序。宿主機上的應(yīng)用程序,既要負責(zé)用戶的交互,也要負責(zé)數(shù)據(jù)庫管理,因此,對于系統(tǒng)的造價和性能要求很高。分布式計算結(jié)構(gòu)的誕生集中式計算的性價比不能適應(yīng)大量應(yīng)用系統(tǒng)的需求,隨著微電子技術(shù)的發(fā)展,使計算機成本大幅下降,低成本高性能的PC微機的誕生,加上網(wǎng)絡(luò)技術(shù)的發(fā)展,促成了計算結(jié)構(gòu)的根本轉(zhuǎn)變。C/S結(jié)構(gòu)的產(chǎn)生,誕生了分布式計算方式。5返回本章目錄6分布式計算分布式計算系統(tǒng)是由多個自主的處理器,平行地處理所各自獨立的系統(tǒng)部分,以共同完成一個業(yè)務(wù)過程。它們之間不共享存儲,僅通過封裝的接口傳遞消息。C/S結(jié)構(gòu)是分布式系統(tǒng)結(jié)構(gòu)。C/S結(jié)構(gòu)既是指硬件也是指軟件。在軟件中,通常用來表明一種消息交互的連接形式。7C/S結(jié)構(gòu)的消息傳遞形式

消息傳遞是分布系統(tǒng)結(jié)構(gòu)的基礎(chǔ),即客戶向服務(wù)者發(fā)送消息,客戶是消息的發(fā)送者,也是請求服務(wù)者;而服務(wù)器是消息的接收者,它響應(yīng)消息并執(zhí)行服務(wù),執(zhí)行結(jié)果由客戶自行取回。消息傳遞形式分為同步和異步兩種方式:同步方式:客戶發(fā)出請求時建立連接并保持連接,直到服務(wù)方處理完成后,取回執(zhí)行結(jié)果異步方式:客戶發(fā)出請求后不占用連接,服務(wù)完成時,客戶得到通知取回結(jié)果8C/S體系結(jié)構(gòu)硬件示意圖Internet客戶機1打印機調(diào)制解調(diào)器服務(wù)器其他公用設(shè)備客戶機2客戶機3客戶機4客戶機5客戶機通常采用PC機,在自身操作系統(tǒng)控制下執(zhí)行系統(tǒng)的應(yīng)用程序服務(wù)器需要高端計算機系統(tǒng),提供多用戶方式下的數(shù)據(jù)庫服務(wù)、文件服務(wù)、網(wǎng)絡(luò)通信、打印服務(wù)、電傳及傳真等設(shè)備服務(wù)。9

數(shù)據(jù)庫

應(yīng)用接口

數(shù)據(jù)庫系統(tǒng)

Core

多用戶操作系統(tǒng)網(wǎng)絡(luò)連接ServerClientC/S體系結(jié)構(gòu)軟件示意圖

用戶界面處理

應(yīng)用系統(tǒng)

數(shù)據(jù)庫系統(tǒng)

運行環(huán)境FormReportSQL

操作系統(tǒng)接口…早期的C/S結(jié)構(gòu)是資源不對等結(jié)構(gòu),常被稱為“胖客戶機結(jié)構(gòu)”客戶處理機擔(dān)任應(yīng)用程序的全部系統(tǒng)處理,包括:操作交互,業(yè)務(wù)界面邏輯、應(yīng)用業(yè)務(wù)邏輯,以及數(shù)據(jù)處理的所有系統(tǒng)功能。服務(wù)處理機擔(dān)任多個客戶應(yīng)用的數(shù)據(jù)管理,包括:應(yīng)用請求響應(yīng)服務(wù)、數(shù)據(jù)庫服務(wù)器、網(wǎng)絡(luò)服務(wù)。10C/S服務(wù)器提供的主要服務(wù)客戶應(yīng)用服務(wù):針對特定的應(yīng)用執(zhí)行處理邏輯,提供與外界的交互傳輸轉(zhuǎn)發(fā)、向數(shù)據(jù)庫提交操作請求并接收返回結(jié)果。數(shù)據(jù)庫服務(wù):數(shù)據(jù)庫安全性、訪問并發(fā)性、與前端客戶應(yīng)用的數(shù)據(jù)完整性,以及數(shù)據(jù)庫備份與恢復(fù)等系統(tǒng)資源管理。網(wǎng)絡(luò)服務(wù):完成數(shù)據(jù)庫服務(wù)器和客戶應(yīng)用程序之間的數(shù)據(jù)傳輸。C/S服務(wù)器提供的三種通信方式會話:類似打電話,建立交換通道,處理完整的業(yè)務(wù)交易過程消息通訊:處理事件中斷請求的異步進程通訊,用消息隊列實現(xiàn)進程訪問(包括本地進程和遠程進程)遠程過程調(diào)用:處理遠端另一汲取空間的控制流連接訪問的調(diào)用進程11C/S服務(wù)器結(jié)構(gòu)示意SQL/ID_APITxRPCM_APIORB專項服務(wù)SNMPCMIPDME分布系統(tǒng)管理(DSM)DirectorySecurityRPCMessaging網(wǎng)絡(luò)操作系統(tǒng)D_FileNetBIOSTCP/IPIPX/SPX傳送堆SNAP2PClientGUI/OOUIDSMOSServerObjectDSMOSGroupWareOLTPDBMS通信服務(wù)GUI/OOUI:圖形用戶接口/面向?qū)ο笥脩艚涌贠bject:對象服務(wù)GroupWare:群件服務(wù)OLTP(OnLineTransactionProcess)聯(lián)機事務(wù)處理服務(wù)DBMS(DataBaseManagementSystem)數(shù)據(jù)庫管理系統(tǒng)服務(wù)12C/S服務(wù)器的5類基本服務(wù):DBMS服務(wù):也叫SQL服務(wù),接受客戶傳來的SQL要求并找到所需的數(shù)據(jù),通過網(wǎng)絡(luò)送回每條SQL命令的結(jié)果。其中也包括文件服務(wù),提供數(shù)據(jù)服務(wù)的最原始形式,用于網(wǎng)絡(luò)上共享文件的大數(shù)據(jù)對象的信息庫OLTP服務(wù):采用兩階段提交協(xié)議,實現(xiàn)事務(wù)的完整性以及數(shù)據(jù)的一致性保護。GroupWare服務(wù):管理以組為單位的分布的信息,組成分的訪問通常有:公告板、電子郵件、工作流的等。Object服務(wù):通過ORB(ObjectRequestBroker),實現(xiàn)客戶與服務(wù)器對象訪問形式。13?專項服務(wù)(SpecialService):提供沒有統(tǒng)一標準的服務(wù)。包括:SQL/ID_API:提供可跨越多廠商的數(shù)據(jù)訪問TxRPC:Tuxedo標準的多種交易遠程過程調(diào)用M_API:各廠商的多種電子郵件應(yīng)用接口ORB:

(ObjectRequestBroker)各廠商的對象請求代理?分布系統(tǒng)管理(DSM):提供自主管理監(jiān)視網(wǎng)絡(luò)運行的工作臺,包括:SNMP:簡單網(wǎng)絡(luò)管理協(xié)議(SimpleNetworkManagementProtocol)CMIP:公共管理信息協(xié)議(CommonManagementInformationProtocol)DME:管理工作臺(DeskManagementEquip)C/S服務(wù)器的4層通信服務(wù)14?網(wǎng)絡(luò)操作系統(tǒng)(NOS):管理聯(lián)網(wǎng)設(shè)備,提供網(wǎng)絡(luò)資源查找,協(xié)調(diào)網(wǎng)上交互,包括:Directory:目錄名字服務(wù)Security:分布安全認證服務(wù)DistributedFile:分布文件查找服務(wù)RPC:遠程交互服務(wù)Messaging:消息服務(wù)PeertoPeer:對等服務(wù)?傳輸堆(TransportStack):提供一套普遍適用的傳輸協(xié)議,包括:NetBIOS:網(wǎng)絡(luò)基礎(chǔ)輸入輸出系統(tǒng)TCP/IP:(transmissionControlProtocol/InternetProtocol)IPX/SPX:

(InternetPacketExchange/SequencedPacketExchange)

Novell標準SNA:

(SystemNetwareArchitecture)IBM標準15應(yīng)用界面程序業(yè)務(wù)處理程序輸入數(shù)據(jù)輸出數(shù)據(jù)請求操作業(yè)務(wù)處理開始業(yè)務(wù)存取請求業(yè)務(wù)處理結(jié)束數(shù)據(jù)處理開始數(shù)據(jù)存取請求數(shù)據(jù)處理結(jié)束數(shù)據(jù)存取程序SQL請求開始SQL請求結(jié)束DBMS執(zhí)行SQL數(shù)據(jù)管理業(yè)務(wù)處理數(shù)據(jù)登陸/更新/讀取數(shù)據(jù)請求登陸/更新/讀取操作結(jié)果數(shù)據(jù)業(yè)務(wù)處理結(jié)果數(shù)據(jù)ClientServer業(yè)務(wù)處理請求兩層C/S結(jié)構(gòu)的處理流程集中在Client側(cè)的應(yīng)用系統(tǒng)程序之間,采用的共享內(nèi)存的本地過程調(diào)用LPC(LocalProcedureCall)訪問方式。16服務(wù)器處理應(yīng)用程序C/S結(jié)構(gòu)的傳輸壓力由于全部應(yīng)用程序都在Client端,有時,一個數(shù)據(jù)查詢的循環(huán)過程需要很多的、大的數(shù)據(jù)集合,造成大量的數(shù)據(jù)傳輸網(wǎng)絡(luò)壓力。過程存儲和遠程調(diào)用:將大循環(huán)的數(shù)據(jù)庫訪問以獨立過程的方式存儲在Serve端,叫做“過程存儲”兩個空間的進程間的訪問,采用

RPC(RemoteProcedureCall)

遠程過程調(diào)用使兩個地址空間的操作協(xié)同工作,可減少網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)膲毫Α_^程存儲和遠程調(diào)用示意SQL查詢請求SQL過程存儲RPC網(wǎng)絡(luò)傳輸ClientServer17遠程過程調(diào)用RPC基本原理

RPC是通過本地進程代理,連接網(wǎng)絡(luò)傳輸,發(fā)送過程調(diào)用請求,通過遠端進程代理連接執(zhí)行進程,并得到響應(yīng)處理的LPC是進程間通過共享內(nèi)存實現(xiàn)的RPC和LPC本質(zhì)上是相同的調(diào)用方式因為,無論是本地共享內(nèi)存的調(diào)用,還是遠程網(wǎng)絡(luò)間的通信連接,除了轉(zhuǎn)接方式的不同,其形式都是控制流連接的調(diào)用結(jié)構(gòu)。進程代理機器ARPC網(wǎng)絡(luò)數(shù)據(jù)包進程A3進程A2進程A1LPC任務(wù)進程進程代理機器BLPC18服務(wù)器代理:完成數(shù)據(jù)包接收。分析數(shù)據(jù)格式,取出調(diào)用對象的過程名、參數(shù)等,搜索被調(diào)用過程地址,調(diào)用后,取回結(jié)果打包備用??蛻魴C代理:完成請求信息的打包(對象、調(diào)用過程名、參數(shù)),發(fā)送給接收進程。進程代理服務(wù)器RPC網(wǎng)絡(luò)數(shù)據(jù)包服務(wù)進程3服務(wù)進程2服務(wù)進程1LPC任務(wù)進程進程代理客戶機LPCRPC進程代理機制

1919應(yīng)用界面處理輸入數(shù)據(jù)輸出數(shù)據(jù)請求操作業(yè)務(wù)處理開始業(yè)務(wù)存取請求業(yè)務(wù)處理結(jié)束數(shù)據(jù)存取請求數(shù)據(jù)處理SQL請求開始SQL請求結(jié)束DBMS執(zhí)行SQL業(yè)務(wù)處理請求和業(yè)務(wù)處理所需要的全部輸入數(shù)據(jù)登陸/更新/讀取的數(shù)據(jù)請求登陸/更新/讀取的數(shù)據(jù)結(jié)果全部數(shù)據(jù)處理結(jié)束Client應(yīng)用服務(wù)器數(shù)據(jù)服務(wù)器三層C/S結(jié)構(gòu)處理流程server20隨著Internet的發(fā)展廣域網(wǎng)應(yīng)用日益繁多。C/S結(jié)構(gòu)不能適應(yīng)新的需求:?多節(jié)點傳輸?shù)膹V域網(wǎng)應(yīng)用,不能適應(yīng)以特定服務(wù)局域網(wǎng)應(yīng)用為中心的專項應(yīng)用及交互操作方式。需要除了專項應(yīng)用以外,還能夠及時轉(zhuǎn)換廣域網(wǎng)上的其他應(yīng)用形式和操作訪問。?多節(jié)點廣域網(wǎng)的應(yīng)用系統(tǒng),不能要求前端應(yīng)用限定在特定數(shù)據(jù)庫信息格式的客戶應(yīng)用系統(tǒng)中,需要能以多種數(shù)據(jù)格式、應(yīng)對各種數(shù)據(jù)訪問操作。3.2瀏覽器/服務(wù)器(Browser/Server)返回本章目錄21Internet遠端客戶機Intranet

應(yīng)用B遠端客戶機廣域網(wǎng)絡(luò)應(yīng)用示意客戶機1客戶機2客戶機n服務(wù)器Intranet

應(yīng)用A客戶機1客戶機n服務(wù)器……直接交互式訪問跨越廣域網(wǎng)的多種應(yīng)用系統(tǒng)22B/S體系結(jié)構(gòu)技術(shù)要點:利用成熟的WWW(WorldWideWeb)技術(shù)沿用和擴展C/S體系結(jié)構(gòu)應(yīng)用系統(tǒng)可跨越廣域地區(qū)實現(xiàn)操作交互客戶端對服務(wù)端的運行系統(tǒng)數(shù)據(jù)庫不受限23WWW技術(shù)基本原理瀏覽器作為系統(tǒng)前端,僅負責(zé)操作請求發(fā)送及處理信息展示瀏覽器采用超文本標記語言HTML(HypertextMarkupLanguage),以互聯(lián)網(wǎng)絡(luò)上全體共識的格式展現(xiàn)信息服務(wù)器以多用戶處理方式響應(yīng)瀏覽器請求,執(zhí)行搜索、整理和存儲各種WWW資源工作瀏覽器和服務(wù)器的傳送機制,仍然是C/S結(jié)構(gòu)的消息傳遞機制24B/S體系結(jié)構(gòu)邏輯示意客戶瀏覽器3

InternetWeb服務(wù)器應(yīng)用服務(wù)1數(shù)據(jù)服務(wù)3應(yīng)用服務(wù)n……數(shù)據(jù)服務(wù)2數(shù)據(jù)服務(wù)1……

數(shù)據(jù)服務(wù)器數(shù)據(jù)庫……客戶瀏覽器2客戶瀏覽器1服務(wù)器

Web應(yīng)用服務(wù)器在原有C/S結(jié)構(gòu)上增加Web應(yīng)用服務(wù)器,它除了WWW服務(wù)器的功能外,需要應(yīng)用瀏覽器界面處理、應(yīng)用系統(tǒng)的處理邏輯、和數(shù)據(jù)庫信息轉(zhuǎn)換數(shù)據(jù)服務(wù)器基本保留C/S結(jié)構(gòu)的數(shù)據(jù)服務(wù)功能25客戶瀏覽器1)用統(tǒng)一資源定位器URL來識別對應(yīng)請求的Web服務(wù)器2)通過解釋HTML頁面來顯示信息3)用超文本傳輸協(xié)議HTTP來傳輸請求4)取回處理結(jié)果,轉(zhuǎn)換成HTML頁面信息服務(wù)器各個業(yè)務(wù)的處理包裝成對應(yīng)的應(yīng)用服務(wù),并執(zhí)行下列任務(wù):1)驗證客戶端的業(yè)務(wù)請求,進行界面邏輯處理2)進行相應(yīng)的業(yè)務(wù)邏輯處理3)發(fā)送必要的請求給數(shù)據(jù)服務(wù)器,并取回結(jié)果數(shù)據(jù)4)按事先給定的結(jié)果頁面準備好執(zhí)行結(jié)果數(shù)據(jù)服務(wù)器對應(yīng)的數(shù)據(jù)服務(wù)接受數(shù)據(jù)請求,與數(shù)據(jù)庫及文件系統(tǒng)交互,建立并管理數(shù)據(jù),執(zhí)行檢索、修改、刪除等數(shù)據(jù)操作26兩層B/S體系結(jié)構(gòu)存在的問題?每個應(yīng)用服務(wù)的表示邏輯和處理邏輯緊密相關(guān),使修改牽扯面大,單獨復(fù)用困難?業(yè)務(wù)信息的顯示格式是以全體共識的方式直接被瀏覽器取回的,因此,系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)安全性差?Web服務(wù)器權(quán)力集中:處理業(yè)務(wù)加上處理傳輸,使負載過大,系統(tǒng)的性能下降,回避風(fēng)險的能力降低。B/S結(jié)構(gòu)的多層體系結(jié)構(gòu)基于上面的問題,對Web服務(wù)進行了分解,分成兩層或多層方式,以減輕壓力,降低風(fēng)險,提高安全性以及可復(fù)用性。27Web服務(wù)器:輸入數(shù)據(jù)校驗數(shù)據(jù)規(guī)范化會話管理等應(yīng)用服務(wù)器:

數(shù)據(jù)訪問邏輯

業(yè)務(wù)處理邏輯異步通訊保等數(shù)據(jù)服務(wù)器:

數(shù)據(jù)存取數(shù)據(jù)檢索數(shù)據(jù)修正等服務(wù)器客戶瀏覽器n

Internet

應(yīng)用服務(wù)器業(yè)務(wù)處理1數(shù)據(jù)服務(wù)3業(yè)務(wù)處理n……數(shù)據(jù)服務(wù)2數(shù)據(jù)服務(wù)1……

數(shù)據(jù)服務(wù)器數(shù)據(jù)庫……客戶瀏覽器2Web服務(wù)器客戶瀏覽器1界面邏輯1界面邏輯n多層B/S體系結(jié)構(gòu)……28?數(shù)據(jù)驗證:確保數(shù)據(jù)在提交前的正確有效性?數(shù)據(jù)過濾:輸入數(shù)據(jù)轉(zhuǎn)換、過濾空格、大小寫轉(zhuǎn)換等?會話管理:session保證一項活動的集合完整處理,即操作頁面間正確地傳遞與轉(zhuǎn)發(fā)信息導(dǎo)航控制:保證應(yīng)用程序的頁面導(dǎo)航控制流?錯誤處理:處理出錯,并控制正確返回?生成顯示信息:根據(jù)任務(wù)請求動作,生成顯示信息?輸出格式化:轉(zhuǎn)換為瀏覽器顯示格式數(shù)據(jù)有效驗證輸出格式化數(shù)據(jù)過濾會話管理生成顯示信息導(dǎo)航控制錯誤處理應(yīng)用服務(wù)器Web服務(wù)器結(jié)構(gòu)表示層29應(yīng)用服務(wù)器結(jié)構(gòu)應(yīng)用系統(tǒng)

業(yè)務(wù)處理核心應(yīng)用服務(wù):

構(gòu)件管理器

對象請求代理

數(shù)據(jù)庫服務(wù)

安全服務(wù)

事務(wù)管理器

數(shù)據(jù)庫1

數(shù)據(jù)庫2

數(shù)據(jù)庫3?支持將后端的應(yīng)用程序綁定到多種不同的客戶機?處理事務(wù)在分布式系統(tǒng)的各部分異步通信的機制?提供核心應(yīng)用服務(wù)?提供描述服務(wù)以及定義服務(wù)接口?安裝應(yīng)用部署機制應(yīng)用邦定機制異步通信機制可定義的服務(wù)接口部署應(yīng)用服務(wù)機制Web服務(wù)器數(shù)據(jù)服務(wù)器

業(yè)務(wù)層30C/S和B/S結(jié)構(gòu)的物理分布界面邏輯數(shù)據(jù)處理界面邏輯服務(wù)器2業(yè)務(wù)功能業(yè)務(wù)功能應(yīng)用處理服務(wù)器1客戶機瀏覽器交互操作界面邏輯業(yè)務(wù)功能數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)處理交互操作交互操作瀏覽器界面邏輯業(yè)務(wù)功能數(shù)據(jù)處理C/S結(jié)構(gòu)B/S結(jié)構(gòu)31?多層體系結(jié)構(gòu)的優(yōu)勢使系統(tǒng)邏輯上保持相對獨立的結(jié)構(gòu),便于維護和擴充允許更靈活地選用軟件平臺和硬件環(huán)境,以適應(yīng)不斷變化的需求。各層的開發(fā)可以并行,并且能較高地復(fù)用已有的各層部件。表示層通過業(yè)務(wù)邏輯層與數(shù)據(jù)層交往,隔離了與應(yīng)用邏輯相關(guān)的數(shù)據(jù)結(jié)構(gòu),使系統(tǒng)安全性提高。多層體系結(jié)構(gòu)的不足各層間的通訊效率是系統(tǒng)的最大問題,合理規(guī)劃系統(tǒng)的各層位置和作用至關(guān)重要。32中間件的產(chǎn)生中間件的產(chǎn)生與C/S結(jié)構(gòu)的發(fā)展密不可分。由于C/S環(huán)境存在著操作系統(tǒng)、文件格式、網(wǎng)絡(luò)協(xié)議、服務(wù)等相互多元異構(gòu)的問題,產(chǎn)生中間的構(gòu)想。中間件的概念

中間件泛指能夠屏蔽操作系統(tǒng)和網(wǎng)絡(luò)差異,為異構(gòu)環(huán)境之間提供通信服務(wù)的軟件,是具有通信和可擴展能力的分布式軟件管理框架。3.3中間件返回本章目錄中間件的目標在中間件環(huán)境下開發(fā)的程序,具有在相對穩(wěn)定的應(yīng)用框架獨立接口,在計算機和系統(tǒng)軟件需要升級換代或者需要與其它符合中間件標準的系統(tǒng)連接時,都無需內(nèi)部改動,改變的只是中間件替換或轉(zhuǎn)換接口。33中間件產(chǎn)品支持分布式軟件的管理框架具有標準接口和協(xié)議的通用服務(wù)符合中間件標準的構(gòu)件開發(fā)工具包中間件技術(shù)包括中間件本身的體系結(jié)構(gòu)和實現(xiàn)技術(shù)中間件的開發(fā)標準能在中間件機制上運行的應(yīng)用系統(tǒng)開發(fā)的相關(guān)技術(shù)中間件技術(shù)的主要精力由于Web技術(shù)的出現(xiàn),使用超文本傳輸?shù)臑g覽器技術(shù),使前端操作的異構(gòu)難題得以解決,因此,中間件技術(shù)的主要精力集中在Web服務(wù)和數(shù)據(jù)服務(wù)器的連接上

異構(gòu)/同構(gòu)環(huán)境34中間件的工作機理中間件

數(shù)據(jù)服務(wù)A

數(shù)據(jù)服務(wù)B

數(shù)據(jù)服務(wù)W

應(yīng)用服務(wù)1

應(yīng)用服務(wù)2

應(yīng)用服務(wù)n……?無論數(shù)據(jù)服務(wù)在什么地方、處在什么操作系統(tǒng)、什么數(shù)據(jù)庫環(huán)境下,應(yīng)用服務(wù)只需訪問中間件,由中間件通過網(wǎng)絡(luò)協(xié)議獲得必要的數(shù)據(jù)服務(wù)。?中間件負責(zé)完成:通過網(wǎng)絡(luò)協(xié)議查找數(shù)據(jù)服務(wù)傳送應(yīng)用服務(wù)請求服務(wù)結(jié)果返回到應(yīng)用服務(wù)請求35中間件的基本框架

應(yīng)用接口(API)

中間件服務(wù)層通信,控制,計算,管理,輸出、信息等

應(yīng)用平臺層(Unix,NetWare,NT,VAX,OpenVMS等)

傳輸協(xié)議層(TCP/IP,IPX/SPX,NetBIOS,OSI等)傳輸協(xié)議層:提供各種傳輸協(xié)議,實現(xiàn)各種機型及網(wǎng)絡(luò)之間的通信應(yīng)用平臺層:支持中間件運行的各種平臺,實現(xiàn)應(yīng)用跨平臺操作中間件服務(wù)層:提供中間件的各種標準服務(wù)。(包括6項基本的服務(wù))應(yīng)用接口層:應(yīng)用程序接口定義,包括編程語言、系統(tǒng)環(huán)境和交互機制第一層第二層第三層第四層36服務(wù)層提供的6項服務(wù):通信服務(wù):能和本地或遠端應(yīng)用進行通信。包括遠程過程調(diào)用服務(wù)、消息隊列服務(wù)、傳輸服務(wù)(郵件、電子數(shù)據(jù)交換等)??刂品?wù):能在本地或遠端分布環(huán)境中控制程序執(zhí)行。包括:多線程服務(wù)、連續(xù)計算服務(wù)、目標代理服務(wù)、事務(wù)處理等。計算服務(wù):能進行復(fù)雜計算的國際化應(yīng)用,包括不同字符集、不同時區(qū)時間等同步操作保障機制。管理服務(wù):包括安全管理服務(wù)、系統(tǒng)管理服務(wù)、網(wǎng)絡(luò)管理服務(wù)。輸出服務(wù):顯示信息服務(wù)和用戶交互服務(wù),包括圖形、終端類型轉(zhuǎn)換、打印轉(zhuǎn)換等。信息服務(wù):能定義存取數(shù)據(jù)信息格式,支持多種存取機制,包括文件、目錄和數(shù)據(jù)存取。37中間件的分類按照中間件的不同用途,可以分為五類:遠程過程調(diào)用中間件:采用調(diào)用遠端的進程方式消息中間件:采用消息機制的異步遠端服務(wù)進程訪問數(shù)據(jù)訪問中間件:實現(xiàn)不同廠家異地數(shù)據(jù)庫的訪問對象中間件:以對象組件方式在異構(gòu)環(huán)境下互訪交易中間件:解決分布事務(wù)處理的有關(guān)問題中間件的重點發(fā)展趨向目前,基于對象構(gòu)件的中間件,對于Internet應(yīng)用的支持占據(jù)主導(dǎo)地位。各種不同用途中間件的集成和綜合是發(fā)展方向。38SkeletonRPCAPI

數(shù)據(jù)服務(wù)過程

數(shù)據(jù)庫系統(tǒng)

操作系統(tǒng)StubRPCAPI

應(yīng)用系統(tǒng)

操作系統(tǒng)異構(gòu)環(huán)境數(shù)據(jù)服務(wù)應(yīng)用服務(wù)應(yīng)用服務(wù)通過產(chǎn)生的stub,對虛擬的數(shù)據(jù)服務(wù)名字地址編址,并代理向指定的數(shù)據(jù)服務(wù)請求,接收響應(yīng),并取回執(zhí)行結(jié)果。數(shù)據(jù)服務(wù)通過產(chǎn)生的skeleton,代理接收請求,連接實際的數(shù)據(jù)服務(wù)執(zhí)行過程,返回執(zhí)行響應(yīng)。stub和skeleton通過IDL(InterfaceDescriptionLanguage)編譯產(chǎn)生3.3.1

遠程過程調(diào)用RPC(RemoteProcedureCall)中間件返回本章目錄39IDL規(guī)范IDL編譯器Header文件Header文件

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

數(shù)據(jù)服務(wù)StubSkeletonRPC建立連接的方式:提供接口定義語言IDL,用以描述遠端的數(shù)據(jù)服務(wù)接口。通過IDL編譯,生成遠程服務(wù)的本地代理Stub,以及遠端服務(wù)的Skeleton,建立本地應(yīng)用與遠端服務(wù)之間的代理連接關(guān)系40遠程過程調(diào)用工作流程

應(yīng)用服務(wù)運行

應(yīng)用服務(wù)繼續(xù)運行

數(shù)據(jù)服務(wù)調(diào)用

服務(wù)過

程執(zhí)行

過程返回RPC

RequestRPC

ReplyWait遠程過程調(diào)用的特點Request-Wait-Reply的同步調(diào)用方式對于多網(wǎng)絡(luò)連接、網(wǎng)絡(luò)故障、可移植性、緩沖流量等問題,沒有相應(yīng)的處理。413.3.2

消息中間件MOM(MessageOrientedMiddleware)?消息中間件(也稱:消息隊列中間件)是為滿足異步遠程分布系統(tǒng)而設(shè)立的。?消息中間件是以TCP/IP網(wǎng)絡(luò)為基礎(chǔ),處于網(wǎng)絡(luò)應(yīng)用層,建立在網(wǎng)絡(luò)應(yīng)用程序(NAP)之下,提供分布式應(yīng)用服務(wù)的。?消息中間件的異步通信是按照消息隊列轉(zhuǎn)發(fā)的工作原理實現(xiàn)的。NAPMOMTCPIPX.25SLIPPPP……應(yīng)用層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)接口返回本章目錄42消息的基本概念消息:定義的一個數(shù)據(jù)結(jié)構(gòu),由消息頭信息和體信息組成頭信息:起控制作用。包括標識、類型、隊列名、時間等體信息:應(yīng)用程序通信的數(shù)據(jù),對中間件無意義隊列名:包括目的隊列名和返回隊列名目的隊列名:接收消息的隊列名返回隊列名:需要得到反饋消息的才有此項?消息分為3類:請求消息:向進程發(fā)請求數(shù)據(jù),要求對方有應(yīng)答應(yīng)答消息:對請求消息的響應(yīng)通知消息:不需要應(yīng)答的消息消息中間件的兩種消息機制消息傳遞機制消息隊列機制43消息傳遞機制也叫“發(fā)布/訂閱”(publish/subscribe)準異步方式發(fā)布:數(shù)據(jù)服務(wù)將提供的服務(wù)以主題方式發(fā)布到中間件,并在中間件的控制下提供服務(wù)訂閱:應(yīng)用服務(wù)可向中間件登記感興趣的主題,并通過中間件收到相應(yīng)主題的數(shù)據(jù)服務(wù)。

數(shù)據(jù)服務(wù)1消息路由……中間件數(shù)據(jù)服務(wù)A……主題登記主題登記主題登記主題發(fā)布主題發(fā)布主題發(fā)布準異步:要求在建立連接的基礎(chǔ)上通信,保持一定程度的同步方式,能有效容錯。本地應(yīng)用遠程應(yīng)用

數(shù)據(jù)服務(wù)1

數(shù)據(jù)服務(wù)n數(shù)據(jù)服務(wù)B數(shù)據(jù)服務(wù)M44允許在不建立連接的情況下發(fā)送和接收消息。服務(wù)請求以及對應(yīng)的響應(yīng)執(zhí)行服務(wù),都需要保存在消息中間件的隊列機制中。中間件的隊列機制,包括:隊列管理、消息觸發(fā)、消息通道代理、消息路由排隊和消息隊列接口。消息隊列機制本地應(yīng)用消息隊列接口隊列管理消息路由排隊消息通道代理消息觸發(fā)中間件隊列管理消息路由排隊消息通道代理消息觸發(fā)消息隊列接口遠程應(yīng)用網(wǎng)絡(luò)應(yīng)用隊列組傳輸隊列組應(yīng)用隊列組傳輸隊列組45消息隊列管理消息路由排隊消息通道代理負責(zé)創(chuàng)建和刪除隊列,控制和維護消息路由排隊和消息通道。記錄活動日志。按照路由算法,安排消息排隊的去向。算法:如果消息隊列名屬于本地,則放入對應(yīng)的應(yīng)用隊列,否則放入對應(yīng)的傳輸隊列。采用握手式通信,連接接收方和發(fā)送方,傳送消息并負責(zé)接收消息的應(yīng)答。探測和獲得網(wǎng)絡(luò)故障,負責(zé)暫存消息并待恢復(fù)網(wǎng)絡(luò)連接時重發(fā)消息。46消息觸發(fā)機制消息到達與應(yīng)用程序的活動狀態(tài)并不總是一致的。觸發(fā)機制用以激活處于休眠狀態(tài)的應(yīng)用程序。在應(yīng)用隊列中的消息,在滿足一定的條件時,才觸發(fā)相應(yīng)的應(yīng)用執(zhí)行程序。為達到動態(tài)觸發(fā),該機制中設(shè)有啟動隊列和觸發(fā)消息,以及觸發(fā)監(jiān)控器。

應(yīng)用隊列滿足條件判斷

應(yīng)用程序

觸發(fā)監(jiān)控器啟動隊列接收消息觸發(fā)消息取出消息激活命令滿足條件47消息隊列接口提供一組中間件接口函數(shù),以操作消息隊列ConnectQM()完成運行進程到隊列管理器的連接OpenQueue()打開一個消息隊列SendRequest()將請求消息放入發(fā)送消息隊列ReceiveRequest()從接收消息隊列讀取請求消息SendReply()將應(yīng)答消息發(fā)送到發(fā)送消息隊列ReceiveReply()從接收消息隊列讀取應(yīng)答消息SendReport()將通知消息放入發(fā)送消息隊列ReceiveReport()從發(fā)送消息隊列讀取通知消息PropertySet()設(shè)置一個消息隊列對象的屬性PropertyQuery()查詢一個消息隊列對象的屬性CloseQueue()關(guān)閉一個打開的隊列DisconnectQM()將運行進程與隊列管理器斷開48消息隊列算法①通過消息隊列接口接收消息②檢查目的隊列名中的隊列管理器名是否本地地址③是本地地址,將消息列入對應(yīng)名字的應(yīng)用隊列,轉(zhuǎn)⑦④不是本地地址,將消息列入對應(yīng)名字的傳輸隊列⑤消息通道代理將傳輸隊列中的消息傳遞給遠程中間件系統(tǒng)⑥遠程的中間件同樣執(zhí)行該算法的過程⑦應(yīng)用程序通過消息隊列接口,從應(yīng)用隊列中獲取消息493.3.3

數(shù)據(jù)訪問中間件要點:

數(shù)據(jù)庫中間件,負責(zé)完成對數(shù)據(jù)庫訪問的操作優(yōu)化、用戶連接、安全保障,以及實現(xiàn)對不同廠商數(shù)據(jù)庫的訪問等。

實現(xiàn)透明訪問和操縱局域網(wǎng)、Internet環(huán)境中各種分布、異構(gòu)的數(shù)據(jù)資源的中間系統(tǒng),達到提高數(shù)據(jù)庫整體運行效率的目的。簡而言之,數(shù)據(jù)庫中間件是指一切連接應(yīng)用程序和數(shù)據(jù)庫的軟件。

不僅限于對不同廠商的數(shù)據(jù)庫,實現(xiàn)透明訪問和操縱分布、異構(gòu)的數(shù)據(jù)資源,而且包括完成對數(shù)據(jù)庫訪問的操作優(yōu)化、多用戶連接、安全保障,強調(diào)提高數(shù)據(jù)庫整體運行效率的目標。返回本章目錄50數(shù)據(jù)訪問中間件的提出針對的第一個問題:

在三層應(yīng)用體系結(jié)構(gòu)誕生之前,開放式數(shù)據(jù)庫互聯(lián)技術(shù)(ODBC)已經(jīng)被普遍應(yīng)用,其目標是分布環(huán)境下透明訪問異種數(shù)據(jù)庫。由于應(yīng)對不同數(shù)據(jù)庫,采用不同驅(qū)動統(tǒng)一接口的策略,沒能解決每個客戶機上需要下載相應(yīng)驅(qū)動程序的問題。Client1ApplicationServerODBCOracleDB2SQLSerever??????????OracleDB-driverDB2DB-driverSQLServerDB-driverClient2ApplicationClientnApplication51

隨著三層應(yīng)用體系的B/S結(jié)構(gòu)的發(fā)展,瀏覽器通過下載的Applet生成操作交互界面,在服務(wù)器上,是由中間件來負責(zé)數(shù)據(jù)的傳輸、安全驗證以及并發(fā)控制等工作的。而數(shù)據(jù)庫中間件可以實現(xiàn)同網(wǎng)絡(luò)中的任意種數(shù)據(jù)庫系統(tǒng)連接并完成信息存取,這樣就解決了每個客戶機上需要下載相應(yīng)驅(qū)動程序的問題。Browser1Browser2BrowsernServertransmissionSecurityConcur……OracleDB2SQLSerever??????????ODBC52針對的第二個問題:三層應(yīng)用結(jié)構(gòu)仍然存在DBMS的管理問題:要求在訪問網(wǎng)絡(luò)數(shù)據(jù)庫時,先建立連接(包括:啟動服務(wù)進程、前期檢查等多項操作),之后,當對數(shù)據(jù)庫的操作完成后,立即斷開連接(包括:后處理等多項操作),這樣,一個任務(wù)的多項數(shù)據(jù)訪問操作,頻繁地建立和斷開操作,消耗了系統(tǒng)大量的資源。針對的第三個問題:

互聯(lián)網(wǎng)上的應(yīng)用數(shù)量很多,與數(shù)據(jù)庫連接的應(yīng)用量也就很大,而在建立的每個連接后,接收客戶輸入以及處理相應(yīng)事務(wù)邏輯時,相應(yīng)的連接始終是保持著并處于空閑狀態(tài)。這樣,大量的連接請求會占用有限的連接資源,使系統(tǒng)處于等待狀態(tài),阻礙數(shù)據(jù)訪問。53針對的第四個問題:

對于多個用戶來說,即使是同一個操作,建立連接以及操作的方式都必須單獨進行,實際上它們在重復(fù)相同的工作,以建立它們各自的連接。這實際上是無意義的工作負擔(dān),且造成網(wǎng)絡(luò)擁塞。針對的第五個問題:

在網(wǎng)絡(luò)環(huán)境下,通過數(shù)據(jù)庫的底層連接需要一直保持到操作結(jié)束,整個操作過程由于帶寬和流量的問題,網(wǎng)絡(luò)風(fēng)險難測,一旦底層連接失敗,會造成數(shù)據(jù)丟失。并且通信線路也處于無意義的占用狀態(tài),造成通訊堵塞。54解決問題的途徑解決數(shù)據(jù)庫訪問效率優(yōu)化問題,也是數(shù)據(jù)訪問中間件的主要任務(wù)。其主要思路是四個方面:1)連接池2)虛擬連接3)開辟緩沖區(qū),使用數(shù)據(jù)庫鏡像技術(shù)4)遠程方法調(diào)用RMI(RemoteMethodInvoke)551)對象連接池

建立連接池,設(shè)置一些連接管理模塊,預(yù)先在DBMS和這些模塊之間建立好連接,叫做連接池。每個連接可以對應(yīng)一個控制線程的多個對象實現(xiàn)。這樣可以減少聯(lián)接斷開的次數(shù)。對象實現(xiàn)a對象實現(xiàn)b對象實現(xiàn)d對象實現(xiàn)cConnectmoduleapplicatrionDBMS562)虛擬連接

使用獨立的數(shù)據(jù)庫連接管理進程,提供專門的連接管理,用虛擬的連接隔離真實的連接和斷開,實現(xiàn)更合理的真正的連接斷開操作。

虛連接機制與連接池配合使用,有連接請求時,檢查該請求是否已經(jīng)建立了連接,斷開請求時,檢查有否等待的連接需要。VirtualConnectDB-ConnectConnectmoduleConnectmoduleConnectmoduleConnectmoduleDBMS573)開辟緩沖區(qū),使用數(shù)據(jù)庫鏡像技術(shù)VirtualConnectDB-ConnectConnectmodule緩沖區(qū)緩存鏡像分兩種方式:?

客戶端緩存鏡像:客戶需要信息時,通過比較版本判斷緩存信息的有效性,若無效,則通知遠程服務(wù)器索取信息,更新客戶緩存。?

服務(wù)器緩存鏡像:采用雙向緩存技術(shù),支持異步讀寫。無論客戶有無信息需求,服務(wù)器主動定時從數(shù)據(jù)庫中讀取新信息,隨時保持與數(shù)據(jù)庫信息的一致。58RMI請求端RMI服務(wù)端stubskeleton遠程引用層遠程引用層

傳輸層

傳輸層虛擬連接網(wǎng)絡(luò)連接當請求遠程數(shù)據(jù)庫訪問時,請求先傳送stub,stub作為請求對象的代理,接受請求并傳送請求到服務(wù)器數(shù)據(jù)庫訪問代理skeleton,由skeleton進行方法調(diào)用。這樣,只有代理之間的消息傳輸才占用網(wǎng)絡(luò)信道。4)遠程方法調(diào)用RMI(RemoteMethodInvoke),屬于構(gòu)件技術(shù)范圍。利用構(gòu)件之間RMI,屏蔽與數(shù)據(jù)庫的直接連接,提取數(shù)據(jù)庫操作請求和響應(yīng)請求的獨立構(gòu)件方法,采用兩個中間件相接。服務(wù)連接59數(shù)據(jù)訪問中間件的三種類型本地中間件:為特定數(shù)據(jù)庫而設(shè)計,能提供最佳性能的訪問方式,例如:Sybase的數(shù)據(jù)庫中間件。呼叫層轉(zhuǎn)移:(Call

LayerIn-terface,CLI)為多種數(shù)據(jù)庫提供統(tǒng)一的接口,基于X/Open(UNIX標準)的開放SQL標準,轉(zhuǎn)換“呼叫”為對應(yīng)的任意種數(shù)據(jù)庫。例如:ODBC和JDBC。數(shù)據(jù)庫網(wǎng)關(guān):對系統(tǒng)內(nèi)部數(shù)據(jù),提供訪問不同數(shù)據(jù)庫模型的轉(zhuǎn)換方式。利用統(tǒng)一形式數(shù)據(jù)格式和標準應(yīng)用程序接口,集成多個數(shù)據(jù)庫,并進出轉(zhuǎn)換統(tǒng)一信息格式的數(shù)據(jù)庫訪問。主要技術(shù)包括:ODBC(OpenDatabaseConnectivity)

JDBC(JavaDatabaseConnectivity)

OLEDB

數(shù)據(jù)庫網(wǎng)關(guān)60ODBC(OpenDatabaseConnectivity)最初是由X/Open和SAG(SQLAccessGroup)提出的。Microsoft公司作為積極的實現(xiàn)者。

開放式數(shù)據(jù)庫互聯(lián)技術(shù),是為訪問多種數(shù)據(jù)庫系統(tǒng)而建造的操作平臺,它包含訪問不同數(shù)據(jù)庫所要求的訪問驅(qū)動程序。實際上是統(tǒng)一訪問數(shù)據(jù)庫的接口標準。

ODBC的結(jié)構(gòu)包括4部分:

?OBDC應(yīng)用接口(ODBCAPI)

?驅(qū)動程序管理器(DriverManager)

?驅(qū)動程序(Driver)

?數(shù)據(jù)源(DataSource)61OBDC的體系結(jié)構(gòu)關(guān)系應(yīng)用層ODBC層數(shù)據(jù)層應(yīng)用程序數(shù)據(jù)源名字(DSN)驅(qū)動程序管理器

(ODBC)ODBCAPI

(SQL)

驅(qū)動程序

(ODBC)

數(shù)據(jù)源(DS)各數(shù)據(jù)庫DBMS系統(tǒng)平臺、網(wǎng)絡(luò)環(huán)境Syabas驅(qū)動程序Informix驅(qū)動程序Oracle驅(qū)動程序…62OBDCAPI應(yīng)用接口應(yīng)用程序向ODBC提交SQL語句是以函數(shù)的參數(shù)形式給出的。ODBC在運行時,根據(jù)不同的數(shù)據(jù)庫方式,動態(tài)地連接不同的DBMS底層通信協(xié)議。ODBCAPI的工作:

?請求與數(shù)據(jù)源建立聯(lián)系

?創(chuàng)建會話關(guān)系

?向數(shù)據(jù)源發(fā)出SQL請求

?定義數(shù)據(jù)源緩沖區(qū)和數(shù)據(jù)格式

?存儲和提取SQL執(zhí)行結(jié)果

?處理各種錯誤,報告錯誤

?事務(wù)提交與撤銷

?中斷處理63應(yīng)用接口提供的互操作一致性保障

不同的數(shù)據(jù)庫對于函數(shù)調(diào)用的語法是不同的,ODBC為了使所有的編程都統(tǒng)一在一套SQL語句的形式下,提供了三個級別的API函數(shù),對應(yīng)三個級別的SQL語法。1)核心級:包括最基本功能:

?分配和釋放環(huán)境

?數(shù)據(jù)庫連接

?準備執(zhí)行SQL

?分配SQL語句的參

數(shù)和結(jié)果緩存

?提取結(jié)果信息

?提交或撤銷事務(wù)

?提取錯誤信息。等等3)擴展級2在擴展級1基礎(chǔ)上:按驅(qū)動程序給出的

?瀏覽連接信息

?傳送多組參數(shù)

?提取多組字段值

?使用游標

?提取SQL格式

?調(diào)用翻譯程序等等API函數(shù)級別2)擴展級1:包括核心全部:按驅(qū)動程序給出的

?連接數(shù)據(jù)源

?傳送參數(shù)值

?提取字段值

?提取數(shù)據(jù)源類型

?提取數(shù)據(jù)源數(shù)量等等64ODBC驅(qū)動程序管理帶入口參數(shù)、包含多種驅(qū)動程序的動態(tài)連接庫DLL。通過動態(tài)連接庫方式,間接調(diào)用函數(shù),使對應(yīng)的數(shù)據(jù)庫連接到所有的ODBC應(yīng)用,負責(zé)管理應(yīng)用程序和數(shù)據(jù)庫的通信。ODBC驅(qū)動程序:這是ODBC的核心部分,負責(zé)處理ODBC調(diào)用,SQL語法翻譯,以及與數(shù)據(jù)源軟件層交互。驅(qū)動程序主要工作包括:

?建立與數(shù)據(jù)庫的連接

?向數(shù)據(jù)源提交請求

?數(shù)據(jù)庫操作結(jié)果的格式轉(zhuǎn)換

?返回數(shù)據(jù)庫操作結(jié)果

?整理錯誤返回錯誤代碼

?申請并控制游標

?初始化事務(wù)65ODBC驅(qū)動程序的兩種類型兩種類型的驅(qū)動程序,用以表示驅(qū)動與DBMS的分工和責(zé)任。單層式驅(qū)動:既處理ODBC函數(shù)調(diào)用,又處理SQL語句,承擔(dān)了部分數(shù)據(jù)源的工作,等價于本地的DBMS。配置在單機上或網(wǎng)絡(luò)環(huán)境中。多層式驅(qū)動:僅處理ODBC函數(shù)調(diào)用,而把處理SQL語句交給數(shù)據(jù)源。它本身不執(zhí)行數(shù)據(jù)處理,僅是通信中繼站的作用,負責(zé)傳輸數(shù)據(jù)庫引擎和應(yīng)用程序的命令和數(shù)據(jù)。66DS數(shù)據(jù)源

數(shù)據(jù)源,為上層應(yīng)用系統(tǒng)提供存取數(shù)據(jù)的底層平臺。以各不同數(shù)據(jù)庫的DBMS系統(tǒng)和網(wǎng)絡(luò)層為基礎(chǔ)。信息數(shù)據(jù)源需要驅(qū)動程序提供數(shù)據(jù)源名、用戶名和口令,以及網(wǎng)絡(luò)地址、網(wǎng)絡(luò)登錄口令等。

ODBC驅(qū)動程序管理和驅(qū)動程序本身,必須在每臺客戶機上分別安裝和配置。兩種配置數(shù)據(jù)源的方法:

?設(shè)置ODBC管理器,由管理器負責(zé)安裝各數(shù)據(jù)庫驅(qū)動程序。

?由ODBCAPI來配置,在API中有相應(yīng)數(shù)據(jù)源的操作函數(shù)??梢酝ㄟ^程序,調(diào)用函數(shù)來執(zhí)行數(shù)據(jù)源的增刪改。67JDBC(JavaDatabaseConnectivity)

Java語言的多種數(shù)據(jù)庫訪問開放式互聯(lián)。支持執(zhí)行SQL語句的Java應(yīng)用程序接口API,支持數(shù)據(jù)庫開發(fā)商,開發(fā)統(tǒng)一在Java應(yīng)用的訪問數(shù)據(jù)庫接口類。JDBC與ODBC的異同相同:JDBC沿用了ODBC的設(shè)計思想,也是基于X/Open的SQL調(diào)用級接口。主要結(jié)構(gòu)同ODBC幾乎相同。包括:應(yīng)用程序、驅(qū)動器管理器、驅(qū)動程序和數(shù)據(jù)源。不同:JDBC由于使用Java語言,對硬件平臺、操作系統(tǒng)的異構(gòu)性有更好的支持,由于JDBC驅(qū)動程序管理是內(nèi)置的,可以通過Web瀏覽器自動下載,無需安裝和配置,更適應(yīng)Internet數(shù)據(jù)庫應(yīng)用系統(tǒng)。68OLEDB

(ObjectLinkingandEmbeddingDataBase)OLEDB是微軟在ODBC基礎(chǔ)上推出另一技術(shù)標準。目標是提供支持組件式開發(fā)的統(tǒng)一數(shù)據(jù)訪問接口特點是除了提供對訪問數(shù)據(jù)庫的支持外,還支持訪問非數(shù)據(jù)庫格式的數(shù)據(jù)源。可以使用與訪問數(shù)據(jù)庫同樣的方式,訪問各種信息,不必考慮存放的地點和格式類型。數(shù)據(jù)組件:將數(shù)據(jù)庫信息格式或非數(shù)據(jù)庫格式信息格式的數(shù)據(jù),組成獨立的邏輯組件,這些組件具有獨立的操作和通信能力。非數(shù)據(jù)庫信息格式:指流媒體信息、索引文件、電子郵件、電子表格,等等。69OLEDB的實現(xiàn):提供一組C++的API函數(shù),可用來編寫訪問符合OLEDB標準的任何數(shù)據(jù)源的應(yīng)用程序。OLEDB基礎(chǔ)組件:消費者Consumers

:使用OLEDB接口的應(yīng)用程序,用以控制和操縱存儲在數(shù)據(jù)提供者中的數(shù)據(jù)。供應(yīng)者Providers:提供OLEDB接口的軟組件。數(shù)據(jù)提供者Dataproviders:提供數(shù)據(jù)存儲的軟組件。例如:關(guān)系數(shù)據(jù)庫、電子表格、電子郵件等。服務(wù)提供者Servicesproviders:從DBMS中分離出來的獨立功能軟組件。例如:查詢處理器、游標引擎等等。數(shù)據(jù)提供者數(shù)據(jù)操作訪問服務(wù)數(shù)據(jù)操作訪問服務(wù)數(shù)據(jù)操作訪問服務(wù)數(shù)據(jù)供應(yīng)者消費者70微軟的遠程數(shù)據(jù)庫訪問技術(shù)ADOOLEDBODBC本地/遠程數(shù)據(jù)庫訪問本地/遠程數(shù)據(jù)庫訪問本地/遠程數(shù)據(jù)庫訪問主DB接口主DB接口主DB接口數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫

應(yīng)用程序ADO(ActiveXDataObject)微軟的第三個數(shù)據(jù)訪問標準,主要支持對象組件體系結(jié)構(gòu)71數(shù)據(jù)庫網(wǎng)關(guān)數(shù)據(jù)網(wǎng)關(guān)的目標:根據(jù)特定的應(yīng)用需求,希望實現(xiàn)在本地機上的數(shù)據(jù)庫0配置,將異種數(shù)據(jù)庫系統(tǒng),集成在一個專門的控制系統(tǒng)下。數(shù)據(jù)網(wǎng)關(guān)的基本功能:數(shù)據(jù)庫網(wǎng)關(guān)(也叫SQL網(wǎng)關(guān)),提供應(yīng)用程序編程接口,開發(fā)者使用API調(diào)用,由數(shù)據(jù)庫網(wǎng)關(guān)來處理運行在多平臺上的不同數(shù)據(jù)庫的訪問。同時,在數(shù)據(jù)庫網(wǎng)關(guān)中一般加有安全控制、訪問優(yōu)化等性能的支持。72數(shù)據(jù)庫網(wǎng)關(guān)工作原理數(shù)據(jù)庫網(wǎng)關(guān)作為數(shù)據(jù)庫系統(tǒng)的中間件,通常,作為大型數(shù)據(jù)庫系統(tǒng)配備的產(chǎn)品,它們利用異種數(shù)據(jù)庫標準連接FAP格式協(xié)議(FormatandProtocol),在API中可以直接將SQL調(diào)用翻譯成FAP,并通過數(shù)據(jù)庫網(wǎng)關(guān)傳遞請求到目標數(shù)據(jù)庫系統(tǒng)。API調(diào)用SQL網(wǎng)關(guān)SQL調(diào)用FAP標準應(yīng)用格式翻譯OracleDB2SQLSerever?????73數(shù)據(jù)庫中間件的優(yōu)勢數(shù)據(jù)庫中間件具有中間件的普遍優(yōu)點:移植性好:更換操作系統(tǒng)和通訊協(xié)議等底層配置,都不用改變應(yīng)用程序。方便集成:不同的系統(tǒng)平臺應(yīng)用可以方便地經(jīng)過處理集成起來,實現(xiàn)更大的應(yīng)用。使用簡便:對應(yīng)用程序來說,實現(xiàn)了透明性訪問數(shù)據(jù)庫。數(shù)據(jù)庫中間件的代價由于對數(shù)據(jù)庫的操作都是同步且點到點的,這樣,過分集中地依賴中間件,就要求中間件的性能必須非常高,所承擔(dān)的風(fēng)險也很高。743.3.4

對象中間件隨著軟件技術(shù)的不斷發(fā)展,軟件結(jié)構(gòu)的抽象程度和方式在不斷翻新和改造,目標是更合理的保證軟件的質(zhì)量特性。抽象的元素從基本數(shù)據(jù)結(jié)構(gòu),子程序,模塊,對象類,又發(fā)展到構(gòu)件。構(gòu)件(組件)技術(shù):構(gòu)件技術(shù)是在面向?qū)ο蠹夹g(shù)和對象中間件基礎(chǔ)發(fā)展起來的。構(gòu)件技術(shù)包括構(gòu)件以及構(gòu)件的運行機制兩方面。構(gòu)件的運行機制就是對象中間件。分布計算到對象分布計算:對象組件技術(shù),利用面向?qū)ο蠡靖拍?,實現(xiàn)處理數(shù)據(jù)和行為的大粒度的聯(lián)合體,以及接口與實現(xiàn)分開的多態(tài)性機制,建造對象中間件,實現(xiàn)軟總線上的軟插件,構(gòu)成分布式系統(tǒng),這樣的設(shè)計觀點與原來的分布計算有了根本的改變。被稱為分布對象計算。返回本章目錄75理想的分布對象體系在分布式網(wǎng)絡(luò)環(huán)境下,軟構(gòu)件在對象中間件的協(xié)同組織下,相互不分客戶還是服務(wù)者,可角色互換;不需要知道運行在什么地方,可即插即用;使應(yīng)用系統(tǒng)的建造,成為在網(wǎng)絡(luò)上現(xiàn)有構(gòu)件的部署。三種主要中間件技術(shù):①由OMG制定ORB和CORBA的對象中間件規(guī)范②基于Java技術(shù)的對象組件和中間件體系EJB③在Windows平臺上運行的COM/DCOM/COM+注:OMG(ObjectManagementGroup)76①CORBA對象中間件

由國際OMG制定的軟件跨平臺交互操作標準。目標:無論在什么地方,用的什么語言或什么操作系統(tǒng),應(yīng)用程序都能相互獨立地實現(xiàn)透明對象訪問。在此目標下,制定統(tǒng)一的應(yīng)用軟件標準,規(guī)劃分布對象的體系結(jié)構(gòu),以及在此結(jié)構(gòu)下對象的產(chǎn)生、消亡和運用等方式。這套規(guī)定包括:OMA(ObjectManagementArchitecture)對象管理體系結(jié)構(gòu)ORB(ObjectRequestBroker)對象請求代理者CORBA(CommonObjectRequestBrokerArchitecture)公共對象請求代理者體系結(jié)構(gòu)77應(yīng)用對象公共設(shè)施

對象請求代理(ObjectRequestBroker)符合文書電子郵件數(shù)據(jù)庫存取……......

對象服務(wù)...交易安全并行關(guān)系數(shù)據(jù)交換……命名生存周期持久存儲事件……OMA對象管理體系結(jié)構(gòu)CORBA體系:OMA給出了對象體系結(jié)構(gòu)的開放框架,并給出核心部分ORB(ObjectRequestBroker)的開放標準,既:CORBA

(CommonObjectRequestBrokerArchitecture)78OMA中的對象OMA給出的對象是廣泛概念的分布系統(tǒng)中的任何成分??梢允菓?yīng)用程序、進程、類實例。唯一的要求是它要具有符合OMA標準的接口。在OMA中的對象作為服務(wù)者運行是動態(tài)地被引用,用唯一身份標識提供服務(wù)。被引用(reference)既是對象的實現(xiàn)(implementation)。在OMA中的對象作為客戶(消費者),是通過消息機制提出一個操作調(diào)用,來請求服務(wù)。在OMA中的對象可以作為消費者,也可以作為服務(wù)者,這與客戶/服務(wù)體系結(jié)構(gòu)有根本的不同。79OMA中的公共設(shè)施(commonfacilities)提供運行在多個應(yīng)用程序中的公共服務(wù),既應(yīng)用框架。例如:菜單、窗口、繪圖板、電子郵件等。OMA中的對象服務(wù)(objectservices)提供實現(xiàn)對象的基本功能,如:對象的命名服務(wù)、對象并行、對象存儲、對象產(chǎn)生和消亡、事件消息響應(yīng),以及事務(wù)交易的一致性保障等。公共設(shè)施與對象服務(wù)的區(qū)別公共設(shè)施提供的服務(wù)是高層應(yīng)用程序級的。對象服務(wù)提供的是系統(tǒng)必不可少的公共服務(wù),屬于底層支持的必須服務(wù)。80OMA對象請求代理ORB(objectrequestbroker)ORB是OMA的核心部分應(yīng)用程序在分布對象系統(tǒng)中要求服務(wù),是以系統(tǒng)客戶的身份,通過ORB與系統(tǒng)中其他對象交互的過程ORB在對象服務(wù)的支持下,完成系統(tǒng)中對象之間的交互操作的ORB的開放標準是CORBA81

對象適配器客戶程序(Client)

對象實現(xiàn)(Server)動態(tài)調(diào)用客戶stubORB接口實現(xiàn)庫ImplementationRepository接口庫InterfaceRepository

對象請求中間件核心(ORBCore)CORBA結(jié)構(gòu)CORBA規(guī)范包括:ORB核心、接口定義語言IDL、語言映射機制、存根(Stub)和框架(Skeleton)、動態(tài)調(diào)用和接口庫、對象適配器等主要部分。

對象適配器

對象適配器

對象適配器動態(tài)服務(wù)skeleton靜態(tài)服務(wù)skeleton82ORB核心任務(wù):把客戶發(fā)出的請求傳送給目標對象,并把目標對象的執(zhí)行結(jié)果返回給請求客戶。ORB核心的作用:屏蔽了對象位置、對象實現(xiàn)、對象執(zhí)行狀態(tài)、對象通信機制和數(shù)據(jù)表示。ORB核心底層的通信:提供GIOP(GlobalInternet-ORBProtocol)消息的通信能力,進行消息語法檢查和語義解釋,通過接口動態(tài)綁定,使用通信層提供的服務(wù)。可配置選用的協(xié)議,包括:TCP/IP的協(xié)議組件(IIOP)、本地消息隊列的協(xié)議組件(LIOP)消息中間件的協(xié)議組件(TIOP)83

客戶服務(wù)對象LIOPIIOPTIOP

綁定

協(xié)議槽

應(yīng)用組件庫StubGIOP消息層skeleton

核心組件庫

協(xié)議組件庫

運行系統(tǒng)

資源

傳輸ORB核心傳輸結(jié)構(gòu)84IDL語言客戶目標對象發(fā)送請求必須知道目標對象所具有的操作。IDL提供對象的接口定義手段,為使請求對象了解服務(wù)對象。IDL語言是類似于高級語言的說明性語言,只對對象的接口定義(包括異常處理),不提供任何實現(xiàn)細節(jié)的描述。IDL語言說明對象屬性、所屬父類、運行時可能的異常、引發(fā)的事件以及對象提供的方法(包括輸入?yún)?shù)和返回結(jié)果類型)IDL把編譯后的代碼映射到具體的編程語言,并且產(chǎn)生客戶方的Stub和服務(wù)方的Skeleton。CORBA中規(guī)定了IDL語言的映射方式,提供給語言開發(fā)商,用來開發(fā)支持CORBA體系的語言產(chǎn)品。85C++類IDL編譯器遠程對象代理

本地代理目標對象IDL語言作用IDL通過編譯,映射到對應(yīng)執(zhí)行語言的結(jié)構(gòu)中,在分布對象構(gòu)件的服務(wù)者和請求者之間建立連接。IDL編譯時產(chǎn)生兩個文件,(在C++語言中分別為:xxxs.c和xxxc.c)一個是服務(wù)器端的skeleton代碼,它明確表示了所承擔(dān)的服務(wù);一個是客戶端的stub遠程對象的本地代理,產(chǎn)生作為客戶請求方所需要的本地對象代理。CORBA庫CORBA庫IDL文件xxx.IDL客戶程序服務(wù)器程序服務(wù)接口86interfaceaccount{enumaccount-kind{checking,saving};//帳務(wù)種類的類exceptionaccount_not_available{stringreason};//帳務(wù)不可利用類exceptionincorrect_pin{};//密碼錯誤類exceptionnot_enough_balance{floatamount_short}//余額不足類readonlyattributeintegeraccount_number;//整型帳號只讀屬性readonlyattributestringname;//串型名字只讀屬性readonlyattributefloatbalance;//浮點型余額只讀屬性attributeaccount_kindkind_of_account;//帳務(wù)種類的屬性voidaccess(inintegeraccount,instringpin);//取款方法和輸入類型

raises(account_not_available,incorrect_pin,not_enough_balance);//可能引發(fā)的事件voiddeposit(inintegeraccount,infloatf,outfloatnew_balance);//存款方法和IO類型

raises(account_not_available);//可能引發(fā)的事件voidwithdraw(inintegeraccount,infloatf,outfloatnew_balance);//取消存款操作方法和IO類型

raises(account_not_available);//可能引發(fā)的事件};用IDL語言定義的對象接口例:87ORBClientIDLStub和動態(tài)調(diào)用IDLStub提供客戶端訪問對象服務(wù)的靜態(tài)接口動態(tài)接口DII(DynamicInvokerInterface)提供發(fā)現(xiàn)對象、構(gòu)造參數(shù)、發(fā)出遠程調(diào)用,取得返回結(jié)果等操作接口庫IR(InterfaceRepository)應(yīng)用構(gòu)件需要在系統(tǒng)中注冊,IR管理注冊構(gòu)件的接口動態(tài)調(diào)用時提供對象方法的元數(shù)據(jù)。包括:Repository:

頂層庫名Moduledef:

接口的邏輯分組Interfacedef:

接口定義Attributedef:

接口屬性O(shè)perationdef:

接口中的操作Typedef:

接口中已定義的類型Constantdef:

接口中已命名常數(shù)的Exceptiondef:

操作引起的異常ORBServer靜態(tài)連接:靜態(tài)連接是在編譯時產(chǎn)生Server的IDLSkeleton,并定位對應(yīng)的對象適配器。靜態(tài)方法調(diào)用步驟:用IDL定義對象類通過語言預(yù)編譯器產(chǎn)生服務(wù)類框架為生成的服務(wù)類框架提供實現(xiàn)的方法代碼

編譯方法代碼,產(chǎn)生:

接口庫描述對象的文件

靜態(tài)訪問客戶程序的stub

服務(wù)器上調(diào)用方法的skeleton將類定義與接口庫聯(lián)編注冊運行對象到實現(xiàn)庫8989ORBServer動態(tài)連接動態(tài)連接是在編譯時不確定客戶和服務(wù)對象的連接,由統(tǒng)一接口DSI(DynamicSkeletonInterface)提供的函數(shù)來判斷得到的被調(diào)用的對象的操作名、參數(shù)類型和值,完成客戶請求任務(wù)并組織返回結(jié)果。動態(tài)方法調(diào)用主要步驟獲得接口名字從接口庫獲得方法描述為傳送參數(shù)創(chuàng)建變元表創(chuàng)建對象請求包括:方法名變元表返回值調(diào)用遠程方法90對象適配器OA(objectadapter)對象適配器是ORB核心通信服務(wù)的上層機制對象適配器負責(zé)接受服務(wù)請求、完成實例化服務(wù)對象、向?qū)ο髠魉驼埱?、為服?wù)指定對象引用提供的運行環(huán)境。ORB的服務(wù)方,通過服務(wù)對象適配器,給客戶應(yīng)用提供的是一種假象(虛擬環(huán)境),即服務(wù)對象都是活動著的,隨時等待客戶應(yīng)用發(fā)來請求的。ORB通過適配器將目的對象分成組,每組通過特定的對象適配器來滿足特定的需求。為減少適配器的種類,CORBA給出了基本適配器標準BOA(basicobjectadapter)。后來又給出為方便移植的POA(portableobjectadapter)91對象適配器OA的內(nèi)容和功能?對象引用的產(chǎn)生和解釋?對象調(diào)用的方式?交互操作的安全認證?對象的激活/失活?對象引用到實現(xiàn)的映射以及定位?對象粒度管理?對象生命周期控制和管理92實現(xiàn)庫IR(implementationRepository)?實現(xiàn)庫包含支持服務(wù)的類、被實例化的對象、對象的標識。提供ORB定位、對象激活、對象的實現(xiàn)的必要手段。?實現(xiàn)庫具有特定的操作環(huán)境信息并記錄操作狀態(tài)。存儲的信息包括:調(diào)試信息、管理控制、資源定位和安全情況等。?實現(xiàn)庫提供對象的安裝、對象的實現(xiàn)激活、對象的執(zhí)行等控制操作的機制。CORBA的消息處理機制最初OMA提出了3種通信方式,雙向同步方式、單向調(diào)用方式和延時同步方式,為達到更好并行性,CORBA3.0提出了異步方法調(diào)用AMI和時間獨立的調(diào)用TII.93CORBA的消息處理機制異步方法調(diào)用AMI(AsynchronousMethodInvocation):包括輪詢機制與回調(diào)機制兩種方式。兩種消息方式,都具有不用附加額外的線程的特點。這樣,一個應(yīng)用程序的雙向操作可以通過單一的控制線程來管理,可一方便同時處理多個對象的遠程請求。時間獨立的調(diào)用TII

(TimeIndependentInvocation):適合于需要確保傳輸?shù)侥繕藢ο蠡蛘吲紶栠B接到網(wǎng)絡(luò)的應(yīng)用。94異步方法調(diào)用AMI的兩種方式:輪詢機制Client發(fā)出請求,Server立即返回一個ValueType類型的對象,可以用其中的Poller方法,監(jiān)控Server的運行??梢杂玫却虿坏却绞将@取狀態(tài)及返回結(jié)果?;卣{(diào)機制Client在請求Server后,同時,將ReplyHanderServant引用也傳送過去,然后無等待地繼續(xù)做自己的事情。當Server完成服務(wù)響應(yīng)后,向ReplyHander發(fā)出Response請求。Client可以通過ReplyHander獲得服務(wù)器返回的結(jié)果。因為Client無需頻繁查詢是結(jié)果返回,所以回調(diào)機制比輪詢機制效率更高。95時間獨立的調(diào)用TII

TII采用與E-Mail相似地轉(zhuǎn)發(fā)存儲形式,由于存儲TII請求和響應(yīng),使得存活期時間長于客戶應(yīng)用,所以叫做“時間獨立的調(diào)用”。其要點:當網(wǎng)絡(luò)環(huán)境不好或Server暫時不能接收時,將請求暫存于所經(jīng)鏈路上的節(jié)點中,利用IRP(InteroperableRoutingProtocol)提供路由存儲轉(zhuǎn)發(fā),直至與Server端對象連接。返回結(jié)果的情況亦然,允許發(fā)送請求對象和接收結(jié)果對象是不同的。ObjARefReplyHanderCORBARouterCORBARouterCORBARouterObjA外部網(wǎng)96②EJB(EnterpriseJavaBean)EJB是SUN公司1997年12月發(fā)布的構(gòu)件模型標準,EJB是能在服務(wù)器上運行的、特定的一個JavaBean,EJB具有系統(tǒng)可視化操作能力,提供可視化的構(gòu)件裝配工具和環(huán)境。JavaBean96年10月SUN公司推出JavaBean,經(jīng)過幾次升級,形成了成熟的軟件構(gòu)件體系。按照SUN公司的定義,JavaBean是“能在開發(fā)工具中被可視化操作的、可重用的軟件構(gòu)件”。它的目標是使第三方可以生產(chǎn)和銷售使用Java開發(fā)的軟件構(gòu)件。

Bean(豆)可以放在Contain(容器)中。顧名思義,容器是JavaBean的基礎(chǔ)。Bean被置放到容器中提供具體操作,包括:

?具有內(nèi)省能力(introspection)即:表示自己的操作和屬性

?具有可裝配(customization)

?具有可事件響應(yīng)(events)

?具有可授權(quán)操作(properties)

?具有永久性能力(persistence)97兩類Bean簡單Bean合成Bean可見Bean----構(gòu)成應(yīng)用程序的GUI不可見Bean----任何Java類包含可見和不可見Bean,但必須是3種Java子類之一。Applet類-----可構(gòu)造Web應(yīng)用Frame類----可構(gòu)造GUI合成BeanPanel類----可構(gòu)造GUI的基本重用成分容器可以是一個構(gòu)件,它可以包容很多Bean,它具有明確的接口,并提供內(nèi)部所包容的所有Bean的上下文。Bean具備內(nèi)省能力,其他Bean或工具能夠動態(tài)地發(fā)現(xiàn)一個Bean。并且提供Bean行為的部署、設(shè)定屬性等方法,可以用事件將它們連接起來,來組裝一個應(yīng)用。JavaBean提供的新型組裝開發(fā)模式98EJB規(guī)定的服務(wù)器JavaBeanEJB規(guī)定的服務(wù)器JavaBean,包括OTM(ObjectTransactionMonitor),以及RMI(RemoteMethodInvocation)技術(shù)。OTM對象構(gòu)件協(xié)調(diào)者OTM在EJB中稱為包容器。OTM可被看成建立在ORB(objectRequestbroker)之上的事務(wù)處理協(xié)調(diào)器。提供運行服務(wù)方的構(gòu)件框架,負責(zé)激活構(gòu)件或撤銷構(gòu)件,協(xié)調(diào)事務(wù),通知事件以及管理持久構(gòu)件的狀態(tài)。這些彌補了CORBA在ORB定義上的不足。CORBA上的構(gòu)件,沒有完整的服務(wù)器模型,只是簡單的對象可視工具管理。EJB的ORB體系RMIRMI是JDK1.1引入的ORB體系。它將分布式對象模型嵌入Java語言機制中。RMI是Java的RPC,它定義了一組遠程接口,可用于生成遠程對象,客戶應(yīng)用如同調(diào)用本地對象一樣調(diào)用遠程對象。99RMI結(jié)構(gòu)RMI客戶機RMI服務(wù)器stubskeleton遠程引用層遠程引用層

傳輸層

傳輸層虛擬連接網(wǎng)絡(luò)連接當客戶機調(diào)用遠程對象方法時,調(diào)用請求先傳送到客戶端的stub,stub作為遠程對象的代理,由引用層接受請求并傳送到服務(wù)器對象的skeleton,由skeleton進行方法調(diào)用。100遠程過程調(diào)用與遠程方法調(diào)用的主要區(qū)別:RPC(RemoteProcedureCall)RMI(RemoteMethodInvoke)RMI允許一個計算機上的Java程序調(diào)用另一臺機器上的對象方法,或者說允許向一臺機器上的對象發(fā)消息。RMI運行在JAVA虛擬機(JVM)之上,它的遠程服務(wù)接口包括:RMIStub

RMISkeleton與RPC的很多功能基本相同,不同之處在于“序列化”RMI序列化—負責(zé)把方法所用的參數(shù),轉(zhuǎn)換為字節(jié)碼序列流,并在另一端重現(xiàn)。101RPC與RMI主要區(qū)別還有:RPC是嚴格限定客戶和服務(wù)關(guān)系的RMI沒有客戶和服務(wù)方式的限定,在Java應(yīng)用中,服務(wù)本身可能也是其它對象的客戶。RMI主要特點二:RMI使用“傳值”而不使用“傳址”方式,恢復(fù)了良好的信息隱蔽方式,因為遠程方法調(diào)用實際上只傳送Stub存根。RMI主要特點一:RMI不僅下載對象中的數(shù)據(jù),在必要的時候,允許動態(tài)下載類的實現(xiàn)。

EJB服務(wù)器102EJB規(guī)定了創(chuàng)建客戶機接口的標準:

?EJBHome---使用JNDI(javanamediscoverinterface)查找接口對象。提供創(chuàng)建、刪除、查找等操作。

?EJBRemote---通過該接口調(diào)用構(gòu)件的業(yè)務(wù)方法

?RMI/IIOP或RMI/JRMP協(xié)議---底層分布式通信機制EJB服務(wù)器標準模型:服務(wù)器基本框架EJB體系結(jié)構(gòu)業(yè)務(wù)方法創(chuàng)建、刪除發(fā)現(xiàn)、查找

對象池EJB構(gòu)件/容器Home接口Bean代理Bean代理Bean實現(xiàn)EJB部署描述EJB應(yīng)用程序Remote接口…..…..103EJB服務(wù)器基本框架JavaBeansAppletsCORBARMI

數(shù)據(jù)庫名字/目錄EJBsJSPsServlets消息郵件

事務(wù)連接器容器Java2SDK標準版

工具

應(yīng)用編程模型?提供容器管理?提供大型企業(yè)應(yīng)用的編程框架?提供的底層服務(wù)是直接使用Java語言相關(guān)的服務(wù)功能104EJB容器EJB容器為EJB構(gòu)件提供運行環(huán)境。EJB容器管理EJB構(gòu)件??蛻魴C應(yīng)用程序并不直接與EJB構(gòu)件進行交互,它們是通過容器生成的兩個接口與本地EJB構(gòu)件進行交互。EJB容器主要

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論