本站小編為你精心準備了企業(yè)服務(wù)的協(xié)議轉(zhuǎn)換研習參考范文,愿這些范文能點燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
系統(tǒng)概述
1系統(tǒng)概述
企業(yè)服務(wù)總線的核心是由消息監(jiān)聽器、適配器、協(xié)議轉(zhuǎn)換器、消息路由器和服務(wù)調(diào)度器五部分組成.協(xié)議轉(zhuǎn)換作為企業(yè)服務(wù)總線的核心功能之一,可以為注冊到企業(yè)服務(wù)總線上的服務(wù)提供者和服務(wù)請求者提供可靠的交互服務(wù).ESB系統(tǒng)總體框架圖如圖1所示.企業(yè)服務(wù)總線的主要功能包括如下部分:1.消息監(jiān)聽功能:監(jiān)聽基于不同協(xié)議的消息.2.服務(wù)請求者與服務(wù)提供者之間的應用協(xié)議的轉(zhuǎn)換:如果服務(wù)請求消息基于的協(xié)議與服務(wù)提供者所注冊的協(xié)議不同或者服務(wù)提供者所提供的服務(wù)消息是服務(wù)請求者無法解析,則需要對該協(xié)議進行轉(zhuǎn)換.3.服務(wù)之間的消息轉(zhuǎn)發(fā)(路由):把請求消息轉(zhuǎn)發(fā)到目標的服務(wù)地址.4.服務(wù)定位:查找服務(wù)的目標地址.5.服務(wù)安全:對請求消息進行認證授權(quán).在企業(yè)服務(wù)總線中,協(xié)議轉(zhuǎn)換器主要功能就是如果請求消息基于的協(xié)議與服務(wù)者所采用的協(xié)議不同,則需要對該協(xié)議進行轉(zhuǎn)換.
2協(xié)議轉(zhuǎn)換器的需求分析
各個系統(tǒng)在需要與其他系統(tǒng)交互的時候,要通過調(diào)用ESB來訪問目標系統(tǒng)提供的服務(wù)接口獲取數(shù)據(jù),完成業(yè)務(wù)操作.各應用系統(tǒng)作為服務(wù)消費方在調(diào)用ESB的時候,需要明確每個參數(shù)代表的含義,按照參數(shù)書寫格式要求來發(fā)送參數(shù),然后ESB會自動調(diào)用消費方服務(wù).但連接到ESB上的服務(wù)請求者和服務(wù)提供者可能采用不同的應用協(xié)議,針對不同的應用協(xié)議,ESB的監(jiān)聽器接收到的請求消息有不同的協(xié)議格式.如果ESB能夠支持現(xiàn)有的各種通信協(xié)議,那么對消息的處理就完全不考慮傳輸細節(jié),而直接通過消息請求和獲取服務(wù).如果沒有將一種協(xié)議轉(zhuǎn)換為另一種協(xié)議的工具,則服務(wù)請求者很難與給定的服務(wù)提供者進行通信.與此需求相關(guān)的需求是使用者的數(shù)據(jù)格式可能與服務(wù)提供者使用的數(shù)據(jù)格式不同.因此,需要一種能夠提供此轉(zhuǎn)換的工具.
關(guān)鍵技術(shù)
1基本定義
SOAP即簡單對象訪問協(xié)議,是一個輕量級的、簡單的、基于XML進行信息交換的通信協(xié)議.它可以和現(xiàn)存的許多因特網(wǎng)協(xié)議進行結(jié)合使用,包括HTTP,SMTP.JMS是實現(xiàn)JAVA領(lǐng)域遠程通信的一種手段和方法,是個遠程通信協(xié)議,在其他的語言體系中也存在著類似JMS的東西,可以統(tǒng)一的將這類機制稱為消息機制.XML(ExtensibleMarkupLanguage)即可擴展標記語言,它是萬維網(wǎng)協(xié)會的XML工作小組所定義的可擴展標記語言,是一組規(guī)則與準則的集合.XML作為通用的、自解釋的數(shù)據(jù)交換格式,已成為大多數(shù)應用程序所采用,XML技術(shù)可以有效地解決不同協(xié)議下的數(shù)據(jù)之間的共享與交互.
XML現(xiàn)在已經(jīng)成為一種通用的數(shù)據(jù)交換格式,它的平臺無關(guān)性,語言無關(guān)性,系統(tǒng)無關(guān)性,給數(shù)據(jù)集成與交互帶來了極大的方便.XML是從標準通用標記語言(SGML)中簡化修改出來的.XML將SGML的靈活性和強大功能與已經(jīng)被廣泛采用的HTML結(jié)合起來,簡化了計算機對文檔和數(shù)據(jù)交換的處理,使得現(xiàn)有的協(xié)議和軟件更為協(xié)調(diào),從而簡化了數(shù)據(jù)的處理和傳輸.使用XML標記語言可以做到數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)在任何編程語言環(huán)境下的共享.XML最大的優(yōu)勢在于它能對各種編程語言編寫的數(shù)據(jù)進行管理,使得在任何平臺下都能通過解析器來讀取XML數(shù)據(jù).XML標記語言的語法非常簡單,可以通過解析器在任何機器上解讀.并可以在各種計算機平臺上使用.逐漸成為一種數(shù)據(jù)交換的語言.
2協(xié)議轉(zhuǎn)換思想
ESB支持廣泛使用的協(xié)議(HTTP,JMS,SOAP等等).目前,我們設(shè)計的ESB系統(tǒng)支持的協(xié)議有:HTTP、SOAP和JMS協(xié)議,以后還將對其進行擴展.協(xié)議轉(zhuǎn)換模型用于當服務(wù)的請求者與服務(wù)提供者基于不同協(xié)議時的消息轉(zhuǎn)換.消息監(jiān)聽部分監(jiān)聽到消息后,對其進行適配,然后將其傳遞給協(xié)議轉(zhuǎn)換部分,協(xié)議轉(zhuǎn)換器主要負責將采用不同協(xié)議的消息轉(zhuǎn)換成內(nèi)部標準消息,經(jīng)由消息路由器路由后將其封裝成目標方要求的協(xié)議形式的消息傳遞到目標方.在進行協(xié)議轉(zhuǎn)換時,標準消息的內(nèi)容主要由以下幾部分組成:用戶名、角色類型、IP地址、端口號、消息的狀態(tài)、消息的尋址信息和業(yè)務(wù)數(shù)據(jù).
網(wǎng)絡(luò)上傳輸?shù)南⒌膬?nèi)容常常分為消息頭和消息體,如應用層的HTTP、SOAP、JMS消息.業(yè)務(wù)相關(guān)內(nèi)容存入消息體中,消息頭中包含與業(yè)務(wù)無關(guān)的管理信息,比如消息的優(yōu)先級、序列號、地址信息等.因此,對消息進行解析時,可以對其消息頭和消息體分別進行解析.譬如SOAP消息都使用XML形式編碼.處理接收到的SOAP消息應該有兩個步驟,首先,識別應用程序需要的SOAP消息的頭部分;其次,識別應用程序需要的SOAP消息體部分;最后,檢驗該SOAP消息是否滿足要求,即消息的目的地址、參數(shù)信息等是否和目標地址名稱、參數(shù)等相對應.
協(xié)議轉(zhuǎn)換模型設(shè)計與實現(xiàn)
1并行XML解析
XML在不同的語言里解析方式通常都是一樣的.基本的解析方式有兩種:SAX和DOM.利用SAX解析XML文檔,牽涉到兩個部分:解析器和事件處理器.解析器負責讀取XML文檔,并向事件處理器發(fā)生事件,如元素開始和元素結(jié)束事件;而事件處理器則負責對事件做出響應,對傳遞的XML數(shù)據(jù)進行處理.DOM是基于XML文檔樹結(jié)構(gòu)的解析,DOM在分析XML文檔時,將組成XML文檔的各個部分映射為一個對象,在內(nèi)存中,這些節(jié)點形成一棵文檔樹,整棵樹是一個節(jié)點,樹中的每一個節(jié)點也是一棵樹,通過訪問樹中的節(jié)點來存取XML文檔的內(nèi)容.為了提高系統(tǒng)的效率,在這個協(xié)議解析器中,我們將采用一種并行的XML解析方式.并行XML解析可以充分利用多核計算機的優(yōu)勢來提高系統(tǒng)的性能.具體實現(xiàn)方式為:首先對XML文件進行預解析,根據(jù)預解析的結(jié)果將XML文件劃分為多個小的XML文件,并將這些XML文件分配到不同的線程上,從而這些劃分后的XML文件就可以并行地進行解析.
2協(xié)議轉(zhuǎn)換模型
在不同系統(tǒng)或不同系統(tǒng)的組成部分之間傳輸數(shù)據(jù)時,必須考慮接口參數(shù)差異問題.不同格式的數(shù)據(jù)是難以在系統(tǒng)內(nèi)部或者系統(tǒng)間傳輸?shù)?因此協(xié)議轉(zhuǎn)換器要解決這種異構(gòu)的問題.鑒于業(yè)務(wù)相關(guān)內(nèi)容通常存入消息體中,消息頭中包含與業(yè)務(wù)無關(guān)的管理信息,協(xié)議轉(zhuǎn)換器以分層方式進行轉(zhuǎn)換,主要包括2個部分:消息頭轉(zhuǎn)換和消息體的轉(zhuǎn)換.在進行協(xié)議轉(zhuǎn)換時,要對ESB系統(tǒng)支持的各個協(xié)議建立模型,每當需要某種協(xié)議解析時,都要讀取對應的協(xié)議模型信息.協(xié)議轉(zhuǎn)換可能會出現(xiàn)解析失敗的情況,這就要求將失敗信息記錄到日志文件中,方便系統(tǒng)查閱并進行處理.
為進行協(xié)議轉(zhuǎn)換,消息或服務(wù)必須要先進行適配,在初次連接或者其協(xié)議發(fā)生變化時,要填寫其協(xié)議的格式,在此設(shè)計一個表格存儲在注冊庫中.這一表格包括字段序號(SQ),消息名稱,消息序號,消息類型,字段名稱,起始位,長度,字段類型,字段描述.其中,消息類型是指消息所使用的協(xié)議.協(xié)議轉(zhuǎn)換示意圖如圖2所示。協(xié)議轉(zhuǎn)換器要把收到的不同協(xié)議格式的消息轉(zhuǎn)換為內(nèi)部統(tǒng)一的消息格式即XML的格式,以方便內(nèi)部消息路由器對消息的路由;消息路由器對消息路由后,由系統(tǒng)內(nèi)向服務(wù)提供方或者服務(wù)請求方發(fā)送數(shù)據(jù)時,協(xié)議轉(zhuǎn)換器實現(xiàn)讀取XML文件,按照數(shù)據(jù)庫中對應的注冊的協(xié)議的要求,形成指定的消息類型,并發(fā)送到目的地.而這里的轉(zhuǎn)換是需要服務(wù)請求方和服務(wù)提供方提前注冊他們支持的協(xié)議的詳細信息,我們將這些信息分別都保存在不同的表格里,并存入注冊庫.
因此,協(xié)議轉(zhuǎn)換器有兩個功能要實現(xiàn).一個是將接收到的消息轉(zhuǎn)換為內(nèi)部數(shù)據(jù)格式即XML文件.另一個功能是將內(nèi)部表示的XML文件轉(zhuǎn)換為注冊庫中查找到的目標協(xié)議格式,在這一過程中,需要使用并行XML解析方式對XML文件進行解析,從而能夠快速地實現(xiàn)協(xié)議轉(zhuǎn)換.在這個轉(zhuǎn)換的過程中,ESB系統(tǒng)首先要建立所支持的JMS、HTTP和SOAP協(xié)議的模型,從而為協(xié)議轉(zhuǎn)換提供相關(guān)的信息.協(xié)議轉(zhuǎn)換器過程圖如圖3所示,在這里以JMS和SOAP協(xié)議轉(zhuǎn)換為例.若獲取到對方的JMS或者SOAP消息,則在存入數(shù)據(jù)庫的同時,要首先根據(jù)之前注冊的JMS或者SOAP模型將JMS或者SOAP消息轉(zhuǎn)換為XML的格式,統(tǒng)一消息格式,方便系統(tǒng)對數(shù)據(jù)的處理.當傳輸數(shù)據(jù)時,若傳輸?shù)氖瞧渌问降南?則其消息格式 為消息描述指定的格式,協(xié)議轉(zhuǎn)換器就利用消息描述表中對消息的內(nèi)容的描述進行轉(zhuǎn)換,將XML格式的消息轉(zhuǎn)換為JMS或者SOAP消息.實質(zhì)上,在協(xié)議轉(zhuǎn)換器中,消息的轉(zhuǎn)換包括兩個層次上的協(xié)議轉(zhuǎn)換:服務(wù)請求方的數(shù)據(jù)到系統(tǒng)內(nèi)部的協(xié)議轉(zhuǎn)換,系統(tǒng)內(nèi)部的消息到服務(wù)提供方的協(xié)議轉(zhuǎn)換;服務(wù)提供方的消息到系統(tǒng)內(nèi)部的協(xié)議轉(zhuǎn)換,以及系統(tǒng)內(nèi)部的消息到服務(wù)提供方的協(xié)議轉(zhuǎn)換.
3協(xié)議轉(zhuǎn)換器的可擴展性
設(shè)計模式使人們可以更加簡單方便地復用成功的設(shè)計和體系結(jié)構(gòu).為了實現(xiàn)協(xié)議轉(zhuǎn)換器的可擴展性,協(xié)議轉(zhuǎn)換器的實現(xiàn)中應用了工廠模式和適配器模式.協(xié)議轉(zhuǎn)換器的類圖如圖4所示:在協(xié)議轉(zhuǎn)換器的實現(xiàn)中,AbstractTransformer是所有協(xié)議轉(zhuǎn)換的一個基類,并且是一個抽象類,實現(xiàn)了接口Transformer和Amnotatedobject.其它的轉(zhuǎn)換類都實現(xiàn)了AbstractTransformer.
結(jié)語
企業(yè)服務(wù)總線可以有效地解決國家水體污染控制與治理科技重大專項中獨立的、異構(gòu)的、封閉的系統(tǒng)的集成問題.協(xié)議轉(zhuǎn)換器為企業(yè)服務(wù)總線集成兩個或者多個需要互相通信應用程序提供了方便快捷的方式.協(xié)議轉(zhuǎn)換器主要負責將不同協(xié)議的消息轉(zhuǎn)換成內(nèi)部標準的XML消息,并將內(nèi)部標準的XML消息轉(zhuǎn)換為消息描述表指定的某種協(xié)議的消息.協(xié)議轉(zhuǎn)換器使得ESB支持集成現(xiàn)有系統(tǒng)而無論其底層采用何種技術(shù),如JMS、SOAP、HTTP以及其他技術(shù).通過協(xié)議轉(zhuǎn)換,方便地實現(xiàn)了不同協(xié)議應用之間的互聯(lián)互通,降低了因為頻繁修改現(xiàn)有系統(tǒng)的通信協(xié)議而帶來的穩(wěn)定性風險.協(xié)議轉(zhuǎn)換器是ESB系統(tǒng)中的重要部件,設(shè)計一個良好的協(xié)議轉(zhuǎn)換器對ESB系統(tǒng)來說是非常重要的一步.基于XML開發(fā)的協(xié)議解析器具有技術(shù)標準統(tǒng)一性及跨平臺的優(yōu)點.XML相關(guān)技術(shù)在不斷地發(fā)展,這就為將XML用于ESB系統(tǒng)中提供了方便和可能.總之,本文通過對現(xiàn)有協(xié)議的分析,提供了一種比較通用的協(xié)議轉(zhuǎn)換方法.協(xié)議轉(zhuǎn)換器要適應應用協(xié)議的不斷發(fā)展,使系統(tǒng)能夠以最小的成本進行擴展.因此通過使用設(shè)計模式的多種模式實現(xiàn)了協(xié)議轉(zhuǎn)換器的可擴展性.
作者:王芳芳 廉東本高天單位:中國科學院研究生院中國科學院沈陽計算技術(shù)研究所