Tongweb及中間件技術(shù)培訓(xùn)課件_第1頁
Tongweb及中間件技術(shù)培訓(xùn)課件_第2頁
Tongweb及中間件技術(shù)培訓(xùn)課件_第3頁
Tongweb及中間件技術(shù)培訓(xùn)課件_第4頁
Tongweb及中間件技術(shù)培訓(xùn)課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Tongweb及中間件技術(shù)培訓(xùn)

Tongweb及中間件技術(shù)培訓(xùn)一、中間件的定義顧名思義,中間件是處于應(yīng)用軟件和系統(tǒng)軟件之間的一類軟件,是獨立于硬件或數(shù)據(jù)庫廠商(處于其產(chǎn)品的中間,實現(xiàn)其互連)的一類軟件,是客戶方與服務(wù)方之間的連接件,是需要進行二次開發(fā)的中間產(chǎn)品。應(yīng)該說,中間件技術(shù)是伴隨網(wǎng)絡(luò)而發(fā)展起來的一種面向?qū)ο蟮募夹g(shù)。以前的計算機系統(tǒng)多是單機系統(tǒng),多個用戶是通過聯(lián)機終端來訪問的,沒有網(wǎng)絡(luò)的概念。網(wǎng)絡(luò)出現(xiàn)后,產(chǎn)生了Client/Server的計算服務(wù)模式,多個客戶端可以共享數(shù)據(jù)庫服務(wù)器和打印服務(wù)器等等。隨著網(wǎng)絡(luò)的更進一步發(fā)展,許多軟件需要在不同廠家的網(wǎng)絡(luò)產(chǎn)品、硬件平臺、網(wǎng)絡(luò)協(xié)議異構(gòu)環(huán)境下運行,應(yīng)用的規(guī)模也從局域網(wǎng)發(fā)展到廣域網(wǎng)。在這種情況下,Client/Server模式的局限性也就暴露出來了,于是中間件應(yīng)運而生。中間件是位于操作系統(tǒng)和應(yīng)用軟件之間的通用服務(wù),它的主要作用是用來屏蔽網(wǎng)絡(luò)硬件平臺的差異性和操作系統(tǒng)與網(wǎng)絡(luò)協(xié)議的異構(gòu)性,使應(yīng)用軟件能夠比較平滑地運行于不同平臺上。同時中間件在負載平衡、連接管理和調(diào)度方面起了很大的作用,使企業(yè)級應(yīng)用的性能得到大幅提升,滿足了關(guān)鍵業(yè)務(wù)的需求。

Tongweb及中間件技術(shù)培訓(xùn)一、中間件的定義

如今,市場上又推出了很多新的概念,例如三層結(jié)構(gòu)、構(gòu)件、Web服務(wù),其中風頭最勁的當屬SOA(面向服務(wù)的架構(gòu))。實際上,他們都不是一個產(chǎn)品,而是一種技術(shù)的實現(xiàn)方法,是開發(fā)一個軟件的一種方法論。我們知道,最早軟件開發(fā)方法就是編程、寫代碼的,其缺點在于無法復(fù)用,為此提出了構(gòu)件化的軟件開發(fā)方法,通過把編程中一些常用功能進行封裝,并規(guī)范統(tǒng)一接口,供其它程序調(diào)用,例如我們開發(fā)一個新軟件,可能要用到構(gòu)件1、構(gòu)件2、構(gòu)件3,那么,我們只要對其進行本地組裝,就可以得到我們想要的應(yīng)用軟件。在互聯(lián)網(wǎng)得到普及重視之后,軟件開發(fā)方法在構(gòu)件化基礎(chǔ)上又有新發(fā)展,核心思想是軟件并不需要囊括構(gòu)件,所需要的僅僅是構(gòu)件的運行結(jié)果,例如編寫一個通信傳輸軟件,就可以到網(wǎng)上尋找構(gòu)件,并提出服務(wù)請求,得到結(jié)果后返回,而不需要下載構(gòu)件并打包,這就是現(xiàn)在所說的SOA。想要現(xiàn)實SOA,就要規(guī)范構(gòu)件接口,同時還要規(guī)范構(gòu)件所提交的服務(wù)結(jié)果,而實現(xiàn)這種方法的基礎(chǔ),如今看來只有中間件。

Tongweb及中間件技術(shù)培訓(xùn)一、中間件的定義

中間件是一種獨立的軟件系統(tǒng)或服務(wù)程序,分布式應(yīng)用軟件借助其在不同的技術(shù)之間共享資源。中間件就是位于操作系統(tǒng)和應(yīng)用軟件之間的一個軟件層,它向各種應(yīng)用軟件提供服務(wù),使不同的應(yīng)用進程能在屏蔽掉平臺差異的情況下,通過網(wǎng)絡(luò)互相通信。

Tongweb及中間件技術(shù)培訓(xùn)一、中間件的定義

應(yīng)用應(yīng)用應(yīng)用編程接口(API)中間件平臺接口平臺接口操作系統(tǒng)硬件平臺操作系統(tǒng)硬件平臺

Tongweb及中間件技術(shù)培訓(xùn)二、中間件的分類

