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