摘 要:分布式對象中間件技術是為了解決分布計算和軟件復用過程中存在的異構問題而提出的。,EJB,COM/是目前主要的3大中間件技術,他們都有自己的優(yōu)勢應用領域,和的結合在解決 WWW應用方面具有無比的優(yōu)勢。本文介紹了基于/ 的 WWW信息查詢系統(tǒng)開發(fā)的一般方法。
關鍵詞:中間件;分布式對象中間件;CORBA; ?
隨著計算機技術,尤其是技術的發(fā)展,跨地域、跨企業(yè)、跨業(yè)務的計算機應用越來越廣泛。但是不同硬件平臺、網絡環(huán)境、數據庫等異質性因素影響了計算機系統(tǒng)集成應用。應用開發(fā)過程中大約有70%的時間和精力用于解決與業(yè)務邏輯沒有直接關系的跨平臺難題,因此,有必要將分布式應用所面臨的共性問題進行提煉,抽象形成一個可復用的軟件部件—中間件—供應用軟件使用。過去中間件系統(tǒng)如DCE(Distributed Computing Environment)是面向過程的軟件復用模式體系結構,隨著面向對象技術的發(fā)展和客戶/服務器模式的流行,分布式對象中間件技術已成為分布計算的主流技術。本文介紹了3大分布式對象中間件技術及基于CORBA/的WWW系統(tǒng)開發(fā)的一般過程。?
1中間件技術
中間件是一種獨立的系統(tǒng)軟件或服務程序,分布式應用借助這種軟件可以在不同技術之間共享資源,中間件位于客戶機服務器的操作系統(tǒng)之上,管理計算資源和網絡通訊。中間件的目標是要解決系統(tǒng)的互連和互操作,他的核心是解決名字服務、安全控制、并發(fā)控制、可靠性保證、效率保證等方面的問題,要實現互聯還要解決支持各種通訊協議、各種通訊服務模式、傳播各種數據內容、數據格式翻譯、流量控制、數據加密、數據壓縮等。按照IDC的分類方法,中間件分為6類:終端仿真/屏幕轉換中間件、數據訪問中間件、遠程過程調用中間件、消息中間件、交易中間件和分布式對象中間件。
傳統(tǒng)的對象技術通過封裝、繼承及多態(tài)性提供良好的代碼重用功能。但是,這些對象只存在于一個程序中,外界并不知道他們的存在,也無法訪問他們。分布式對象中間件就是要解決這些問題,他提供一個標準構件框架,能使不同廠家的軟件通過不同地址空間、網絡和操作系統(tǒng)進行交互訪問。對象技術的優(yōu)勢和分布式對象中間件的標準化,促使對象中間件功能最終將涵蓋幾類中間件的功能,從而成為中間件產品的主流。
?
2分布式對象中間件技術?
2.1公共對象請求代理體系結構CORBA
CORBA由對象管理組織OMG于1991年提出,其旨在將錯綜復雜的網絡編程從單獨的組件和應用中移走。ORB是CORBA平臺的核心,他提供了客戶—對象間實現透明通信的方法,當客戶激活一個方法時,ORB負責定位對象實現并透明激活將請求傳輸給對象實現并返回結果。IDL是不依賴于具體編程語言和計算平臺的接口語言,用來定義對象接口,IDL對描述跨平臺,跨語言應用程序提供一個公共的表示方式,IDL編譯器可根據用戶需要將IDL定義轉化為應用程序語言,如C++,等。IDL樁為客戶提供了靜態(tài)調用對象方式,IDL構架為客戶提供了靜態(tài)實現方式,他們由IDL編譯器產生,作為具有調用功能的子例程分別在客戶方和服務器方使用。而動態(tài)調用接口DII( Invocation )和動態(tài)構架接口DSI( Skeleton )提供了動態(tài)調用方式和動態(tài)實現方式。在ORB核心和對象實現之間還有對象適配器,他負責服務對象的注冊、對象引用的創(chuàng)建和解釋、對象實現的激活和去活以及客戶請求的分發(fā)等。ORB之間的互操作主要是由ORB橋,( InterORB Protocol)和EISP(Environment Specific InterORB Protocol)等互操作協議來規(guī)定。是建立在TCP協議之上的基于連接的協議。
2.2分布組件對象模式
是Microsoft與業(yè)界廠商合作提出的一種分布構件對象模型。DCOM起源于動態(tài)數據交換DDE技術。通過剪切/粘貼(cut/)實現2個應用程序之間共享數據的動態(tài)交換。對象連接和嵌入OLE就是從DDE引伸而來的,隨后Microsoft引入了構件對象模型COM,形成了COM對象之間實現互操作的二進制標準。COM規(guī)定了對象模型和編程要求,使COM對象可以與對象相互操作。DCOM出現是為了彌補COM在支持遠程組件方面的不足。他為分布在網絡不同節(jié)點的2個COM組件提供了互操作的基礎結構。
將COM,DCOM,OLE及這些服務結合起來形成了微軟創(chuàng)造的分布式網絡互聯體系結構DNA。
2.3EJB企業(yè)JAVA平臺
近年來,Sun Microsystem公司提出的基于JAVABean組件技術的EJB及 JAVA平臺,JAVABean是JAVA向組件方面的發(fā)展,組件的單位叫Bean或JAVABean,這種組件模式是JAVA編寫的可移植的,平臺獨立的組件模式,在分布計算模型中,可用來構建客戶端程序。EJB于1998年提出,是服務器方的組件模式,定義了開發(fā)和布署可重用的JAVA服務器組件模式和API規(guī)范。JAVABeans和EJB體系結構之間,一個最明顯的區(qū)別是事件處理。JAVABean是為緊耦合的桌面環(huán)境而設計,使用局部事件模式,不利于系統(tǒng)的集成。EJB體系結構對分布式的事件提供靈活的支持,允許遠程客戶通過遠程方法調用API訪問服務器功能。適應分布式體系結構中的多層應用。EJB還不是一個完整的平臺,其提供服務也有限,于是在EJB的基礎上,提出能適應廣泛企業(yè)計算的 JAVA平臺技術。 JAVA平臺包括EJB ,JSP,Servlet,JDBC等組件。
上述3種中間件各有特點,CORBA可以跨各種操作平臺,包括Windows OS ,甚至支持DOS操作系統(tǒng)而DCOM只支持Win 32; 同時CORBA跨多種語言,支持C++,Smalltalk,JAVA,,Ada等語言。DCOM主要以桌面Wintel同質平臺對象跨應用使用見長,支持帶有指針結構的語言如C,C++而不支持JAVA語言。Enterprise JAVA在Internet環(huán)境下集組件模式、跨異構平臺、兼具事務處理、數據庫連接等許多基礎結構服務,但僅限于支持JAVA語言。因此我們利用JAVA語言具有簡單、面向對象、分布式、解釋型、健壯、安全、可移植性的特點結合CORBA的跨異構平臺的特性實現對象的重用。
?
3CORBA/JAVA的WWW應用系統(tǒng)
我們設計的系統(tǒng)是要實現以下目標:在客戶端用瀏覽器下載服務器上小程序Applet,通過Java虛擬機和CORBA的ORB實現對遠端服務對象的調用,并通過服務對象訪問遠端數據庫,最后返回查詢結果并在瀏覽器上顯示。其系統(tǒng)結構圖如圖1所示。
3.1程序設計與實現
該系統(tǒng)用Borlard Jbuilder 5.0進行開發(fā), Jbuilder 5.0提供了JAVA語言的CORBA開發(fā)支持,VisiBroker for JAVA是一個內置于Jbuild 3.0 IDE的開發(fā)工具,可以用來建立、管理和開發(fā)分布式的跨多種平臺的開放的、易用的、可交互的 CORBA Java應用程序。這里開發(fā)一個可以訪問MS SQL 數據庫3層C/S模式應用。在這個系統(tǒng)中要用到定義JDBC API的.sql包,該包定義了JDBC所有的類,接口和方法。主要的類和接口有Manager—處理驅動程序的裝入;.sql.—驅動程序接口;.sql.Statement為sql語句提供一個容器,java.sql.Connection表示到特定數據的連接。
(1)定義CORBA objects和編譯IDL接口
首先定義一個接口模塊Query?idl,該模塊包含的DataQuery接口提供了一個連接數據庫并返回查詢結果的方法dbQuery( ):
用visiBroker IDL編譯器(idl2java)編譯Query?idl產生一個JAVA接口DataQuery.java和其他必需的JAVA文件。其中_st_DataQuery.java是客戶端的stub,_sk_DataQueryImplBase.java是服務器端的骨架(skeleton),另外還包括為傳遞參數提供支持的DataQueryHolder.java和提供輔助功能DataQueryHelper.java。
(2) CORBA接口的實現
對象實現類必須結合編譯產生的骨架來完成,類DataQueryImpl.java需要繼承由 IDL編譯產生的骨架_sk_DataQueryImplBase類。其中dbQuery( ) 通過JAVA.JDBC.API實現連接數據庫并返回查詢結果:
(3)創(chuàng)建服務端應用程序
類?java服務程序負責下列任務:初始化ORB和BOA,建立服務對象DataQueryImpl,通知對象可用及準備接受請求。
(4)創(chuàng)建客戶端程序
實現步驟:初始化CORBA環(huán)境,查找定位到DataQuery對象,然后調用dbquery( )方法。
最后編譯服務器端和客戶端程序,設置好程序中用到的數據源,啟動提供對象查找服務的. Agent和服務端應用程序.java,最后在客戶端IE 地址欄健入:http://
?
4結語
中間件屏蔽了操作系統(tǒng)和網絡協議的差異,為應用層軟件提供了多種通訊機制和統(tǒng)一的應用平臺,簡化了軟件開發(fā)的復雜度,提高了開發(fā)的效率。CORBA已成為軟件開發(fā)的主流。CORBA獨立于網絡協議,獨立于編程語言,獨立于軟硬件平臺,是目前最有生命力的跨平臺分布計算技術。JAVA由于其健壯性,安全性,移動性和跨平臺及“一次編寫,各處運行”的優(yōu)點,使其成為WWW網上開發(fā)最好的語言。毫無疑問,JAVA和CORBA的結合將會把分布計算和軟件復用推向新的階段。