中間件所包括的范圍十分廣泛,針對不同的應(yīng)用需求涌現(xiàn)出多種各具特色的中間件產(chǎn)品。但至今中間件還沒有一個比較精確的定義,因此,在不同的角度或不同的層次上,對中間件的分類也會有所不同。由于中間件需要屏蔽分布環(huán)境中異構(gòu)的操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議,它必須能夠提供分布環(huán)境下的通訊服務(wù),我們將這種通訊服務(wù)稱之為平臺?;谀康暮蛯崿F(xiàn)機制的不同,我們將平臺分為以下主要幾類:

遠程過程調(diào)用中間件、數(shù)據(jù)庫中間件、消息中間件、基于對象請求代理的中間件、事務(wù)處理中間件

Tongweb及中間件技術(shù)培訓(xùn)二、中間件的分類

1)遠程過程調(diào)用中間件遠程過程調(diào)用是一種廣泛使用的分布式應(yīng)用程序處理方法。一個應(yīng)用程序使用RPC來“遠程”執(zhí)行一個位于不同地址空間里的過程,并且從效果上看和執(zhí)行本地調(diào)用相同。事實上,一個RPC應(yīng)用分為兩個部分:server和client。server提供一個或多個遠程過程;client向server發(fā)出遠程調(diào)用。server和client可以位于同一臺計算機,也可以位于不同的計算機,甚至運行在不同的操作系統(tǒng)之上。它們通過網(wǎng)絡(luò)進行通訊。相應(yīng)的stub和運行支持提供數(shù)據(jù)轉(zhuǎn)換和通訊服務(wù),從而屏蔽不同的操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議。在這里RPC通訊是同步的。采用線程可以進行異步調(diào)用。

Tongweb及中間件技術(shù)培訓(xùn)二、中間件的分類

1)遠程過程調(diào)用中間件

在RPC模型中,client和server只要具備了相應(yīng)的RPC接口,并且具有RPC運行支持,就可以完成相應(yīng)的互操作,而不必限制于特定的server。因此,RPC為client/server分布式計算提供了有力的支持。同時,遠程過程調(diào)用RPC所提供的是基于過程的服務(wù)訪問,client與server進行直接連接,沒有中間機構(gòu)來處理請求,因此也具有一定的局限性。比如,RPC通常需要一些網(wǎng)絡(luò)細節(jié)以定位server;在client發(fā)出請求的同時,要求server必須是活動的等等。

Tongweb及中間件技術(shù)培訓(xùn)二、中間件的分類

2)數(shù)據(jù)庫中間件

數(shù)據(jù)庫中間件:支持對數(shù)據(jù)庫存取的編程,可以使用存儲過程。如:ODBC,JDBC。

Tongweb及中間件技術(shù)培訓(xùn)二、中間件的分類

3)面向消息的中間件

對應(yīng)用程序的結(jié)構(gòu)沒有約束:在復(fù)雜的應(yīng)用場合中,通訊程序之間不僅可以是一對一的關(guān)系,還可以進行一對多和多對一方式,甚至是上述多種方式的組合。多種通訊方式的構(gòu)造并沒有增加應(yīng)用程序的復(fù)雜性。

程序與網(wǎng)絡(luò)復(fù)雜性相隔離:

程序?qū)⑾⒎湃胂㈥犃谢驈南㈥犃兄腥〕鱿磉M行通訊,與此關(guān)聯(lián)的全部活動,比如維護消息隊列、維護程序和隊列之間的關(guān)系、處理網(wǎng)絡(luò)的重新啟動和在網(wǎng)絡(luò)中移動消息等是MOM的任務(wù),程序不直接與其它程序通話,并且它們不涉及網(wǎng)絡(luò)通訊的復(fù)雜性。

Tongweb及中間件技術(shù)培訓(xùn)二、中間件的分類

4)基于對象請求代理的中間件

隨著對象技術(shù)與分布式計算技術(shù)的發(fā)展,兩者相互結(jié)合形成了分布對象計算,并發(fā)展為當今軟件技術(shù)的主流方向。1990年底,對象管理集團OMG首次推出對象管理結(jié)構(gòu)OMA(ObjectManagementArchitecture),對象請求代理(ObjectRequestBroker)是這個模型的核心組件。它的作用在于提供一個通信框架,透明地在異構(gòu)的分布計算環(huán)境中傳遞對象請求。CORBA規(guī)范包括了ORB的所有標準接口。1991年推出的CORBA1.1定義了接口描述語言O(shè)MGIDL和支持Client/Server對象在具體的ORB上進行互操作的API。CORBA2.0規(guī)范描述的是不同廠商提供的ORB之間的互操作。

對象請求代理(ORB)是對象總線,它在CORBA規(guī)范中處于核心地位,定義異構(gòu)環(huán)境下對象透明地發(fā)送請求和接收響應(yīng)的基本機制,是建立對象之間

Tongweb及中間件技術(shù)培訓(xùn)二、中間件的分類

