1 概述
1.1 面向服務體系結構
面向服務的體系結構(Service Oriented Architecture,SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。
1.2 J2EE體系結構
一個典型的J2EE的體系架構一般分為表示層、控制/中介層、業務邏輯層、數據訪問層和數據源層五個層次。這個分層體系結構的優點在于:各層之間接口清晰,上下層相對獨立。
1.3 ESB(EntERPrise Service Bus)
ESB提供了開放的、基于標準的消息機制,通過簡單的標準配置器和接口來完成粗粒度應用(服務)和其他組件之間的互操作。能夠滿足大型異構環境的集成需求。
2 基于ESB的一種面向服務體系架構的設計
2.1 基于ESB的面向服務體系的參考架構
我們提出的架構即是基于SOA的,同時也是基于J2EE的。在J2EE體系中,通常采用EJB組件或Spring來實現業務邏輯層,而在SOA系統中業務是基于服務的,于是可以在架構中采用把業務邏輯層的組件包裝成Web服務的方式,使用Web服務作為SOA的服務提供者,EJB或Spring作為服務的實現,同時使用企業服務總線(ESB)技術來實現SOA中的服務中介,并且在J2EE體系的控制層之下添加了一個服務調用層,用來封裝對服務的具體調用代碼。具體的構架參考如圖1所示。
圖1 基于ESB的面向服務的參考架構
2.2 基于ESB的面向服務體系架構的實現參考
上節設計了基于ESB的SOA架構的體系結構,本節結合具體的J2EE技術給出了一個具體的實現參考,詳細描述見圖2所示。
圖2 基于ESB的而向服務體系架構的實現參考
架構實現中各個部分的說明:
JSP/Html/Java Applet:表示層的實現技術,用來生成web頁面。客戶通過瀏覽器來訪問web頁面。
Servlets:控制器部分,負責頁面層和內部業務的結合,以及頁面之間的切換。通常情況下在web.xml文件中配置。
服務調用代碼:服務的請求處理程序,用來與服務交互,從而向系統內增加、更新和查詢信息,通常由一組java類組成。編寫服務調用代碼時需要從服務總線獲得服務的WSDL描述文件,然后根據此文件進行編寫。
企業服務總線:服務請求者和服務提供者之間的中間層,對服務進行集中管理。使用企業服務總線時,服務請求不用直接發送到服務提供者,而是先送到服務總線,由服務總線將請求消息轉發給服務提供者。得到返回消息后,服務總線再轉發給服務請求者。
Web服務:服務的提供者。由無狀態會話bean生成,通常是粗粒度的,對應企業的業務邏輯。Session Bean:負責實現業務邏輯的J2EE組件。
CMP/BMP:其中BMP要求開發人員在Entity中寫SQL:CMP完全由J2EE容器Container完成對數據層的操作,使開發人員不需要寫SQL,是目前在實際項目中大量使用的。
Hibernate:企業應用和關系數據庫之間的中間件,優秀的ORM工具。RDBMS:關系型數據庫,存儲企業數據。
3 基于ESB的面向服務體系架構的特點
3.1 服務透明化
SOA架構的—個特性就是SOA架構中所有服務的具體實現、位置和傳輸協議對調用者來說都是透明的,本文提出的SOA架構利用企業服務總線技術來實現這一特性。服務對客戶端來說是完全透明的,客戶端只和服務總線打交道,服務總線將真正的服務提供者的地址、傳輸協議以及服務的具體實現隱藏起來了。
3.2 松散耦合
在軟件領域中,耦合是指軟件組件之間的依賴程度。對于一個SOA架構來說,松散耦合的標準主要有以下幾點:
●異步通信
●以數據為中心的交互模式
●動態綁定服務
●獨立于編程語言
在本文提出的SOA架構中。服務調用者只把SOAP請求發給服務總線,并與服務提供者進行直接、同步的交互,服務總線會把包含結果的SOAP響應傳送給服務的調用者。而SOAP協議,正是一種以數據為中心的XML消息格式。從而實現了異步通信、以數據為中心、動態的邦定和獨立的程序語言。滿足松散耦合的特點。
4 基于ESB的面向服務體系架構的擴展
現以最常見的資源管理系統(ERP)和客戶關系管理系統(CRM)為例,介紹此架構下基于ESB的SOA擴展后的實現。下面就是解決該問題的實現方法,主要分為幾個步驟:
4.1 建立ESB系統總線
ESB總線傳遞的是消息,需要實現信息的轉換、訂閱、發布、傳送、分派、事件解析、事件通知、事件注冊、事件儲存等功能。信息轉換和事件訂閱/發布等,需要寫代碼完成,如果外部全部是使用Web服務,可以不進行信息轉換的工作。
4.2 設計接口
CRM和ERP自身都是一套完整的管理系統,為了實現相互之間的數據傳遞,需要設計一系列的接口,當有數據變化的時候,可以通過接口將數據傳遞到ESB,由ESB執行數據的分發。
4.3 根據接口加強ESB功能
當客戶信息變化的時候,CRM不能直接將信息發送到ERP系統,而是應該發送到ESB系統總線,反之亦然。
4.4 封裝管理系統,向系統添加適配器
ERP和GRM都是獨立的管理系統,并且用戶往往沒有代碼,不能直接提供上面提到的服務,我們寫一個適配器,分別將CRM和ERP系統封裝,適配器里面實現上面的接口。然后將適配器和ESB總線掛起來。
4.5 將組件掛接到ESB總線上
適配器完成后。只需要系統掛接到ESB總線上,并且注冊相應的事件,就可以實現數據的同步更新和消息的傳遞。
5 小結
以J2EE體系結構為切入點,提出了基于ESB的面向服務應用架構的參考模型,并且給出了該架構的實現參考,接著對ESB的這種架構的特點進行了闡述。并對基于ESB的架構進行擴展,使其面向不同的技術、協議、應用。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/