熊志剛,李 晶,蘇振揚,彭衛(wèi)平
(武漢大學a.計算機學院;b.動力與機械學院,武漢430072)
一種DDS與ESB通信轉(zhuǎn)換的適配器模型
熊志剛a,李 晶a,蘇振揚a,彭衛(wèi)平b
(武漢大學a.計算機學院;b.動力與機械學院,武漢430072)
隨著面向服務架構(gòu)(SOA)的廣泛應用,大量采用不同通信技術(shù)的遺留系統(tǒng)以服務的方式接入企業(yè)服務總線(ESB)。在實時性要求較高的領域,其信息系統(tǒng)一般采用數(shù)據(jù)分發(fā)服務(DDS)通信技術(shù),將它們接入ESB總線時,必須面對DDS總線與ESB總線間信息通信轉(zhuǎn)換的問題。為此,設計一種通信轉(zhuǎn)換適配器模型,該模型是一種三層體系結(jié)構(gòu),包括SOAP消息收發(fā)層、消息與報文映射轉(zhuǎn)換層及DDS報文發(fā)布訂閱層。根據(jù)消息與報文名稱,遍歷Mapping映射文件,根據(jù)映射規(guī)則進行消息與報文的相互轉(zhuǎn)換,再遍歷消息或報文的信息模型定義文件,將轉(zhuǎn)換后的結(jié)果解析成通信所用的標準格式,用于通信交互。構(gòu)建一個ESB與DDS的混合通信系統(tǒng)用于測試該適配器模型性能,實驗結(jié)果表明,其信息轉(zhuǎn)換耗時低于100 ms,滿足實時性要求。
企業(yè)服務總線;數(shù)據(jù)分發(fā)服務;適配器;消息隊列;消息映射;轉(zhuǎn)換;解析
隨著信息技術(shù)的不斷發(fā)展,各行各業(yè)的信息化、自動化程度不斷提高,企業(yè)內(nèi)部各信息系統(tǒng)間,企業(yè)與企業(yè)之間就存在大量的數(shù)據(jù)交互、資源共享問題。原有的一些遺留系統(tǒng)成為信息孤島,為實現(xiàn)對新系統(tǒng)及原有遺留系統(tǒng)的信息共享資源整合,提出一種基于面向服務架構(gòu)(Service-oriented Architecture,SOA)的企業(yè)應用集成[1]。而企業(yè)服務總線(Enter-prise Service Bus,ESB)作為SOA架構(gòu)的核心技術(shù),是一個面向消息的、分布式的、基于標準的、具有智能性路由的系統(tǒng)整合平臺[2]。ESB使用松耦合的方式,實現(xiàn)服務間的通信連接,成為各類應用系統(tǒng)間的通信橋梁[3]。任何獨立系統(tǒng)都作為一個服務連接在ESB總線上,并能實現(xiàn)即插即用[4]。ESB通過預定義的接口和契約聯(lián)系異構(gòu)的組件,通過基于SOAP標準的消息在各服務間進行信息通信,通過UDDI標準實現(xiàn)服務的動態(tài)發(fā)現(xiàn),使用分布式管理功能、Web服務池進行智能查找適用的服務,使用開放標準的、非專有的技術(shù)實現(xiàn)跨越多種平臺進行互操作[5]。
由于系統(tǒng)應用需求的不同,以及信息技術(shù)的不斷發(fā)展更新,因此各遺留系統(tǒng)使用的通信技術(shù)也不盡相同。比如航空航天、海洋船舶等行業(yè),對信息通信的實時性要求較高,它們的應用系統(tǒng)通常都采用了數(shù)據(jù)分發(fā)服務(Data Distribution Service,DDS)作為系統(tǒng)通信技術(shù)[6]。DDS是一種采用實時發(fā)布——訂閱協(xié)議的分布式系統(tǒng)標準,此標準提供了一種與語言、系統(tǒng)平臺及位置無關的通用應用層接口,為分布式計算環(huán)境提供了一種以數(shù)據(jù)為中心的通信規(guī)范。該模式定義了2種基本角色,發(fā)布者:創(chuàng)建數(shù)據(jù),給數(shù)據(jù)命名(即主題)并發(fā)布該數(shù)據(jù);訂閱者:根據(jù)自身需求訂閱所需服務,當訂閱服務的數(shù)據(jù)產(chǎn)生變化時,接收改變后的數(shù)據(jù)。通過發(fā)布訂閱的形式,實現(xiàn)信息交互共享[7]。因此,當將一個采用DDS通信技術(shù)的系統(tǒng),作為一個服務接入到ESB總線時,必然要面對SOAP消息與DDS報文間的信息轉(zhuǎn)換問題。針對該問題,本文設計一種通信轉(zhuǎn)換適配器作為ESB總線與DDS總線間連接的橋梁,實現(xiàn)SOAP消息與DDS報文間的信息轉(zhuǎn)換。
為對DDS與ESB通信轉(zhuǎn)換適配器模型進行研究,本文設計一個基于ESB與DDS混合通信的SOA框架系統(tǒng)[8],通過運行該系統(tǒng)來驗證適配器模型的功能及處理性能。該系統(tǒng)主要由三部分組成[9],前臺的客戶端顯控界面,用于發(fā)布服務請求及顯示服務結(jié)果;中間的通信適配器,完成SOAP消息與DDS報文的相互轉(zhuǎn)換分發(fā)功能;以及后臺的DDS服務端,實現(xiàn)某種應用服務功能。其中, ESB總線部分使用IBM公司的WebSphere Message Broker來控制消息的路由轉(zhuǎn)發(fā)[10],而DDS通信部分則采用了RTI公司的DDS網(wǎng)絡通信中間件。信息流程見圖1。
圖1 ESB與DDS通信系統(tǒng)信息流程
根據(jù)實時與非實時應用分開的原則,將實時應用與非實時應用分別集成在DDS總線與ESB總線上,適配器作為雙方通信轉(zhuǎn)換的橋梁,橋接在2條總線之間。適配器模型中通過消息流存取發(fā)送的SOAP消息,通過DDS發(fā)布訂閱管理器收發(fā)DDS報文。其中消息流以服務的方式發(fā)布在ESB總線上,消息流接收ESB總線上的SOAP消息后,存入一個消息隊列(MQ)中,適配器則調(diào)用MQ的API提取SOAP消息。另一方面對于DDS總線而言,適配器被當作DDS的應用節(jié)點,其需要訂閱與ESB總線端通信的所有DDS服務的TOPIC。
啟動仿真系統(tǒng)后,客戶端顯控界面發(fā)布自己的服務請求,以SOAP消息的形式封裝請求,并將該消息發(fā)送給ESB總線上的某個消息流。消息流將收到的SOAP消息存入到消息隊列Adapterin中,然后消息流調(diào)用適配器模型。適配器模型通過MQ的應用接口從Adapterin隊列中取出消息,去除用于封裝SOAP消息的消息頭,提取出該消息有效數(shù)據(jù),從消息體中找到UnitID元素,根據(jù)該UnitID及信息映射文件的定義,轉(zhuǎn)換為對應的DDS報文,交由DDS發(fā)布訂閱管理器發(fā)布該報文。后臺DDS服務端,由于事先已經(jīng)訂閱了該主題,直接獲取該報文并進行相關服務處理后發(fā)布返回的DDS報文,適配器已經(jīng)訂閱了所有主題的服務,當相關主題的數(shù)據(jù)改變后,能及時接收該報文,根據(jù)報文名稱通過mapping文件找到對應的映射規(guī)則,轉(zhuǎn)換為返回的SOAP消息,存入到AdapterOut消息隊列中,然后由消息流提取并發(fā)送回客戶端顯控界面[11]。適配器模型體系結(jié)構(gòu)見圖2。
圖2 適配器體系結(jié)構(gòu)
3.1 ESB消息及DDS報文結(jié)構(gòu)設計
ESB消息由協(xié)議頭與邏輯層次兩部分組成,協(xié)議頭中包含了該消息的基本信息,包括消息屬性、發(fā)方IP地址、收方IP地址、單位標識、單元長度5個數(shù)據(jù)字段。其中UnitID為每個消息的唯一標識符,用于不同消息間的區(qū)分。邏輯層次則包含了該消息的所有有效字段,例如本文中所用到的消息有效字段就包括速度、方位角、里程等信息字段。該消息所有有效字段都是自定義的數(shù)據(jù)結(jié)構(gòu),在esb.xsd信息模型文件中對消息的所有字段類型進行了相關定義[12],該模型文件在后文中將做詳細介紹。在系統(tǒng)應用中,整個ESB消息作為消息體的有效數(shù)據(jù),被封裝在一個SOAP消息中,通過SOAP消息進行信息傳遞。
與此類似,DDS報文也由兩部分構(gòu)成,首先是報文頭,包括了報文的5個基本屬性(報文名稱、關鍵字、域、類型、主題名),其中報文名稱是某一類報文的唯一標示符,而關鍵字則用于同一類型報文之間的區(qū)分符號。同樣的第2部分也是報文的邏輯層次,定義了該報文所要傳遞信息的所有有效字段。本文中的DDS報文有效字段包括速度、方向角、里程等信息字段。邏輯層次中所有有效字段都是自定義數(shù)據(jù)結(jié)構(gòu),每種數(shù)據(jù)結(jié)構(gòu)都在dds.xsd文件中進行了詳細定義,包括該字段的長度、基本類型、基本單位等信息。
3.2 信息模型定義文件
本文設計的適配器進行消息與報文間轉(zhuǎn)換的核心在于,通過mapping映射文件,將對應字段進行替換。替換完成后根據(jù)數(shù)據(jù)結(jié)構(gòu)定義的XSD文件,將報文內(nèi)容解析成DDS自帶的數(shù)據(jù)類型,并按順序?qū)懭胍欢尉彺嬷邪l(fā)布出去。因此,該轉(zhuǎn)換過程中的關鍵在于數(shù)據(jù)模型的建立,接下來重點介紹本文中所用的數(shù)據(jù)模型定義文件。
mapping文件的作用在于定義了SOAP消息及DDS報文之間的映射關系,在mapping根元素下面有多個esbdds子元素,每個子元素定義了一種消息與報文之間的映射關系。該元素主要包含3個部分,第1部分為dds子元素,定義了DDS報文頭的所有內(nèi)容;第2部分為esb子元素,定義了ESB消息的協(xié)議頭部分的所有內(nèi)容;最后一部分則是elemmap子元素,每個子元素定義了ESB消息與DDS報文邏輯層次中,某對有效字段間的映射關系。mapping文件結(jié)構(gòu)見圖3。
圖3 mapping文件結(jié)構(gòu)
DDS報文數(shù)據(jù)模型的定義文件dds.xsd,該文件中定義了本系統(tǒng)所有DDS報文的數(shù)據(jù)結(jié)構(gòu),每個報文都是一種自定義的復雜數(shù)據(jù)類型,包含一個sequence子元素,即報文中每個有效字段都是按指定順序排列。每個有效字段也是一種自定義的復雜數(shù)據(jù)類型,每種字段的復雜數(shù)據(jù)類型又在basicdds. xsd文件中做了詳細定義。在basicdds.xsd文件中,將每種自定義數(shù)據(jù)類型,分解成某種基本數(shù)據(jù)類型(如string、octets等),并且含有該數(shù)據(jù)類型的字段長度、單位等基本屬性。與此相同,esb.xsd文件則是定義了系統(tǒng)中所有用到的ESB消息的數(shù)據(jù)結(jié)構(gòu)。
3.3 數(shù)據(jù)類型的基本屬性
每種數(shù)據(jù)類型都含有3個基本屬性:datatype, bytes及baseunit。其中,datatype為數(shù)據(jù)類型代碼,共定義了7種數(shù)據(jù)類型(0代表未指定類容,1代表BCD碼,2代表無符號整形,3表示二進制補碼,4代表離散數(shù)值,5表示編碼值,6是字符型)。Bytes則定義了該數(shù)據(jù)類型所占緩存大小。Baseunit表示基本單位,初始值為1.0,不同數(shù)據(jù)類型基本單位值不同,用于該數(shù)據(jù)類型與二進制代碼間的轉(zhuǎn)換。
由于收發(fā)的DDS報文都是一段連續(xù)的緩存,要按照報文信息模型的定義,依次取出各字段的有效值。此時就需要用到各字段的3個基本屬性,根據(jù)默認定義,該緩存前16個字節(jié)默認存儲報文名稱,此后按照信息模型的定義順序,及各字段的字段長度,依次獲得各字段的二進制代碼。然后根據(jù)該字段的數(shù)據(jù)類型代碼,調(diào)用對應轉(zhuǎn)換語句,獲得該字段對應數(shù)據(jù)類型的有效值。
3.4 自定義數(shù)據(jù)結(jié)構(gòu)
在信息轉(zhuǎn)換過程中,為方便數(shù)據(jù)存儲,自定義了多種數(shù)據(jù)結(jié)構(gòu),以下簡單的介紹幾種重要數(shù)據(jù)結(jié)構(gòu)。包括用于存儲消息或報文有效字段名稱及取值的mapnode,用于映射轉(zhuǎn)化時存儲消息或報文定義特征值及其在映射文件中的元素地址值,各結(jié)構(gòu)體的具體定義及功能如表1所示。
表1 重要結(jié)構(gòu)體定義及功能
此外,本文還用到了3個Vector容器ESBInfo, DDSInfo,MappingMap(容器類型都是Vector<Mapnode>類型),其中,ESBInfo用于存儲ESB消息協(xié)議頭及其邏輯層次、各有效字段名及其取值。同樣DDSInfo用于存儲DDS報文協(xié)議頭及其邏輯層次,各有效字段名及其取值。而Mappingmap則是存儲映射文件中定義的,ESB消息及其對應DDS報文各有效字段的映射關系。
4.1 SOAP消息轉(zhuǎn)換為DDS報文的過程
系統(tǒng)啟動后,客戶端顯控界面發(fā)出服務請求的SOAP消息,經(jīng)消息流接收并存儲于AdapterIn消息隊列中。適配器模型從AdapterIn消息隊列中取出該消息,去除消息頭,提取出消息體中的有效信息ESB消息(以xml的元素節(jié)點形式)。然后用xerces c++DOM解析該元素,得到該ESB消息的協(xié)議頭及邏輯層次的所有有效字段名及其取值。各字段名稱及取值以MapNode結(jié)構(gòu)體的形式,依次存入ESBInfo容器中。
然后再用xerces c++DOM解析信息映射文件Mapping.xml[13],依次遍歷該文件的每個esbdds子元素,從而得到每個子元素的UnitID值。將每個UnitID值及其所屬元素的地址值以esbiden的結(jié)構(gòu)體形式,依次存入名為set的vector容器中。然后再遍歷set容器,從中找到與所要轉(zhuǎn)換的ESB消息UnitID值相同的esbdds元素,得到該元素的地址值。再用xerces c++DOM解析該元素,將它所有的elemmap子元素中有效字段的映射關系存入mapping容器中,并獲取該SOAP消息轉(zhuǎn)換后對應的DDS報文名稱,及轉(zhuǎn)換后對應DDS報文協(xié)議頭部分,然后根據(jù)提取出的映射關系,將ESBInfo中存儲的所有邏輯層次有效字段值,賦值給對應DDS報文邏輯層次的有效字段,從而得到了完整的DDS報文內(nèi)容。再按照預先定義好的xml文檔格式,將該DDS報文內(nèi)容轉(zhuǎn)換生成一個xml文件。
然后再用xerces c++DOM解析DDS報文的信息模型定義文件dds.xsd,依次遍歷該文件的每個子元素,找到轉(zhuǎn)換后報文的結(jié)構(gòu)定義子元素。繼續(xù)解析該元素,找到該報文每個有效字段的自定義數(shù)據(jù)類型,再解析basicdds.xsd文件,找到每種自定義數(shù)據(jù)類型的結(jié)構(gòu)定義,得到其基本類型名及其3個基本屬性(bytes,datatype,baseunit)。將前面得到的DDS報文的內(nèi)容,轉(zhuǎn)換為DDS內(nèi)含數(shù)據(jù)類型,并依次存入一段緩存中。開始的16個字節(jié)默認為存儲關鍵字,其后按信息模型定義的順序,依次寫入各有效字段值。通過提取每個有效字段的3個基本屬性,根據(jù)bytes值得到該字段所占內(nèi)存大小,根據(jù)datatype值等到其所屬數(shù)據(jù)類型,再調(diào)用相應處理函數(shù)轉(zhuǎn)換為其對應的DDS內(nèi)含數(shù)據(jù)類型值。將該報文的所有內(nèi)容轉(zhuǎn)換并存儲于一段緩存后,將該段緩存交由DDS發(fā)布訂閱管理器,通過發(fā)布者將報文發(fā)布出去[14]。
4.2 DDS報文轉(zhuǎn)換為SOAP消息的過程
在適配器運行時,就已創(chuàng)建了DDS發(fā)布訂閱管理對象,其一直監(jiān)聽網(wǎng)絡中是否有自己訂閱主題的DDS服務,一旦發(fā)現(xiàn)則接收并讀取該報文[15]。將獲取的內(nèi)容存在一段緩存中,按照該報文定義格式,依次讀取該緩存,獲取報文各字段的二進制代碼,然后交由報文處理對象進行報文解析。
首先根據(jù)報文名稱,將該報文的關鍵字及其有效值成對存入一個名為respDDSMap的VECTOR容器中。然后按照報文名稱,從dds.xsd文件中剛找到該報文數(shù)據(jù)模型的定義元素eltpack。用xerces c++ DOM解析該元素,從而提取出該DDS報文中報文頭的field,theme,type這3個基本屬性,并與其對應值一起存入respDDSMap容器中。
然后解析遍歷eltpck元素,獲取該報文所有有效字段名及其數(shù)據(jù)類型。解析遍歷basicdds.xsd文件,從而得到各字段數(shù)據(jù)類型的詳細信息(如bytes, datatype,baseunit這3個基本屬性及備注信息)。根據(jù)各字段的詳細信息,從該DDS報文緩存中,依次取出各字段所占內(nèi)存中的二進制代碼。按照轉(zhuǎn)換規(guī)則,轉(zhuǎn)換成該字段數(shù)據(jù)類型的對應取值。按照定義好的xml文件結(jié)構(gòu),將獲取的DDS報文內(nèi)容生成一個DOMElement?的元素節(jié)點。解析該xml元素,提取出DDS報文各有效字段名稱及取值,成對的存入一個名為DDSInfo的容器中。遍歷解析mapping文件,按照該報文名稱,得到該報文所在的esbdds元素。從該esbdds元素中找到UnitID,unitlenth等對應ESB消息協(xié)議頭部分的有效字段。根據(jù)映射規(guī)則,將DDS報文所有字段的內(nèi)容,賦予對應ESB消息的相應字段。再按照xml文件的格式定義,生成ESB消息。將該ESB消息作為消息體的有效數(shù)據(jù)字段,加上SOAP消息頭,封裝成一個SOAP消息,再將該SOAP消息存入adapterOut消息隊列中,由消息流取出發(fā)送出去。
針對上文提出的適配器模型設計方案,編寫完成適配器模型后,將其應用于上述的ESB與DDS通信仿真系統(tǒng)中。運行系統(tǒng),對適配器進行功能與轉(zhuǎn)化時間的測試。實驗環(huán)境介紹如下:
實驗設備:惠普工作站;
CPU:Intel Xeon 5160;
內(nèi)存:3 GB;
操作系統(tǒng):Microsoft Windows XP專業(yè)版SP3;
軟件環(huán)境:Microsoft Visual 2005,RTI DDS, Altora XMLSpy 2006;Websphere MQ version 7.0.1.0 Message Broker Toolkit 7.0。
實驗數(shù)據(jù)檢查表如圖4所示,其中詳細列出了SOAP消息及DDS報文所含數(shù)據(jù)項,供實驗人員記錄并分析實驗結(jié)果使用。
圖4 實驗數(shù)據(jù)檢查表
5.1 功能測試
啟動仿真系統(tǒng)后,適配器不斷接收服務請求的SOAP消息,完成信息轉(zhuǎn)換及轉(zhuǎn)發(fā)功能。測試工具分別在2條數(shù)據(jù)總線上監(jiān)視對應信息,通過ADO方式操作ACCESS數(shù)據(jù)庫,將每個ESB消息及DDS報文的內(nèi)容存入數(shù)據(jù)庫中,待實驗結(jié)束時提取數(shù)據(jù)庫中內(nèi)容,對實驗結(jié)果進行分析。根據(jù)實驗要求,從數(shù)據(jù)庫中隨機抽取60組實驗數(shù)據(jù),按照圖4格式,將實驗數(shù)據(jù)填入表格中,將每組報文及消息數(shù)據(jù)字段與目標數(shù)據(jù)進行比對,得到實驗結(jié)果100%正確。
5.2 處理時間性能測試
方法與功能測試相似,在系統(tǒng)運行過程中,每當適配器提取一條ESB消息時,程序會將此刻的系統(tǒng)時間t1存入數(shù)據(jù)庫中,然后經(jīng)過信息轉(zhuǎn)換生成DDS報文,在發(fā)布報文的同時將此刻的系統(tǒng)時間t2存入數(shù)據(jù)庫。待DDS處理服務處理完成后,適配器根據(jù)訂閱的主題名,獲取返回的DDS報文并將此刻的系統(tǒng)時間t3存入數(shù)據(jù)庫。完成信息轉(zhuǎn)換后,將生成的ESB消息存入消息隊列,同時存入此刻的系統(tǒng)時間t4。實驗完成后,從數(shù)據(jù)庫中隨機抽取60組實驗數(shù)據(jù),計算出ESB消息轉(zhuǎn)換為DDS報文所需處理時間Te,及逆向DDS報文轉(zhuǎn)換為ESB消息處理時間Td。處理時間實驗結(jié)果見圖5、圖6。
圖5 ESB消息轉(zhuǎn)換為DDS報文的處理時間
圖6 DDS報文轉(zhuǎn)換為ESB消息的處理時間
實驗的數(shù)據(jù)結(jié)果如表2所示,從表中可以清楚地看出,2組實驗結(jié)果都符合實驗設計處理時長100 ms的要求,處理時間基本都在47 ms左右,最高不超過63 ms。通過樣本方差及樣本期望值的比較,可知ESB消息轉(zhuǎn)換為DDS報文時,適配器模型平均處理時間稍短且更加穩(wěn)定。
表2 實驗數(shù)據(jù)統(tǒng)計
針對SOA架構(gòu)中原有遺留系統(tǒng)的不同通信技術(shù)與ESB總線間通信適配問題,本文設計了一種DDS與ESB通信轉(zhuǎn)換的適配器模型,并通過一個ESB與DDS混合通信系統(tǒng)的運行驗證,該適配器程序能準確、及時地完成SOAP消息與DDS報文間的轉(zhuǎn)換及分發(fā)功能。通過預定義的信息模型文件,解析自定義的映射文件,完成信息數(shù)據(jù)間的映射轉(zhuǎn)換。但還有一些不足之處,如消息與報文間的轉(zhuǎn)換只能在預先定義好的消息報文之間,不能達到運行時自定義轉(zhuǎn)換關系,這也是今后研究的重點內(nèi)容。
[1] Papazoglou M P,van den Heuvel W J.Service Oriented Architectures:Approaches,Technologies and Research Issues[J].VLDB Journal,2007,16(3):389-415.
[2] Schmidt M T,Hutchison B,Lambros P.The Enterprise ServiceBus:MakingService-orientedArchitecture Real[J].IBM Systems Journal,2005,44(4):781-797.
[3] 李曉東,楊 揚,郭文彩.基于企業(yè)服務總線的數(shù)據(jù)共享與交換平臺[J].計算機工程,2006,32(21): 217-219.
[4] 邵歡慶,康建初.企業(yè)服務總線的研究與應用[J].計算機工程,2007,33(2):220-222.
[5] 曾文英,趙躍龍,齊德昱.ESB原理、構(gòu)架、實現(xiàn)及應用[J].計算機工程與應用,2008,44(25):225-228.
[6] 姚 兵,蔡 婷,李峻林,等.基于DDS模型的數(shù)據(jù)分發(fā)中間件的設計與實現(xiàn)[J].計算機工程與設計, 2009,30(3):619-623.
[7] Tijero H P,Gutierrez J J.On the Schedulability of a Data-centric Real-time Distribution Middleware[J]. Computer Standards&Interfaces,2012,34(1):203-211.
[8] 麻志毅,陳漢婕.一種面向服務的體系結(jié)構(gòu)參考模型[J].計算機學報,2006,29(7):1011-1019.
[9] 張廣勝,蔣昌俊,湯憲飛,等.面向服務的企業(yè)應用集成系統(tǒng)描述與驗證[J].軟件學報,2007,18(12): 3015-3030.
[10] 劉振頂.企業(yè)服務總線(ESB)在SOA中SOAP消息路由機制的研究與實現(xiàn)[D].濟南:山東大學,2008.
[11] 郭文越,陳 虹,劉萬軍.基于SOA的數(shù)據(jù)共享與交換平臺[J].計算機工程,2010,36(19):217-219.
[12] 張 濤.基于XML和Web services異構(gòu)數(shù)據(jù)轉(zhuǎn)換的設計和實現(xiàn)[D].青島:中國海洋大學,2009.
[13] 章 明,許青松,沈錫臣.基于XML數(shù)據(jù)交換共享平臺模型[J].清華大學學報:自然科學版,2003,43(1): 105-107.
[14] 曹萬華,謝 蓓,吳海昕,等.基于DDS的發(fā)布/訂閱中間件設計[J].計算機工程,2007,33(18):78-83.
[15] Sanchez-Monedero Javier,Povedano-Molina J,Lopez-Vega J M.Bloom Filter-based Discovery Protocol for DDS Middleware[J].Journal of Parallel and Distributed Computing,2011,71(10):1305-1317.
編輯 金胡考
An Adapter Model for DDS and ESB Communication Conversion
XIONG Zhiganga,LI Jinga,SU Zhenyanga,PENG Weipingb
(a.Computer School;b.School of Power and Mechanical Engineering,Wuhan University,Wuhan 430072,China)
With Service-oriented Architecture(SOA)being widely used,a large number of legacy systems with different communication technologies are accessing the Enterprise Service Bus(ESB)by the way of a service.In some real-time field with higher requirements,these information systems generally adopt the Data Distribution Service(DDS) communication technology.When these systems are accessing the ESB,it meets the communication conversion problem between ESB and DDS.On this basis,this paper designs a communication adapter model which is a three-tier architecture,including ESB messaging layer,messages and packets conversion layer and DDS packets publish-subscribe layer.According to the message and packet name,adapter traverses the mapping file and achieves conversion function between packet and message.Adapter traverses the information model definition file.The results after conversion is converted into a standard format used for communication.This paper builds a hybrid communication system between ESB and DDS to test the performance of the adapter model.Experimental results show that the communication conversion costs lower than100 ms and meets the real-time requirements.
Enterprise Service Bus(ESB);Data Distribution Service(DDS);adapter;message queue;message mapping;conversion;parse
熊志剛,李 晶,蘇振揚,等.一種DDS與ESB通信轉(zhuǎn)換的適配器模型[J].計算機工程, 2015,41(2):70-75.
英文引用格式:Xiong Zhigang,Li Jing,Su Zhenyang,et al.An Adapter Model for DDS and ESB Communication Conversion[J].Computer Engineering,2015,41(2):70-75.
1000-3428(2015)02-0070-06
:A
:TP393
10.3969/j.issn.1000-3428.2015.02.014
國家“863”計劃基金資助項目(2012AA040910);國家自然科學基金資助項目(51275362)。
熊志剛(1987-),男,碩士研究生,主研方向:SOA架構(gòu),信息系統(tǒng);李 晶(通訊作者),教授、博士;蘇振揚,博士研究生;彭衛(wèi)平,教授、博士。
2014-03-05
:2014-04-15E-mail:leejingcn@msn.com