4)基于對象請求代理的中間件client/server關(guān)系的中間件。ORB使得對象可以透明地向其他對象發(fā)出請求或接受其他對象的響應(yīng),這些對象可以位于本地也可以位于遠程機器。ORB攔截請求調(diào)用,并負責找到可以實現(xiàn)請求的對象、傳送參數(shù)、調(diào)用相應(yīng)的方法、返回結(jié)果等。client對象并不知道同server對象通訊、激活或存儲server對象的機制,也不必知道server對象位于何處、它是用何種語言實現(xiàn)的、使用什么操作系統(tǒng)或其他不屬于對象接口的系統(tǒng)成分。

值得指出的是client和server角色只是用來協(xié)調(diào)對象之間的相互作用,根據(jù)相應(yīng)的場合,ORB上的對象可以是client,也可以是server,甚至兼有兩者。當對象發(fā)出一個請求時,它是處于client角色;當它在接收請求時,它就處于server角色。大部分的對象都是既扮演client角色又扮演server角色。另外由于ORB負責對象請求的傳送和server的管理,client和server之間并不直接連接,因此,與RPC所支持的單純的Client/Server結(jié)構(gòu)相比,ORB可以支持更加復(fù)雜的結(jié)構(gòu)。

Tongweb及中間件技術(shù)培訓(xùn)二、中間件的分類

5)事務(wù)處理監(jiān)控中間件

通訊管理,為client和server之間提供了多種通訊機制,包括請求響應(yīng)、會話、排隊、訂閱發(fā)布和廣播等。

事務(wù)處理監(jiān)控能夠為大量的client提供服務(wù),比如飛機定票系統(tǒng)。如果server為每一個client都分配其所需要的資源的話,那server將不堪重負(如圖2所示)。但實際上,在同一時刻并不是所有的client都需要請求服務(wù),而一旦某個client請求了服務(wù),它希望得到快速的響應(yīng)。事務(wù)處理監(jiān)控在操作系統(tǒng)之上提供一組服務(wù),對client請求進行管理并為其分配相應(yīng)的服務(wù)進程,使server在有限的系統(tǒng)資源下能夠高效地為大規(guī)模的客戶提供服務(wù)。

Tongweb及中間件技術(shù)培訓(xùn)二、中間件的分類

5)事務(wù)處理監(jiān)控中間件

Tongweb及中間件技術(shù)培訓(xùn)三、當前主要的中間件技術(shù)支持平臺

軟件系統(tǒng)的復(fù)雜性不斷增長、軟件人員的頻繁流動和軟件行業(yè)的激烈競爭迫使軟件企業(yè)提高軟件質(zhì)量、積累和固化知識財富,并盡可能地縮短軟件產(chǎn)品的開發(fā)周期。于是集軟件復(fù)用、分布式對象計算、企業(yè)級應(yīng)用開發(fā)等技術(shù)為一體的“基于中間件的軟件開發(fā)”(CBSD,ComponentBasedSortwareDevelopment)應(yīng)運而生,這種技術(shù)以軟件架構(gòu)為組裝藍圖,以可復(fù)用軟件構(gòu)件為組裝模塊,支持組裝式軟件的復(fù)用,大大提高了軟件生產(chǎn)效率和軟件質(zhì)量。為此國風外對于這一技術(shù)的研究正在不斷深入,同時大型的軟件公司(例如sun,microsoft)及軟件組織機構(gòu)(OMG)都推出了支持中間件技術(shù)的軟件平臺。當前支持服務(wù)器端中間件技術(shù)的平臺

考察當前主流的分布計算技術(shù)平臺,主要有OMG的CORBA、Sun的J2EE和MicrosoftDNA2000。它們都是支持服務(wù)器端中間件技術(shù)開發(fā)的平臺,但都有其各自的特點,將分別闡述如下:

Tongweb及中間件技術(shù)培訓(xùn)三、當前主要的中間件技術(shù)支持平臺

CORBA規(guī)范的近期發(fā)展,增加了面向Internet的特性,服務(wù)質(zhì)量控制和CORBA構(gòu)件模型(CORBAComponentModel)。

Internet集成特性包括了針對IIOP傳輸?shù)姆阑饓?Firewall)和可內(nèi)部操作的定義了URL命名格式的命名服務(wù)(NamingService)。

服務(wù)質(zhì)量控制包括能夠具有質(zhì)量控制的異步消息服務(wù),一組針對嵌入系統(tǒng)的CORBA定義,一組關(guān)于實時CORBA與容錯CORBA的請求方案。

CORBACCM(CORBAComponentModel)技術(shù),是在支持POA的CORBA規(guī)范(版本2.3以后)基礎(chǔ)上,結(jié)合EJB當前規(guī)范的基礎(chǔ)上發(fā)展起來的。CORBA構(gòu)件模型,是OMG組織制定的一個用于開發(fā)和配置分布式應(yīng)用的服務(wù)器端中間件模型規(guī)范,它主要包括如下三項內(nèi)容:

Tongweb及中間件技術(shù)培訓(xùn)三、當前主要的中間件技術(shù)支持平臺

a.抽象構(gòu)件模型,用以描述服務(wù)器端構(gòu)件結(jié)構(gòu)及構(gòu)件間互操作的結(jié)構(gòu);

