摘 要:本文以XML和組件技術在異構系統集成中的應用為研究對象,探討了異構網絡環境下分布式對象互操作存在的問題,分析了基于XML的異構系統集成框架體系結構,研究了基于XML和組件的異構系統集成的關鍵技術,相信對從事相關工作的同行有著重要的參考價值和借鑒意義。
關鍵詞:XML 組件 異構 集成 COM
中圖分類號:TP3文獻標識碼:A文章編號:1674-098X(2011)01(b)-0016-02
1 引言
隨著面向對象技術在分布式計算中的應用,分布對象技術已成為分布異構環境下各類應用系統集成的主要手段。目前存在三大主流分布對象技術:OMG的CORBA,Microsoft的DCOM和基于Java的EJB。這些中間件本身是為了屏蔽諸如硬件體系結構、操作系統平臺和不同網絡結構的異構性,并提供了支持分布式應用的相應服務,但基于不同中間件體系構造的分布式計算環境,由于底層中間件部件往往是不兼容的,形成了新的更高層次上的異構問題——分布式中間件的異構性。為擴展分布式計算環境,進行大規模系統集成。本文通過分析現有分布式中間件體系結構中存在的問題,提出了一種基于XML的異構系統集成框架,該集成框架通過對不同的類型的服務組件采用不同的調用機制,能夠集成不同的服務組件到一個統一的平臺中,而無需改變底層應用系統,簡化了分布式對象系統之間的互操作問題。
2 異構網絡環境下分布式對象互操作中存在的問題
分布式計算環境的顯著特征是異構性。在異構的網絡環境下,如何有效地實現分布式計算,要解決的關鍵問題是分布式計算對象的互操作,解決的主要方法就是采用中間件技術。但由于分布式中間件呈現了復雜的應用,因此它們之間的互操作一直采用專用的具體開發。這是費時的,維護也較困難。解決分布式中間件異構的困難在于必須存在訪問不同對象
組件的訪問方式,同時這些組件必須能被模擬為統一的服務組件。國際上主要的方案是采用一個適配器來完成。適配器主要是采用不同協議的請求到中間模式之間的模式轉換程序。考慮到由于各組件調用方式和通信協議的不同,我們不采用統一的適配器設計,而是對不同的服務組件設計不同的適配方法,有效減小系統設計的復雜性,提高集成的可靠性。
3 基于XML的異構系統集成框架體系結構
XSware的目的是支持多種構件模型,提供一個開放的環境,用戶可以根據自己的需要選擇自己相應的構件技術來構造分布式應用。當需要擴展或改善應用的功能時,只需通過配置增加或替換相應構件即可。這樣,XSware能克服目前分布式體系結構與服務具體位置相關、緊密耦合等方面的局限性。我們設計的XSware的體系結構和XSware內部結構如圖1和圖2所示。
XSware處于業務系統和用戶之間的中間層。通過在兩者之間增加一個基于XML的中間件,就可以原封不動地保持原有的業務系統。中間件和業務系統之間是相對獨立的,如果XML的格式有改變,那么僅稍加修改中間件軟件就可以了,甚至僅僅對中間件進行一些相應的配置就可以實現,這樣不但可以延長業務系統的生存期,而且能減少開支。XSware與兩端的通信主要采用SOAP傳輸,由于SOAP沒有綁定在任何特定的實現協議上,所以在中間件和應用系統之間可以使用任何的可靠的數據傳輸協議,使得大范圍的分布式計算成為可能。XSware為前端應用開發者提供了描述和服務配置接口,以及編程API,API包括SOAP請求的提交,SOAP消息的轉換和發送。為后端組件模型和數據層提供相應的Adapter和XML-DB聯接。從圖2中我們可以清楚地看到XSware的內部結構。
XSware由Web服務器(HTTP Server, SMTP Server,MQ Server)、XML服務請求轉換器、SOAP引摯(RPCRouterServlet)及服務調用適配器Adapter組成。
1)Web服務器通過標準Web協議,例如HTTP傳送XML文檔來實現通信。
2)XML服務請求轉換器完成將客戶的請求轉換成SOAP消息。
3)服務調用適配器Adapter的主要作用是:
a)定位SOAP服務的實現體;
b)裝載服務實現體;
c)把調用的請求參數轉換為服務的實現體能接受的形式,并把調用包裝成SOAP消息;
d)調用服務。
Adapter是SOAP引擎(即RPCRouterServlet)和服務實現之間的一層抽象,它將所有的服務執行過程抽象為“定位”Locate和“激發”Call兩個方法,以標準的接口連接不同語言、不同機制的服務實現。當SOAP服務請求到達時,SOAP引擎將請求轉發給相應的Adapter,由Adapter負責真正調用服務,然后Adapter把調用結果包裝好,返回給SOAP引擎。
4 基于XML和組件集成的關鍵技術實現
4.1 CORBA Adapter的實現
為了實現SOAP信息能被CORBA接受,需要一個橋接系統來執行SOAP域到IIOP域的請求轉換(包括將IIOP應答轉換為SOAP應答),應完成如下功能:
1)訪問端點與目標標識映射
橋接系統需要負責將對某個服務的SOAP請求分發到正確的CORBA對象上,即服務ID與對象引用的映射。
2)操作映射
需將服務的方法名映射到CORBA對象的操作名。
3)數據類型映射
CORBA IDL提供了豐富的數據類型,相比之下。SOAP及XMLSchema規范提供的數據類型要簡單得多。為實現SOAP域到CORBA域的請求翻譯,需要在部署時刻使用適當的XMLSchema定義參數類型;在運行時刻將SOAP請求中的XML數據類型轉換為IDL類型,并將IIOP應答消息中的IDL類型映射為XML類型。
CORBA Adapter是SOAP引擎與CORBA對象之間的連接器,它的功能是:
(1)確定請求目標對象的IOR;
(2)將SOAP請求轉換為CORBA調用。
CORBA Adapter具有雙重身份:從SOAP引擎角度看,它是服務的執行者,SOAP請求在CORBA Adapter中執行并返回結果;另一方面,它作為CORBA客戶端調用遠端的CORBA對象實現來執行服務,所以CORBA Adapter之中應包含一個客戶端ORB。CORBA Adapter另一個隱含的功能是,構造激發CORBA調用所需的CORBA類型參數,并將CORBA調用的返回值轉換為SOAP編解碼引擎所能識別的Java類型。
4.2 EJB Adapter的實現
在J2EE應用中,所有的計算邏輯都由EJB來提供,Servlet作為控制器來封裝和轉發請求和響應,而JSP則負責用戶界面,為在XSware客戶端能通過SOAP協議來訪問EJB,就需要能發布EJIB和訪問EJB組件服務,需提供EJB Adapter。用戶在配置文件里提供所需訪問EJB的所有信息,SOAP服務器就可把用戶發送的SOAP請求轉化為RMI/IIOP請求發送到EJB服務器,然后把從遠程EJB方法返回的對象封裝成SOAP消息,返回給調用用戶。
所有Java對象都需要正確的序列化為一段XML文檔。而SOAP消息都將反序列化為Java對象來做處理。這里,用一個類型映射表來指明Java對象和XML類型的對應,并指示序列化和反序列化程序指針。表的每個記錄包含:描述XML風格的URI,XML元素的名字,對應的Java類,序列化器類名和反序列化器類名。
4.3 COM Adapter的實現
對COM構件同樣首先要用XML提供配置文件,說明調用COM構件所需的所有信息,然后需要完成:(1)目標標識映射。將對某個服務的SOAP請求分發到正確的COM對象上,即服務ID與COM對象標識CLSID的映射。為完成此映射需建立與COM注冊表的對應。(2)操作映射。將服務的方法名映射到COM對象的操作名。(3)數據類型映射。像CORBA Adapter中一樣,將COM PRC消息中的IDL類型映射為XML類型。關于古物查詢的COM構件的服務部署描述符的XML形式
5 結語
分布式中間件的異構性是伴隨大量中間件技術出現的更高層次上的異構問題。這一問題的研究還處于起步階段。本文提出的集成框架XSware通過為每一種中間件設計專用Adapter,解決了應用系統整合過程中各種構件的互操作問題。下一步的工作是如何利用XML結構化描述的優點使得消息傳送成為自形成的。
參考文獻
[1]易平,等.“三種主流中間件之比較”[J].科技資訊,2009年12期.
[2]高明,等.“基于XML實現異構數據源的聯合使用”[J].科技創新導報,Vo.l29,No.3,2008:83~84.
[3]魚濱,華慶一.“基于CORBA的分布式異構計算環境的分析與實踐”[J].科技資訊,2004,2.