余浩洋
【摘要】通過深入分析傳統(tǒng)企業(yè)應(yīng)用集成(EAI)不足與優(yōu)勢,將SOA引入到EAI領(lǐng)域,介紹了面向服務(wù)架構(gòu)的基本概念,并討論了相關(guān)的支撐技術(shù),提出了采用SOA模型的企業(yè)應(yīng)用集成架構(gòu),提出了Web服務(wù)集成實現(xiàn)模型,為用戶提供一個靈活、跨平臺、松耦合、可擴(kuò)展的基礎(chǔ)集成服務(wù)平臺。證了應(yīng)用系統(tǒng)在集成平臺中仍保持原先的安全穩(wěn)定性。
【關(guān)鍵詞】面向服務(wù)架構(gòu);企業(yè)應(yīng)用集成;Web服務(wù);服務(wù)模型
引言
隨著分布式技術(shù)的廣泛應(yīng)用和軟件開發(fā)方法研究的不斷深入,基于各種開發(fā)工具和平臺所構(gòu)建的軟件系統(tǒng)得到廣泛應(yīng)用,使得企業(yè)軟件系統(tǒng)日益龐大和復(fù)雜。而且,由于傳統(tǒng)軟件開發(fā)使用的開發(fā)語言、開發(fā)平臺、操作系統(tǒng)、開發(fā)工具在結(jié)構(gòu)上的緊耦合,導(dǎo)致一些部署在不同地域,不同平臺上分散的獨立系統(tǒng)逐漸形成了所謂的“信息孤島”。這就導(dǎo)致迫切需要一種全新的應(yīng)用系統(tǒng)集成方式將企業(yè)內(nèi)部的不同應(yīng)用系統(tǒng)集成在一起,以達(dá)到企業(yè)所希望的IT資源整合的目的。
為了更好地重用已有模塊、加快軟件開發(fā)和縮小平臺環(huán)境的差異,且使被重用的模塊可以順利地由舊系統(tǒng)納入新系統(tǒng),一種面向服務(wù)的體系結(jié)構(gòu)SOA(Service Oriented Architecture)的軟件設(shè)計方法被提了出來。
一、面向服務(wù)架構(gòu)
(一)SOA服務(wù)模型
面向服務(wù)的體系架構(gòu)中共有3種角色,分別是服務(wù)請求者、服務(wù)提供者和服務(wù)注冊中心。它們是構(gòu)成SOA的基礎(chǔ),遵循“發(fā)布、查找、綁定和觸發(fā)”原則,其中,服務(wù)請求者通過查詢服務(wù)注冊中心來查找與其標(biāo)準(zhǔn)匹配的服務(wù),從而執(zhí)行動態(tài)服務(wù)定位。
服務(wù)請求者:是需要使用服務(wù)的應(yīng)用程序或其他的服務(wù)。它發(fā)起對服務(wù)注冊中心的服務(wù)的查詢,根據(jù)接口說明信息并使用服務(wù)綁定與某種傳輸協(xié)議并執(zhí)行服務(wù)功能。
服務(wù)提供者:是一個可通過網(wǎng)絡(luò)尋址,能創(chuàng)建服務(wù)的實體??梢詮姆?wù)請求者處接受請求并遠(yuǎn)程執(zhí)行所請求服務(wù)。通過向注冊中心發(fā)布服務(wù)接口信息,以提供服務(wù)請求者發(fā)現(xiàn)和訪問服務(wù)。
服務(wù)注冊中心:處于中心位置提供了展示服務(wù)的功能,包含一個可用服務(wù)的存儲庫。服務(wù)消費者通過查詢存儲有服務(wù)信息庫的注冊中心以找到感興趣服務(wù)的接口信息。
(二)SOA特點與優(yōu)勢
(1)粗粒度、松耦合。通過一組有效設(shè)計和組合的粗粒度服務(wù),開發(fā)人員能夠有效地組合出新的業(yè)務(wù)流程和應(yīng)用程序。松耦合可以使服務(wù)請求者和服務(wù)提供者在服務(wù)實現(xiàn)和客戶如何使用服務(wù)方面隔離開來。
(2)編碼靈活性??刹捎貌煌M合方式創(chuàng)建高層服務(wù)、基于模塊化的低層服務(wù),從而實現(xiàn)重用,體現(xiàn)了編碼的靈活性。此外,由于服務(wù)請求者不能直接訪問服務(wù)提供者,這種服務(wù)實現(xiàn)方式本身也體現(xiàn)了靈活性。
(3)服務(wù)封裝性和接口標(biāo)準(zhǔn)化。服務(wù)具有良好的封裝性,不僅提高了應(yīng)用系統(tǒng)的邏輯安全性和數(shù)據(jù)安全性,而且還提高了軟件的復(fù)用能力,增強了單個服務(wù)的重用性。通過服務(wù)接口的標(biāo)準(zhǔn)化描述,從而使得該服務(wù)可以提供給任何用戶接口和任何異構(gòu)平臺使用。
二、企業(yè)應(yīng)用集成(EAI)
(一)EAI概述
EAI是指企業(yè)中和企業(yè)之間的任何相連的應(yīng)用間無限制地共享數(shù)據(jù)和業(yè)務(wù)處理,其目的是將企業(yè)的應(yīng)用軟件系統(tǒng)、業(yè)務(wù)流程、各種標(biāo)準(zhǔn)、硬件聯(lián)合起來,在多個企業(yè)應(yīng)用系統(tǒng)之間實現(xiàn)無縫集成,使系統(tǒng)像一個整體一樣進(jìn)行信息、業(yè)務(wù)處理,從而使企業(yè)的整個管理、業(yè)務(wù)、資源等各個環(huán)節(jié),能夠協(xié)調(diào)運轉(zhuǎn),效率最大化,從而最終實現(xiàn)企業(yè)效益的提升。從企業(yè)應(yīng)用集成的具體應(yīng)用范圍來看,企業(yè)應(yīng)用集成包括兩方面:企業(yè)之間的應(yīng)用系統(tǒng)集成和企業(yè)內(nèi)部應(yīng)用系統(tǒng)集成。通過EAI,企業(yè)就可以將新的Interact解決方案和企業(yè)核心應(yīng)用結(jié)合在一起。EAI結(jié)構(gòu)如圖1所示
(二)傳統(tǒng)的EAI方案及其不足
早期的企業(yè)應(yīng)用集成可以說是應(yīng)用之間的復(fù)雜連接,最早EAI開發(fā)者使用點對點的集成方式,這種方案雖然取得了一些成功,但存在種種缺點,一方面隨著集成的系統(tǒng)應(yīng)用越來越多,開發(fā)者需要維護(hù)和編寫代碼的工作量也迅速增長;另一方面這種解決方案只能在它們各自的“信息孤島”中各自為政,而沒有建立在能夠適應(yīng)未來IT需求的基礎(chǔ)之上。為了克服上述點對點集成的缺點,逐漸形成了基于中間件的企業(yè)應(yīng)用集成方案,通過建立一個由中間件組成的企業(yè)應(yīng)用底層架構(gòu),來聯(lián)系整個企業(yè)的異構(gòu)應(yīng)用。
當(dāng)前基于中間件的分布式對象主要集中在:CORBA、RMI、J2EE/JCA、DCOM、EJB上,使用這些分布式處理中間件技術(shù)在Web環(huán)境中,雖然克服了點對點集成方式的缺點,但也存在一定的局限性:
首先,它們的體系架構(gòu)并不適合擴(kuò)展到Web上,包括應(yīng)用服務(wù)的訪問和發(fā)布,即使有相當(dāng)?shù)难由?,但?yīng)用間的交互還不是依賴于Web技術(shù)。
其次,各種分布式計算技術(shù)雖然都基于各自的標(biāo)準(zhǔn),但由于數(shù)據(jù)定義、傳輸、訪問模型等機(jī)制的差異,各自的應(yīng)用還是不容易互連互通,直接集成的難度較大。在信息表達(dá)和交換方面,XML技術(shù)有極大的發(fā)展空間,但在現(xiàn)有的分布計算平臺中融入這種技術(shù)并不合適,因此不便于廣泛的應(yīng)用交互。
因此,面向服務(wù)的架構(gòu)SOA應(yīng)運而生,它是信息系統(tǒng)集成的新構(gòu)架,是實現(xiàn)Web平臺上異構(gòu)系統(tǒng)整合的最佳解決方案。
三、基于SOA的EAI框架
(一)SOA企業(yè)應(yīng)用集成架構(gòu)
基于SOA的企業(yè)應(yīng)用集成架構(gòu)是將開放的、高靈活的WebServices技術(shù)與傳統(tǒng)的集成方法整合在一起提出的一種新型集成框架。通過面向服務(wù)的集成可以提供一個抽象的接口、用戶不需要詳細(xì)了解底層的編程接口和協(xié)議,就可進(jìn)行系統(tǒng)交互。系統(tǒng)只需要以服務(wù)的形式為用戶提供交換,其集成框架如圖2所示。
這里的客戶端可以是需要擴(kuò)展功能的遺留應(yīng)用,也可以是新的客戶端應(yīng)用。每一個遺留應(yīng)用可以根據(jù)業(yè)務(wù)需求,封裝成一個或者多個服務(wù)。根據(jù)調(diào)用相互的Web服務(wù),多個遺留應(yīng)用之間可以進(jìn)行業(yè)務(wù)的協(xié)作處理,這屬于功能層的集成,但是如果被集成的遺留應(yīng)用之間具有不同的數(shù)據(jù)存儲系統(tǒng),那么在集成過程還必須包括數(shù)據(jù)類型的轉(zhuǎn)換。
(二)Web服務(wù)集成實現(xiàn)模型
Web服務(wù)的集成實現(xiàn)模型從下到上大致可以分為6層:網(wǎng)絡(luò)通信層、消息傳輸層、服務(wù)描述層、服務(wù)發(fā)現(xiàn)層、服務(wù)保證層和服務(wù)組合層。
(1)網(wǎng)絡(luò)通信層。由于Web服務(wù)是通過網(wǎng)絡(luò)基礎(chǔ)措施進(jìn)行消息傳遞和數(shù)據(jù)發(fā)送,以實現(xiàn)與服務(wù)請求者交互的目的,因此需要使用Intemet的標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議進(jìn)行傳送數(shù)據(jù)。
(2)消息傳輸層。網(wǎng)絡(luò)通信層的上一層是消息傳輸層。消息傳輸層負(fù)責(zé)安排消息的格式。該層使用SOAP協(xié)議進(jìn)行消息格式的組織,并將消息以XML格式的進(jìn)行發(fā)送。
(3)服務(wù)描述層。消息傳輸層的上一層是服務(wù)描述層。服務(wù)描述層主要提供服務(wù)部署信息和服務(wù)的接口描述信息等。該層利用WSDL作為其描述服務(wù)的方式。
(4)服務(wù)發(fā)現(xiàn)層。服務(wù)描述層的上一層是服務(wù)發(fā)現(xiàn)層。服務(wù)發(fā)現(xiàn)層是基于UDDI協(xié)議的。UDDI是通用描述、發(fā)現(xiàn)和集成協(xié)議的簡稱。
(5)服務(wù)保證層。服務(wù)保證層處理有關(guān)Web服務(wù)調(diào)用的安全性以及協(xié)調(diào)事務(wù),并保證Web服務(wù)消息的可靠傳輸。
(6)服務(wù)組合層。Web服務(wù)集成實現(xiàn)模型的最上層是服務(wù)組合層。一個業(yè)務(wù)流程通常需要通過多個Web服務(wù)相互之間的協(xié)作來完成。服務(wù)組合層將多個Web服務(wù)聯(lián)合起來。按照業(yè)務(wù)流程的邏輯順序依次進(jìn)行調(diào)用完成系統(tǒng)的目標(biāo)。
四、結(jié)束語
面向服務(wù)的體系架構(gòu)使企業(yè)能夠在原有系統(tǒng)的基礎(chǔ)上集成,從而實現(xiàn)新功能的擴(kuò)展,大大降低了業(yè)務(wù)模塊之間的藕合度。從而減少了不必要的重復(fù)開發(fā),為了滿足新業(yè)務(wù)的需求服務(wù)之間可以進(jìn)行組合,很好地解決了傳統(tǒng)企業(yè)應(yīng)用系統(tǒng)集成存在的問題。由于基于SOA架構(gòu)的企業(yè)應(yīng)用集成平臺實現(xiàn)企業(yè)整合目標(biāo),仍然需要相應(yīng)系統(tǒng)提供服務(wù)的支持,因此,企業(yè)應(yīng)用整合目標(biāo)的實現(xiàn)仍然需要企業(yè)自身投入對新系統(tǒng)對SOA架構(gòu)的支持和遺留系統(tǒng)的改造。