b.構(gòu)件容器結(jié)構(gòu),用以提供通用的構(gòu)件運行和管理環(huán)境,并支持對安全、事務(wù)、持久狀態(tài)等系統(tǒng)服務(wù)的集成;

c.構(gòu)件的配置和打包規(guī)范,CCM使用打包技術(shù)來管理構(gòu)件的二進制、多語言版本的可執(zhí)行代碼和配置信息,并制定了構(gòu)件包的具體內(nèi)容和基于XML的文檔內(nèi)容標準。

總之,CORBA的特點是大而全,互操作性和開放性非常好。CORBA的缺點是龐大而復(fù)雜,并且技術(shù)和標準的更新相對較慢,COBRA規(guī)范從1.0升級到2.0所花的時間非常短,而再往上的版本的發(fā)布就相對十分緩慢了。在具體的應(yīng)用中使用不是很多。

Tongweb及中間件技術(shù)培訓(xùn)三、當前主要的中間件技術(shù)支持平臺

2)Sun的J2EE

為了推動基于Java的服務(wù)器端應(yīng)用開發(fā),Sun于是在1999年底推出了Java2技術(shù)及相關(guān)的J2EE規(guī)范,J2EE的目標是:提供平臺無關(guān)的、可移植的、支持并發(fā)訪問和安全的,完全基于Java的開發(fā)服務(wù)器端中間件的標準。

在J2EE中,Sun給出了完整的基于Java語言開發(fā)面向企業(yè)分布應(yīng)用規(guī)范,其中,在分布式互操作協(xié)議上,J2EE同時支持RMI和IIOP,而在服務(wù)器端分布式應(yīng)用的構(gòu)造形式,則包括了JavaServlet、JSP(JavaServerPage)、EJB等多種形式,以支持不同的業(yè)務(wù)需求,而且Java應(yīng)用程序具有“Writeonce,runanywhere”的特性,使得J2EE技術(shù)在發(fā)布計算領(lǐng)域得到了快速發(fā)展。

J2EE簡化了構(gòu)件可伸縮的、其于構(gòu)件服務(wù)器端應(yīng)用的復(fù)雜度,雖然DNA2000也一樣,但最大的區(qū)別是DNA2000是一個產(chǎn)品,J2EE是一個規(guī)范,不同的廠家可以實現(xiàn)自己的符合J2EE規(guī)范的產(chǎn)品,J2EE規(guī)范,是眾多廠家參與制定的,它不為Sun所獨有,而且其支持跨平臺的開發(fā),目前許多大的分布計算平臺廠商都公開支持與J2EE兼容技術(shù)。

Tongweb及中間件技術(shù)培訓(xùn)三、當前主要的中間件技術(shù)支持平臺

從Internet技術(shù)應(yīng)用的角度,EJB和Servlet,JSP一起成為新一代應(yīng)用服務(wù)器的技術(shù)標準,EJB中的Bean可以分為會話Bean和實體Bean,前者維護會話,后者處理事務(wù),現(xiàn)在Servlet負責與客戶端通信,訪問EJB,并把結(jié)果通過JSP產(chǎn)生頁面?zhèn)骰乜蛻舳恕?/p>

J2EE的優(yōu)點是,服務(wù)器市場的主流還是大型機和UNIX平臺,這意味著以Java開發(fā)構(gòu)件,能夠做到"Writeonce,runanywhere",開發(fā)的應(yīng)用可以配置到包括Windows平臺在內(nèi)的任何服務(wù)器端環(huán)境中去。

Tongweb及中間件技術(shù)培訓(xùn)三、當前主要的中間件技術(shù)支持平臺

3)MicrosoftDNA2000

MicrosoftDNA2000(DistributedinterNetApplications)是Microsoft在推出Windows2000系列操作系統(tǒng)平臺基礎(chǔ)上,在擴展了分布計算模型,以及改造BackOffice系列服務(wù)器端分布計算產(chǎn)品后發(fā)布的新的分布計算體系結(jié)構(gòu)和規(guī)范。

在服務(wù)器端,DNA2000提供了ASP、COM、Cluster等的應(yīng)用支持。目前,DNA2000在技術(shù)結(jié)構(gòu)上有著巨大的優(yōu)越性。一方面,由于Microsoft是操作系統(tǒng)平臺廠商,因此DNA2000技術(shù)得到了底層操作系統(tǒng)平臺的強大支持;另一方面,由于Microsoft的操作系統(tǒng)平臺應(yīng)用廣泛,支持該系統(tǒng)平臺的應(yīng)用開發(fā)廠商數(shù)目眾多,因此在實際應(yīng)用中,DNA2000得到了眾多應(yīng)用開發(fā)商的采用和支持。

DNA2000融合了當今最先進的分布計算理論和思想,如事務(wù)處理、可伸縮性、異步消息隊列、集群等內(nèi)容。DNA使得開發(fā)可以基于Microsoft平臺的服務(wù)器構(gòu)件應(yīng)用,其中,如數(shù)據(jù)庫事務(wù)服務(wù)、異步通訊服務(wù)和安全服務(wù)等,都由底層的分布對象系統(tǒng)提供。

