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