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