Tongweb及中間件技術(shù)培訓(xùn)四、當前主流的中間件技術(shù)的對比分析

可擴展性:集成框架必須是可擴展的,能夠協(xié)調(diào)不同的設(shè)計模式和實現(xiàn)策略,可以根據(jù)企業(yè)計算的需求進行裁剪,并能迅速反應(yīng)市場的變化和技術(shù)的發(fā)展趨勢。通過保證當前應(yīng)用的可重用性,最大程度地保護企業(yè)的投資。

中間件技術(shù)——

對象請求代理(ORB)詳細說明一、ORB結(jié)構(gòu)ORB是一個中間件(middleware),它可以建立對象之間的client/server關(guān)系。通過ORB,一個client可以透明的引用同一臺機器上或網(wǎng)絡(luò)上的一個server對象的方法。ORB解釋該調(diào)用并負責查找一個實現(xiàn)該請求的對象,找到后,把參數(shù)傳給該對象,調(diào)用它的方法,最后返回結(jié)果。client并不清楚該對象的位置,它的編程語言,它的操作系統(tǒng)以及其它不是對象接口的系統(tǒng)信息。ORB能實現(xiàn)分布環(huán)境中位于不同機器上的應(yīng)用之間的互操作以及多對象系統(tǒng)之間的無縫連接。在傳統(tǒng)的client/server)應(yīng)用中,開發(fā)者使用自己設(shè)計的標準或通用標準來定義設(shè)備之間的協(xié)議。協(xié)議定義與實現(xiàn)的語言、網(wǎng)絡(luò)傳輸及其它因素有關(guān)。ORB簡化了這一過程,它使用IDL來定義應(yīng)用接口之間的協(xié)議。ORB允許程序員選擇通用操作系統(tǒng),運行環(huán)境和編程語言。更重要的是,它能集成現(xiàn)存元素。

對象請求代理(ORB)詳細說明一、ORB結(jié)構(gòu)

圖1通過ORB傳遞請求通過ORB傳遞請求

對象請求代理(ORB)詳細說明一、ORB結(jié)構(gòu)

圖1顯示了一個client向?qū)ο髮崿F(xiàn)發(fā)送一個請求。Client是一個想對對象進行操作的一個實體,對象實體是實現(xiàn)對象的代碼和數(shù)據(jù)。ORB負責根據(jù)一個請求來定位一個對象,安排對象實現(xiàn)準備接受請求,與請求的數(shù)據(jù)通訊。Client的接口與對象的位置完全,實現(xiàn)對象的語言及其它不在對象接口反映出來的方面等無關(guān)。圖2顯示了單個ORB的結(jié)構(gòu)。用斜條文的矩形框表示ORB的接口,箭頭表示調(diào)用ORB或ORB使用接口把信息向上傳遞。

對象請求代理(ORB)詳細說明一、ORB結(jié)構(gòu)

圖2ORB接口結(jié)構(gòu)

對象請求代理(ORB)詳細說明一、ORB結(jié)構(gòu)Clinet使用DynamicInvocationinterface(與目標對象的接口無關(guān))或OMGIDLstub(與目標對象接口有關(guān)的stub)來發(fā)出請求。由于某種原因,Client也可以直接與ORB聯(lián)系。對象實現(xiàn)使用OMGIDL生成的skeleton或動態(tài)skeleton以向上傳送(up-call)的方式接受請求。對象實現(xiàn)也可以調(diào)用ObjectAdapter和ORB??梢杂脙煞N方式來定義對象接口:一是用OMGInterfaceDefinitionLanguage(OMGIDL)來定義接口。該語言根據(jù)可能對對象進行的操作和這些操作使用的參數(shù)來定義對象類型。第二種方法是,把接口(interface)放入InterfaceRepositoryservice中;該服務(wù)把接口中的元素描述成一個對象。任何能實現(xiàn)ORB的軟件中,InterfaceDefinitionLanguage(可能根據(jù)文檔的內(nèi)容而改變)和InterfaceRepository具有相同的作用。一個client要使用ObjectReference完成請求,它必須知道對象的類型的及具體的操作。Client初始化請求有兩種方法,一是通過調(diào)用目標對象的stubroutines,二是動態(tài)的創(chuàng)造請求(如圖3所示)。

對象請求代理(ORB)詳細說明一、ORB結(jié)構(gòu)

圖3Client使用Stub或DynamicInvocationInterface

對象請求代理(ORB)詳細說明一、ORB結(jié)構(gòu)

不論使用Stub還是DynamicInvocationInterface來發(fā)出請求具有相同的語義,信息的接收者不能分辨出該請求是使用哪種方法來傳遞的。ORB確定適當?shù)膶崿F(xiàn)代碼,傳遞參數(shù),通過IDLskeleton或dynamicskeleton(如圖Figure4所示)把控制傳給ObjectImplementation。每一個接口和objectadapter使用不同的Skeletons。為了完成請求,objectimplementation可能通過ObjectAdapter使用來自O(shè)RB的服務(wù)。當完成請求后,控制和輸出結(jié)果返回給client。

圖4ObjectImplementation接受請求

