引言
隨著企業(yè)信息化的發(fā)展,企業(yè)對(duì)異構(gòu)系統(tǒng)之間數(shù)據(jù)整合要求越來(lái)越高,傳統(tǒng)的整合方案,已日益不能滿足其復(fù)雜的需求。為了提升異構(gòu)系統(tǒng)間數(shù)據(jù)交互與信息共享功能,提出一種SOA—ESB企業(yè)整合架構(gòu)。傳統(tǒng)點(diǎn)對(duì)點(diǎn)的整合技術(shù),通過(guò)互連異構(gòu)系統(tǒng)接口進(jìn)行通信,但隨著業(yè)務(wù)系統(tǒng)的增加,其接口數(shù)目的不斷增長(zhǎng),整個(gè)系統(tǒng)維護(hù)變得越來(lái)越困難:在隨后出現(xiàn)的CORBA、DCOM、MOM等中間件整合技術(shù),能夠?qū)ο到y(tǒng)進(jìn)行無(wú)縫集成,但由于其要求服務(wù)客戶端與系統(tǒng)提供的服務(wù)本身之間必須進(jìn)行緊耦合,導(dǎo)致了整合系統(tǒng)的整體性能下降。面向服務(wù)架構(gòu)(service-orientedarchitecture,SOA)使異構(gòu)系統(tǒng)之間保持一種實(shí)時(shí)、一致的、松耦合的集成,在統(tǒng)一的技術(shù)規(guī)范下開(kāi)發(fā)標(biāo)準(zhǔn)的服務(wù),根據(jù)需求將異構(gòu)業(yè)務(wù)封裝為服務(wù),發(fā)布到企業(yè)服務(wù)總線上(entERPrise servicebus,ESB),ESB根據(jù)業(yè)務(wù)流程的定義,對(duì)服務(wù)進(jìn)行綜合管理,保證服務(wù)在總線上安全的進(jìn)行交互通信,從而保證了數(shù)據(jù)交互的高效性。本文提出的SOAESB企業(yè)整合架構(gòu)降低了系統(tǒng)間的耦合度,提高了系統(tǒng)的高重用性,為各類企業(yè)的業(yè)務(wù)整合奠定了實(shí)現(xiàn)基礎(chǔ)。
1 SOA-ESB企業(yè)整合架構(gòu)的原理及優(yōu)勢(shì)
1.1 SOA-ESB企業(yè)整合架構(gòu)的原理
SOA是一種策略、框架,為企業(yè)的數(shù)據(jù)整合提供一種思想。針對(duì)異構(gòu)系統(tǒng)中的不同單元封裝為服務(wù),通過(guò)定義統(tǒng)一的接口和契約將這些服務(wù)聯(lián)系起來(lái),使得異構(gòu)系統(tǒng)中的服務(wù)可以以一種統(tǒng)一的方式進(jìn)行交互,并降低系統(tǒng)間的耦合度啪。在此平臺(tái)下,通過(guò)ESB對(duì)服務(wù)進(jìn)行集中管理、整合,對(duì)外提供統(tǒng)一開(kāi)放接口,方便了其整合已有服務(wù)功能以及可為新增業(yè)務(wù)提供良好的通信接口。因此將ESB和SOA結(jié)合可有效解決企業(yè)業(yè)務(wù)數(shù)據(jù)整合問(wèn)題.SOA.ESB企業(yè)整合架構(gòu)能根據(jù)業(yè)務(wù)需求將定義好的服務(wù)發(fā)布到總線上,總線融合了WebServices和XML等技術(shù),定義了數(shù)據(jù)交互的標(biāo)準(zhǔn)協(xié)議和統(tǒng)一數(shù)據(jù)規(guī)范,使新增服務(wù)或已有服務(wù)以其標(biāo)準(zhǔn)橋接到總線上,進(jìn)而保證服務(wù)之間通信的一致性嘞。ESB將相互通信的服務(wù)轉(zhuǎn)換為統(tǒng)一交互格式,根據(jù)定義的業(yè)務(wù)流程,配置路由機(jī)制分析服務(wù)的SOAP消息,提取目的地址,為服務(wù)請(qǐng)求者找到匹配的服務(wù)提供者,完成服務(wù)的相互操作,實(shí)現(xiàn)異構(gòu)系統(tǒng)通信的目的。
1.2 SOA-ESB企業(yè)整合架構(gòu)的優(yōu)勢(shì)
SOA.ESB企業(yè)整合架構(gòu)從整體設(shè)計(jì)上滿足SOA一切為服務(wù)的理念,它與其他ESB架構(gòu)相比具有如下優(yōu)勢(shì):
(1)ESB擴(kuò)展性。真正體現(xiàn)SOA價(jià)值,服務(wù)在總線上處于平等地位,應(yīng)用組件能以服務(wù)形式根據(jù)標(biāo)準(zhǔn)的接口部署在總線上,相比以前Hub形式的整合架構(gòu),此架構(gòu)更靈活,更易擴(kuò)展。
(2)路由更靈活。普遍的ESB只支持靜態(tài)的路由,通過(guò)一個(gè)靜態(tài)配置文件來(lái)確定路由,但由于業(yè)務(wù)的多樣化發(fā)展,路由路徑并不是一對(duì)一,多個(gè)服務(wù)可能同時(shí)滿足服務(wù)請(qǐng)求者的接口定義要求;趦(nèi)容的路由,服務(wù)的請(qǐng)求者可以根據(jù)功能總列表中所有提供者的功能信息選擇滿足要求的服務(wù)者,使得請(qǐng)求者的選擇更加靈活。
(3)安全性。為請(qǐng)求者設(shè)置用戶權(quán)限,從消息的發(fā)出至消息的接收通過(guò)安全屬性以及加密機(jī)制來(lái)確保消息的準(zhǔn)確性和完整性。
(4)ESB中間件的高可移植性。在SOA.ESB企業(yè)整合架構(gòu)中ESB總線支持標(biāo)準(zhǔn)的接口和規(guī)范的通信,使其與系統(tǒng)無(wú)關(guān)。本文總線層的設(shè)計(jì)除了滿足電力系統(tǒng)要求外,還可以移植到其他行業(yè)適合的系統(tǒng)邏輯,以便提高系統(tǒng)的開(kāi)發(fā)效率。
2 SOA-ESB企業(yè)整合架構(gòu)的研究及關(guān)鍵技術(shù)
SOA-ESB企業(yè)整合架構(gòu)的設(shè)計(jì)原則:
(1)架構(gòu)化。它是軟件平臺(tái)開(kāi)發(fā)和管理的基礎(chǔ);
(2)技術(shù)標(biāo)準(zhǔn)化?稍鰪(qiáng)框架的通用性;
(3)開(kāi)放性、擴(kuò)展性。使不同業(yè)務(wù)標(biāo)準(zhǔn)的應(yīng)用系統(tǒng)快速的“插入”總線。
2.1 SOA-ESB企業(yè)整合架構(gòu)
SOA-ESB企業(yè)整合架構(gòu)共包含三層:服務(wù)實(shí)現(xiàn)層,ESB總線層,業(yè)務(wù)流程層。其核心是總線層的傳輸適配轉(zhuǎn)換模塊、路由模塊以及安全模塊,如圖1所示。
(1)服務(wù)實(shí)現(xiàn)層:為ESB提供服務(wù),通過(guò)WebServices技術(shù),將不同大小的應(yīng)用組件封裝成粗細(xì)粒度不等的Web服務(wù)嘲,對(duì)服務(wù)進(jìn)行WSDL描述,將WSDL描述文檔注冊(cè)到服務(wù)注冊(cè)中心,以統(tǒng)一的標(biāo)準(zhǔn)暴露接口,便于遺留系統(tǒng)的重用:
(2)ESB總線層:對(duì)服務(wù)進(jìn)行控制和管理的中心。由傳輸適配轉(zhuǎn)換模塊、路由模塊、注冊(cè)中心以及安全管理模塊組成,通過(guò)ESB總線保證發(fā)布和調(diào)用服務(wù)的規(guī)范化,基于內(nèi)容的路由使請(qǐng)求信息能得到快速的響應(yīng):
(3)業(yè)務(wù)流程層:定義基于業(yè)務(wù)標(biāo)準(zhǔn)的流程,流程定義了某些應(yīng)用需要的服務(wù)總和,向ESB發(fā)出訂閱/請(qǐng)求信號(hào)等。
2.2 SOA.ESB企業(yè)整合架構(gòu)的核心模塊
為使不同異構(gòu)應(yīng)用組件能相互服務(wù),選擇服務(wù)協(xié)議和消息格式作為融合交叉點(diǎn),配合基于內(nèi)容的路由機(jī)制以及可靠的安全機(jī)制,使服務(wù)互相操作的主要支點(diǎn)得以實(shí)現(xiàn)。
2.2.1傳輸適配轉(zhuǎn)換模塊
該模塊由消息協(xié)議轉(zhuǎn)換和數(shù)據(jù)格式轉(zhuǎn)換兩個(gè)子模塊組成。
(1)協(xié)議轉(zhuǎn)換模塊。由于異構(gòu)源所采用的底層協(xié)議不同,它們之間要進(jìn)行消息的交互、信息的共享,必須使用轉(zhuǎn)換機(jī)制將其轉(zhuǎn)換為任意一方認(rèn)可的協(xié)議,才能訪問(wèn)相應(yīng)的Web服務(wù)。一次協(xié)議的轉(zhuǎn)換需經(jīng)過(guò)請(qǐng)求目標(biāo)轉(zhuǎn)換和目標(biāo)應(yīng)答轉(zhuǎn)換兩個(gè)步驟。請(qǐng)求目標(biāo)轉(zhuǎn)換是將請(qǐng)求調(diào)用服務(wù)的協(xié)議轉(zhuǎn)換成被調(diào)用的Web服務(wù)的協(xié)議,目標(biāo)應(yīng)答轉(zhuǎn)換是將被調(diào)用的服務(wù)發(fā)布的方式轉(zhuǎn)換為請(qǐng)求調(diào)用服務(wù)的協(xié)議方式。這兩個(gè)過(guò)程是互逆的,原理相同。每個(gè)轉(zhuǎn)換過(guò)程都經(jīng)過(guò)源協(xié)議分析器/生成器、目標(biāo)協(xié)議分析器/生成器、節(jié)點(diǎn)映射器、內(nèi)容映射器、編碼轉(zhuǎn)換器組成。
以請(qǐng)求調(diào)用服務(wù)轉(zhuǎn)換為例。首先將調(diào)用協(xié)議通過(guò)源協(xié)議分析器,分析WSDL配置文件,讀取配置文件中的配置項(xiàng)來(lái)初始化節(jié)點(diǎn)映射器以及內(nèi)容映射器。初始完后,將源請(qǐng)求消息轉(zhuǎn)換為目標(biāo)協(xié)議的請(qǐng)求消息,產(chǎn)生相應(yīng)的應(yīng)答消息。轉(zhuǎn)換的具體執(zhí)行步驟如圖2所示。
(2)數(shù)據(jù)格式轉(zhuǎn)換模塊。鑒于XML的結(jié)構(gòu)化、自描述性、可擴(kuò)展性等特征,在總線上選取XML作為數(shù)據(jù)交換格式,并使用XMLSchemall.0標(biāo)準(zhǔn)。數(shù)據(jù)的轉(zhuǎn)換通常有XML到XML、XML到數(shù)據(jù)庫(kù)、XML到操作系統(tǒng)等類型,本模塊實(shí)現(xiàn)XML與XML之間的轉(zhuǎn)換。轉(zhuǎn)換首先為ESB中數(shù)據(jù)信息建立公共的接口,即ESB上標(biāo)準(zhǔn)的XML規(guī)范,作為各應(yīng)用進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換的標(biāo)準(zhǔn);其次,建立各異構(gòu)數(shù)據(jù)源XML到總線上XML之間的映射,包括文檔格式、類型、時(shí)間日期等映射。使用XSLT樣式表建立規(guī)范與映射,實(shí)現(xiàn)總線上XML之間的轉(zhuǎn)換,消除了添加、刪除等信息后,重新編譯和部署代碼的麻煩。
圖1 SOA-ESB企業(yè)整合架構(gòu)
圖2傳輸協(xié)議轉(zhuǎn)換
2.2.2路由模塊
傳統(tǒng)的路由機(jī)制使用的是點(diǎn)對(duì)點(diǎn)的通信方式,在其請(qǐng)求消息頭文件中指定網(wǎng)絡(luò)地址,以致限制了路由的靈活性;趦(nèi)容的路由,根據(jù)消息內(nèi)容動(dòng)態(tài)的選擇相應(yīng)服務(wù)提供者,提高了路由的靈活性。因此,本文選擇基于內(nèi)容的路由。
基于內(nèi)容的路由分為兩種情況處理:①服務(wù)無(wú)變更。各服務(wù)組件首先通過(guò)XML文檔將功能存放到功能總列表,作為找到相應(yīng)服務(wù)的基礎(chǔ),系統(tǒng)運(yùn)行時(shí),路由表根據(jù)消息的內(nèi)容查詢功能總列表,明確服務(wù)提供者并且獲取其地址信息存入到該表中,進(jìn)而找到路由的目的地:②當(dāng)服務(wù)發(fā)生變更時(shí),相應(yīng)的服務(wù)功能會(huì)發(fā)生變化,影響到功能總列表中的功能信息。如果直接修改功能總列表,對(duì)于整個(gè)路由的維護(hù)將變的困難,在不影響其他非變更的服務(wù)正常路由的情況下,重新建立一個(gè)隊(duì)列,從此隊(duì)列中將服務(wù)變更內(nèi)容刷新到功能總列表,保證服務(wù)的可用性,供路由表進(jìn)行查詢,找到最匹配的服務(wù)消息傳遞路徑。
2.2.3安全模塊
系統(tǒng)從服務(wù)消息的發(fā)送端到接收端進(jìn)行安全檢測(cè)。發(fā)送端,為消息設(shè)置一系列的安全屬性,如發(fā)送者、接收者、身份認(rèn)證、時(shí)間戳、到期時(shí)間等,利用XML加密技術(shù)以及簽名技術(shù)對(duì)消息進(jìn)行加密和簽名,其中服務(wù)公鑰基礎(chǔ)設(shè)施PKI中密鑰的注冊(cè)碼遵循XKMS規(guī)范;接收端,收到消息后檢查安全屬性,看是否匹配,消息接收時(shí)間是否過(guò)期,再通過(guò)XML解密技術(shù)對(duì)加密的消息進(jìn)行解密,對(duì)于密鑰管理同樣遵循XKMS規(guī)范。另外對(duì)發(fā)送請(qǐng)求消息的用戶進(jìn)行權(quán)限的驗(yàn)證,使保證接入ESB的消息服務(wù)是合法的、完整的。
SOA-ESB企業(yè)整合架構(gòu)的應(yīng)用電力企業(yè)的信息管理系統(tǒng)發(fā)展較快,業(yè)務(wù)整合是必然的趨勢(shì),要求整合的數(shù)據(jù)既能安全又能高效的進(jìn)行交互。電力企業(yè)的物資管理、設(shè)備管理、財(cái)務(wù)管理等是SOA.ESB的原型系統(tǒng),現(xiàn)已廣泛的應(yīng)用于中小型電力企業(yè);赟OA.ESB企業(yè)整合架構(gòu)的電力企業(yè)信息管理系統(tǒng)采用J2EE應(yīng)用服務(wù)器Gomnimo,在Eclipse平臺(tái)下進(jìn)行開(kāi)發(fā),選擇JAVA作為開(kāi)發(fā)語(yǔ)言,總線上服務(wù)之間的調(diào)用使用簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議SOAP、XML作為規(guī)范標(biāo)準(zhǔn),通過(guò)傳輸適配、內(nèi)容路由等關(guān)鍵技術(shù),從體系結(jié)構(gòu)的層次來(lái)低耦合企業(yè)應(yīng)用系統(tǒng),從而為企業(yè)業(yè)務(wù)整合提供有力的支持。
基于SOA-ESB企業(yè)整合架構(gòu)的電力企業(yè)信息管理系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3基于SOA.ESB企業(yè)整合架構(gòu)的電力企業(yè)信息管理系統(tǒng)結(jié)構(gòu)
首先電力企業(yè)根據(jù)各自業(yè)務(wù)需求將各系統(tǒng)內(nèi)部進(jìn)行細(xì)粒度劃分,或根據(jù)整合業(yè)務(wù)進(jìn)行服務(wù)組合,如可將物資管理的訂購(gòu)和儲(chǔ)備封裝成Web服務(wù),通過(guò)編寫XML文檔將訂購(gòu)和儲(chǔ)備的功能存儲(chǔ)到功能總列表,同時(shí)將各Web服務(wù)的WSDL描述文檔(接口信息等)發(fā)布到注冊(cè)中心。當(dāng)物資采購(gòu)發(fā)出請(qǐng)求時(shí),ESB根據(jù)消息內(nèi)容找到相應(yīng)傳輸適配進(jìn)行協(xié)議和格式的轉(zhuǎn)換,并進(jìn)行消息的安全檢查,其次路由表即可根據(jù)請(qǐng)求內(nèi)容查詢功能總列表,獲取符合條件的服務(wù)信息,從而完成正確的路由。以下將闡述核心部分實(shí)現(xiàn)。
3.1非規(guī)范XML到規(guī)范XML
創(chuàng)建XSLT樣式表,行為的所有規(guī)則存儲(chǔ)于XML文檔中。通過(guò)樣式表的模板規(guī)則元素來(lái)確定XSLT如何轉(zhuǎn)換文檔中滿足規(guī)范的節(jié)點(diǎn)。在模板規(guī)則中,創(chuàng)建一個(gè)頂級(jí)元素用于指定哪些節(jié)點(diǎn)包含規(guī)則,在match特性中使用恰當(dāng)?shù)腦Path表達(dá)式,可以把匹配XPath表達(dá)式的每個(gè)節(jié)點(diǎn)作為環(huán)境節(jié)點(diǎn)來(lái)訪問(wèn)。為獲取被轉(zhuǎn)文檔中的XML元素,可以使用<value,>的select特性,特性中包含另一個(gè)XPath表達(dá)式,其值就是所選節(jié)點(diǎn)。輸出時(shí),由于XSLT默認(rèn)輸出是HTML格式,需把樣式表的XML文檔中<output>元素的method屬性設(shè)置為xml。創(chuàng)建樣式表后,即可通過(guò)編碼實(shí)現(xiàn)文檔轉(zhuǎn)換。
平臺(tái)采用Java語(yǔ)言開(kāi)發(fā),XSLT包含在JAXP(Java API forXML processing)API中,選用JAXP來(lái)實(shí)現(xiàn)。其轉(zhuǎn)換部分代碼如下:
首先創(chuàng)建Transformer對(duì)象,把XSLT樣式表加載到Transformer中,然后把源XML加載到StreamSource對(duì)象中進(jìn)行轉(zhuǎn)換。為了實(shí)現(xiàn)輸出XML的中文支持,設(shè)置輸出的編碼格式為GB2312。創(chuàng)建一個(gè)File對(duì)象,把轉(zhuǎn)換結(jié)果寫到磁盤。Transformer執(zhí)行XSLT處理,得到最終符合平臺(tái)規(guī)范的XML。
3.2內(nèi)容路由
以財(cái)務(wù)管理系統(tǒng)向物資管理系統(tǒng)發(fā)出請(qǐng)求服務(wù)為例。首先初始化功能總列表,將服務(wù)提供者物資管理的所有功能用XML進(jìn)行描述,存儲(chǔ)到功能總列表中,其中service為提供服務(wù)的名稱,add為服務(wù)地址,content為功能名稱,number為功能標(biāo)記號(hào):路由用route:--<business,service>表示,其中business為業(yè)務(wù)流程名稱,service為服務(wù)的相關(guān)信息。在初始情況下,路由中服務(wù)add為空。初始完功能總列表后,路由根據(jù)消息的內(nèi)容查詢功能總列表,確定服務(wù)提供者信息,檢索出服務(wù)的add信息并覆蓋到路由表服務(wù)信息中,如圖4所示。
根據(jù)消息的內(nèi)容來(lái)確定路由的目的地,改變了傳統(tǒng)的一對(duì)一的靜態(tài)模式,使整個(gè)服務(wù)的操作變的更加靈活。
3.3安全處理
在發(fā)出的SOAP請(qǐng)求消息中,進(jìn)行消息的數(shù)字簽名和加密。構(gòu)造一個(gè)簽字元素security,再構(gòu)造元素中的引用元素,指向要簽字的對(duì)象,如安全屬性元素等,再將與消息安全有關(guān)的XML信息放入security的子元素deal中,依據(jù)XML數(shù)據(jù)簽名規(guī)范分別對(duì)簽字元素進(jìn)行規(guī)范化,計(jì)算出摘要值和簽字值:構(gòu)造加密數(shù)據(jù)元素,設(shè)置相應(yīng)的加密算法、加密對(duì)象引用等,根據(jù)XML加密規(guī)范對(duì)加密對(duì)象進(jìn)行加密,加密后的值放入加密密鑰元素,再將其作為SOAP頭中security的子元素。以下是進(jìn)行安全處理部分的代碼:
進(jìn)行簽名時(shí),得到封裝SOAP消息的信封,獲得用戶驗(yàn)證信息并且產(chǎn)生簽名對(duì)象,用此簽名對(duì)象對(duì)消息進(jìn)行簽名,從被簽名的信封中產(chǎn)生新的SOAP消息;同理,首先獲得加密前的SOAP信封。然后獲得用戶驗(yàn)證信息并且產(chǎn)生加密對(duì)象,對(duì)獲得的SOAP信息加密,根據(jù)加密后的消息產(chǎn)生新的SOAP消息。從消息的發(fā)送至接收進(jìn)行安全檢測(cè),使服務(wù)的請(qǐng)求者和Web應(yīng)用能安全可靠的進(jìn)行通信。
圖4 功能總列表與路由
4 結(jié)束語(yǔ)
本文在遵循企業(yè)整合架構(gòu)設(shè)計(jì)原則上,提出了一種輕量級(jí)的SOA-ESB企業(yè)整合架構(gòu),重點(diǎn)分析了架構(gòu)中ESB總線層的傳輸實(shí)拍、內(nèi)容路由、消息安全等關(guān)鍵技術(shù),實(shí)現(xiàn)了整合系統(tǒng)數(shù)據(jù)交互的統(tǒng)一性、靈活性、可靠性等特點(diǎn)。經(jīng)時(shí)間證明,采用該整合架構(gòu)的系統(tǒng),能夠松散耦合得把異構(gòu)系統(tǒng)連接到ESB總線上,提高其系統(tǒng)的重用性和數(shù)據(jù)交互的能力,為企業(yè)的發(fā)展帶來(lái)更高的效益,同時(shí)也為系統(tǒng)開(kāi)發(fā)人員帶來(lái)便利。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:基于SOA的輕量級(jí)企業(yè)整合架構(gòu)設(shè)計(jì)與應(yīng)用
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/1083938131.html