對象請求代理(ORB)詳細說明一、ORB結(jié)構(gòu)

ObjectImplementation選擇使用何種ObjectAdapter。它是根據(jù)ObjectImplementation需要服務(wù)的種類來確定的。圖5顯示了clients和objectimplementations如何使用接口和實現(xiàn)信息。用OMGIDL或InterfaceRepository來定義接口;該定義用于產(chǎn)生clientStubs和objectimplementationSkeletons。

圖5Interface和ImplementationRepositories

對象請求代理(ORB)詳細說明一、ORB結(jié)構(gòu)

在安裝時把objectimplementation信息放入ImplementationRepository中,以備請求使用。

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

CORBAORB結(jié)構(gòu)

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

1)ObjectImplementation(對象實現(xiàn)):它定義了實現(xiàn)一個CORBAIDL接口的操作。它可以用各種語言來寫,如C,C++,Java,Smalltalk和Ada。

典型的ObjectImplementation結(jié)構(gòu)

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

2)Client(客戶):這是一個程序?qū)嶓w,它調(diào)用了某一個對象實現(xiàn)中操作。對調(diào)用這來講,訪問遠程對象server應(yīng)該是透明的。它應(yīng)該和調(diào)用對象中的方法一樣簡單,如,obj->op(args)。

Client只能根據(jù)對象的接口了解對象的邏輯結(jié)構(gòu),雖然,我們一般都把client看作是一個程序或一個進程,但是,知道一個client都是某一個對象有關(guān)的。例如,一個對象的實現(xiàn)可能是其他對象的client。

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

典型的Client結(jié)構(gòu)

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

Client通過語言映射(languagemapping)來使用對象和ORB接口。當這種映射關(guān)系改變時,不需要改變Client。Client不需要了解對象的實現(xiàn)方式,對象適配器及ORB。

3)ObjectRequestBroker(ORB):

ORB提供了一種機制,能實現(xiàn)client請求與目標對象實現(xiàn)之間的透明通信。它使得client請求就象一個本地過程調(diào)用一樣。當一個client引用一個操作,ORB負責找到對象實現(xiàn),如果需要則透明的激活它,然后把該請求遞交給該對象,最后返回應(yīng)答給調(diào)用者。實現(xiàn)時,可以把ORB不作為單個成分,但它只能由它的接口來定義。任何ORB實現(xiàn)方式提供的接口都是可以接受的??梢园呀涌谥械牟僮鞣譃槿悾?/p>

1.對于所有的ORB實現(xiàn)都一樣的操作

2.特定類型對象的操作

3.與對象實現(xiàn)種特定類別有關(guān)的操作

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

不同的ORB有不同的實現(xiàn)方式,但都包括有:IDL編譯器,倉庫(repositories),各種ObjectAdapters,給client提供各種服務(wù)集,具有不同屬性的對象實現(xiàn)等。

現(xiàn)在有各種不同的ORB實現(xiàn)。一個client可以同時訪問兩個由不同ORB實現(xiàn)管理的對象引用(objectreferences)當這兩個ORB需要一起工作時,它們能區(qū)分出各自的對象引用。Client不需要對此負責。ORBCore是ORB的一個組成部分,它提供對象的基本表示和與請求的通信。

有四種不同類型的ORB:

1.Client-andImplementation-residentORB

2.Server-basedORB

3.System-basedORB

4.Library-basedORB

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

ORBInterface:

一個ORB是一個邏輯實體(logicalentity),它可以用各種方法實現(xiàn)(如一個或多個過程,或一個libraries集合)。為了減輕編寫程序的困難,CORBA規(guī)范定義了一個抽象的接口。該接口提供各種幫助函數(shù)。

CORBAIDLstubsandskeletons:

它相當于client、server應(yīng)用程序和ORB之間的“膠水”。由CORBAIDL編譯器自動實現(xiàn)CORBAIDL定義與目標編程語言之間的轉(zhuǎn)換。

使用編譯器可以減少clientstub和serverskeletons之間的潛在矛盾。

DynamicInvocationInterface(DII):

該接口允許client直接調(diào)用ORB所提供得最底層的請求機制。應(yīng)用程序使用DII動態(tài)地把請求傳給對象而不需要IDL接口(包括特定stub)。與IDLstub(它只允許RPC模式的請求)不同,DII也允許clients使用無塊的延遲同步調(diào)用(non-blockingdeferredsynchronous)(發(fā)送操作是獨立的)和單向調(diào)用(send-only)。

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

DynamicSkeletonInterface(DSI):

與client端的DII類似的,位于server端的接口。DSI允許ORB把請求發(fā)送給對象實現(xiàn),該對象實現(xiàn)不包含編譯時所需要的類型。發(fā)出請求的client不知道該實現(xiàn)是使用指定類型的IDLskeletons還是使用動態(tài)的skeletons。

ObjectAdapter:

它幫助ORB把請求傳給對象并激活該對象。更重要的是一個objectadapter總是與一個對象實現(xiàn)(objectimplementations)聯(lián)系的。Objectadapter可以被定義來支持特定的對象實現(xiàn)類型(如OODBobjectadapters用于持續(xù)對象(persistence)而libraryobjectadapters用于非遠程對象)。

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

典型的ObjectAdapter結(jié)構(gòu)

對象請求代理(ORB)詳細說明三、ORB的系統(tǒng)集成

不同對象系統(tǒng)集成的方法

對象請求代理(ORB)詳細說明四、ORB的互操作性

ORB的互操作性提供了種易于理解的、方便的途徑來支持網(wǎng)絡(luò)中的對象,這些對象由多樣的,不同種類的(與CORBA兼容的)ORB管理。由于CORBA中的元素能以很多方式結(jié)合在一起以滿足各種不同的需要,因此取得“interORBability”的方法很方便。

1)支持互操作的元素

能支持互操作的元素有::

1.ORB互操作結(jié)構(gòu)

2.Inter-ORB橋支持(bridgesupport)

3.GeneralandInternetinter-ORBProtocols(GIOPsandIIOPs)

而且,該結(jié)構(gòu)還支持environment-specificinter-ORBprotocols(ESIOP),它能優(yōu)化特定領(lǐng)域如DCE)

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

2)ORB互操作結(jié)構(gòu)

該結(jié)構(gòu)引入了ORB域中immediateandmediatedbridging(直接橋接和間接橋接)這兩個概念。IIOP是廣域網(wǎng)橋接的基礎(chǔ)。而inter-ORB橋接既能用于直接橋接,也能用于“半橋接”,使用半橋接能搭建用于間接橋接。使用這些橋接技術(shù),ORB能互操作,而不需要知道彼此的實現(xiàn)細節(jié),如,使用何種特殊的IPC或協(xié)議(如ESIOP)來實現(xiàn)CORBA規(guī)范。

使用能用IIOP通訊的“半橋接”,兩個或多個ORB能相互橋接在一起。這種方法既能用于單機ORB,也能用于網(wǎng)絡(luò)ORB如ESIOP。IIOP也能用于實現(xiàn)ORB中的內(nèi)部消息機制。

3)Inter-ORBBridgeSupport

互操作結(jié)構(gòu)明確指出ORB中不同域的作用,這些域包括對象引用域(objectreferencedomain),類型域(typedomain),安全域(safetydomain)(如thescopeofaPrincipalidentifier),事物域(transactiondomain)等等。

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

當兩個ORB位于同一個域中,它們能直接通訊,多數(shù)情況下,這是一個很好的方法。但由于各個機構(gòu)需要建造各自控制域,因此,這種方法不常使用。當需要的信息離開它的域時,就必須使用橋接來傳遞信息。橋接的作用是確保信息能完整的從一個ORB映射到另一個ORB。inter-ORB橋接支持也能提供與非CORBA系統(tǒng)(如Microsoft’sComponentObjectModel(COM))之間的互操作。

4)GeneralInter-ORBProtocol(GIOP)

GeneralInter-ORBProtocol(GIOP)元件提供了一個標準傳輸語法(低層數(shù)據(jù)表示方法)和ORB之間通信的信息格式集。GIOP只能用在ORB與ORB之間,而且,只能在符合理想條件的面向連接傳輸協(xié)議中使用。它不需要使用更高一層的RPC機制。這個協(xié)議是簡單的(盡可能簡單,但不是簡單化),可升級的,使用方便。它被設(shè)計為可移動的、高效能的表現(xiàn)、較少依靠其它的低層傳輸協(xié)議。當然,由于不同傳輸使用不同版本的GIOP,它們可能不能直接協(xié)作工作,但它能很容易的連接網(wǎng)絡(luò)域。

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

5)InternetInter-ORBProtocol(IIOP)

InternetInter-ORBProtocol(IIOP)元件指出如何通過TCP/IP連接交換GIOP信息。IIOP為Internet提供了一個標準的協(xié)作工作協(xié)議,它使兼容的ORB能基于現(xiàn)在流行的協(xié)議和產(chǎn)品進行“outofthebox”方式的協(xié)作工作。它也能被用于兩個半橋(half-bridges)之間的協(xié)議。該協(xié)議能用于任何ORB與IP(InternetProtocol)域之間的協(xié)作工作,除非ORB選擇了特殊的協(xié)議。這時,它是TCP/IP環(huán)境下基本的inter-ORB協(xié)議,最普遍的傳輸層。

IIOP與GIOP的關(guān)系就象特特殊語言與OMGIDL之間的關(guān)系;GIOP能被映射到不同層,它能指定協(xié)議。就象IDL不能見招完整的程序一樣,GIOP本身也不能提供完整的協(xié)作工作。IIOP和不同傳輸層上的其它相似映射,實現(xiàn)抽象的GIOP定義,如圖所示。

對象請求代理(ORB)詳細說明三、ORB的系統(tǒng)集成

Inter-ORBProtocol關(guān)系

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

6)Environment-SpecificInter-ORBProtocols(ESIOPs)

它為使用Environment-SpecificInter-ORBProtocols(ESIOPs)的條件提出了解決方案。Suchprotocolswouldbeusedfor“outofthebox”interoperationatusersiteswhereaparticularnetworkingordistributingcomputinginfrastructureisalreadyingeneraluse.Becauseoftheopportunitytoleverageandbuildonfacilitiesprovidedbythespecificenvironment,ESIOPsmightsupportspecializedcapabilitiessuchasthoserelatingtosecurityandadministration.WhileESIOPsmaybeoptimizedforparticularenvironments,allESIOPspecificationswillbeexpectedtoconformtothegeneralORBinteroperabilityarchitectureconventionstoenableeasybridging.Theinter-ORBbridgesupportenablesbridgestobebuiltbetweenORBdomainsthatusetheIIOPandORBdomainsthatuseaparticularESIOP.

對象請求代理(ORB)詳細說明三、ORB的系統(tǒng)集成7)Domain(域)

域把一個系統(tǒng)中的元素按照某種特征分成幾個部分。在本結(jié)構(gòu)中,域是一個范圍,一個對象的集合,對象是域的成員,這些成員有共同的特征??梢园延蚩醋魇且粋€對象,它本生也可能是其它域的一個成員。

各種類型的域

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件

CORBA中的域分為以下幾個部分:

Referencingdomain–對象引用范圍

Representationdomain–信息傳輸語法和協(xié)議范圍

Networkaddressingdomain–網(wǎng)絡(luò)地址范圍

Networkconnectivitydomain–可能的網(wǎng)絡(luò)信息范圍

Securitydomain–特殊安全策略

Typedomain–特殊標識符范圍

Transactiondomain–特定事物服務(wù)范圍

有兩種方式使用域:一是嵌入,一個域包括在另一個域中;二是聯(lián)合,兩個域聯(lián)合起來使用。當兩個域的邊界上發(fā)生交互作用時,就需要使用一種映射機制(如橋接)在邊界處傳遞相關(guān)元素。這里有兩種方法,一是間接橋接(mediatedbridging),一是直接橋接(immediatebridging)。

對象請求代理(ORB)詳細說明三、ORB的系統(tǒng)集成

兩種橋接技術(shù),都用于兩個域之間

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件7.1MediatedBridging

使用間接橋接時,在每一個域的邊界上,以一種協(xié)商的、通用的格式來傳遞與域有關(guān)的元素??梢詮囊韵聨讉€方面來觀察間接橋接:

(1)公共格式的應(yīng)用范圍可能與兩個ORB/域的私下約定不同。

(2)可能有多個公共格式,每一種格式對應(yīng)一個應(yīng)用目的。

(3)如果有多個可供選擇的公共格式,選擇方式可以分為兩種,一是靜態(tài)選擇(兩個ORB開發(fā)商之間),二是動態(tài)選擇(每一個對象各自選擇)。

(4)這種方法隨著嵌入式編譯(與stub相比)或普通的庫代碼(如加密例程)的不同,它的格式不同

7.2ImmediateBridging

使用直接橋接時,在每一個域的邊界上,相關(guān)的元素直接從一個域的內(nèi)部格式轉(zhuǎn)到另一個域的內(nèi)部格式。

可以從以下幾個方面來觀察間接橋接:

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件1)這種方法有被優(yōu)化的可能性(這時交互不通過第三方)但它是以犧牲靈活性和通用性來取得的。

2)一般只當需要在與邊界傳遞純管理(不交換技術(shù))才使用這種方法。例如,當需要在兩個相似ORB的安全管理域傳遞消息時,就不需要使用通用的間接標準。

綜上所述,當兩個ORB/域使用私有機制時,就比較難于區(qū)分這兩種方法。

7.3Inter-DomainFunctionality的位置

從邏輯上講,不論是間接橋接還是直接橋接,只要是域間橋(inter-domainbridge),它在兩個域中都有元素。但是,一方面,域可以跨越ORB邊界,而ORB也可以跨越機器和系統(tǒng)邊界;另一方面,一個機器或一個進程可能跨越多個ORB。

對象請求代理(ORB)詳細說明二、ORB結(jié)構(gòu)中的主要構(gòu)件從工程學(xué)的角度來講,這意味著一個域間橋中的元素根據(jù)ORB或系統(tǒng)的不同而采取分散或同處的分布方式。例如,如果一個ORB包括兩個安全域,那么,域間橋就可以在ORB的內(nèi)部實現(xiàn)。同樣的,也可能在一個進程或系統(tǒng)中實現(xiàn)兩個ORB或域間的橋。從工程學(xué)來講,這種情況下,域間橋是有限的,它局限于單個系統(tǒng)或進程。如果所有的橋都用這種方式實現(xiàn),那么系統(tǒng)或進程之間的協(xié)作只能在單個域或ORB中發(fā)生。7.4橋接級別(BridgingLevel)

橋接可以在ORB級或更高以及實現(xiàn)。它們分別叫做嵌入(in-line)級橋接和請求級(request-level)橋接。請求級橋接使用CORBAAPI,包括使用DynamicSkeletonInterface,來接受和流出(issue)請求。但是,也存在“implicitcontext”類,它與某些引用聯(lián)合起來,持有如事物信息和安全信息等的ORB

溫馨提示

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

評論

0/150

提交評論