摘要:論文對SOA的基本概念和發(fā)展進(jìn)行了闡述,指出了SOA的核心內(nèi)容和實(shí)體操作,使得SOA的原理和概念更加的清楚。然后從實(shí)用的角度,探討了SOA的具體實(shí)現(xiàn),特別是指出了.NET下信息系統(tǒng)中SOA的集成。論文對SOA的具體應(yīng)用,有著重要的實(shí)踐指導(dǎo)意義。
關(guān)鍵詞:SOA;面向服務(wù);信息系統(tǒng);軟件工程
中圖分類號:TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號:1009-3044(2009)32-8873-02
Application of SOA Architecture in Information System
YE Wen
(Elegant Safety Vocational College, Electromechanic and Information Engineering Department, Ya'an 625000, China)
Abstract: The basic concept of SOA and its development are expounded. The ore content of SOA are pointed out.This makes its concept and principle of the SOA have a clear understanding.From the practical viewpoint, The realization of SOA is discussed, particularly the information system of.net SOA integration is demonstrated.What has been discussed in this paper is of great value for practical significance.
Key words: SOA; service oriented; information system; software engineering
近些年來在企業(yè)級應(yīng)用開發(fā)領(lǐng)域,談?wù)撦^多的一個(gè)方法就是SOA(Service-Oriented Architecture,面向服務(wù)架構(gòu))了。SOA憑借著其強(qiáng)大的功能與特性,使得眾多的軟件廠商趨之若鶩,掀起了一輪新的企業(yè)架構(gòu)浪潮。許多領(lǐng)先的企業(yè)正在通過構(gòu)建在真正靈活的面向服務(wù)的架構(gòu)(SOA)基礎(chǔ)上的適應(yīng)性強(qiáng)、可重用的業(yè)務(wù)流程和服務(wù)來提升業(yè)務(wù)運(yùn)營效率,實(shí)現(xiàn)業(yè)務(wù)的靈活擴(kuò)展。本文為了更好的理解SOA的作用,使得其特點(diǎn)為更多人所知道,探索SOA在信息系統(tǒng)中的應(yīng)用。
1 SOA的基本概念與發(fā)展
Gartner Group于1996年最早提出了面向服務(wù)構(gòu)架SOA,其最初的應(yīng)用并不是為了企業(yè)系統(tǒng),但是由于Web Service的廣泛應(yīng)用,SOA企業(yè)化應(yīng)用的趨勢明顯加強(qiáng)。如何合理地把Web服務(wù)應(yīng)用到各類企業(yè)的IT系統(tǒng)和商業(yè)流程之中、并給企業(yè)帶來直接的經(jīng)濟(jì)效益,如何使企業(yè)IT環(huán)境更靈活且更快地響應(yīng)不斷改變的業(yè)務(wù)需求,如何使異構(gòu)系統(tǒng)和應(yīng)用程序盡可能無縫地進(jìn)行通信,一直是各受國內(nèi)外企業(yè)管理者高度關(guān)注的課題。面向服務(wù)架構(gòu)SOA就是在此背景下出現(xiàn)的,SOA被譽(yù)為下一代Web服務(wù)的基礎(chǔ)框架,目前已經(jīng)成為計(jì)算機(jī)信息領(lǐng)域的一個(gè)新的發(fā)展方向。
2 SOA的核心內(nèi)容
SOA的關(guān)鍵是“服務(wù)”的概念。從業(yè)務(wù)的角度來看,服務(wù)(Service)是對應(yīng)于真實(shí)的業(yè)務(wù)活動(dòng)或可識(shí)別的業(yè)務(wù)功能的IT資產(chǎn),而服務(wù)策略規(guī)定了哪些人或事物可以使用該服務(wù)、何時(shí)可以使用該服務(wù)、使用該服務(wù)的代價(jià)、該服務(wù)的可靠性等級、該服務(wù)的安全等級、該服務(wù)的性能等級等等。從技術(shù)角度來看,服務(wù)是粗粒度的、可重用的IT資產(chǎn),良好的接口定義(即服務(wù)契約)令服務(wù)的外部訪問接口與內(nèi)部技術(shù)實(shí)現(xiàn)相分離。“單獨(dú)的”、“獨(dú)立的”、“封裝完善的”服務(wù)所具有的一個(gè)關(guān)鍵的好處是,可以采用多種不同方法將它們組合成較大型的服務(wù),由此來實(shí)現(xiàn)重用。服務(wù)由下面幾個(gè)部分組成:
服務(wù)合約:提供一個(gè)信息規(guī)范,說明服務(wù)的作用、功能和使用。規(guī)范的格式因服務(wù)類型而異。服務(wù)合約的一個(gè)可選元素是基于IDL或WSDL等語言的正式接口定義。
接口:服務(wù)接口將服務(wù)的功能向服務(wù)客戶公開。接口描述是服務(wù)合約的一部分。
實(shí)現(xiàn):服務(wù)實(shí)現(xiàn)在物理上提供所需業(yè)務(wù)邏輯和適當(dāng)數(shù)據(jù)。在技術(shù)上實(shí)現(xiàn)服務(wù)合約。服務(wù)實(shí)現(xiàn)由一個(gè)或多個(gè)工件組成:如程序、配置數(shù)據(jù)和數(shù)據(jù)庫。
業(yè)務(wù)邏輯:由服務(wù)封裝,是服務(wù)實(shí)現(xiàn)的一部分。可通過服務(wù)接口訪問業(yè)務(wù)邏輯。
數(shù)據(jù):服務(wù)還包含數(shù)據(jù)。“以數(shù)據(jù)為中心”的服務(wù)當(dāng)然離不開數(shù)據(jù)。
如前所述,服務(wù)不僅封裝了應(yīng)用程序較低層的一些代碼。由于各個(gè)服務(wù)都是一個(gè)明確的功能實(shí)體,故常封裝高級業(yè)務(wù)實(shí)體。
3 SOA中的實(shí)體和操作
圖1展示了面向服務(wù)的體系結(jié)構(gòu)中的實(shí)體和操作。其中操作遵循“查找、綁定和調(diào)用”范例。服務(wù)使用者執(zhí)行動(dòng)態(tài)服務(wù)定位,方法是查詢服務(wù)注冊中心來查找與其標(biāo)準(zhǔn)匹配的服務(wù)。如果服務(wù)存在,注冊中心就給使用者提供接口契約和服務(wù)的端點(diǎn)地址。面向服務(wù)的體系結(jié)構(gòu)中的實(shí)體包括:1)服務(wù)使用者:服務(wù)使用者是一個(gè)應(yīng)用程序、一個(gè)軟件模塊或需要一個(gè)服務(wù)的另一個(gè)服務(wù)。它發(fā)起對注冊中心中的服務(wù)的查詢,通過傳輸綁定服務(wù),并且執(zhí)行服務(wù)功能。服務(wù)使用者根據(jù)接口契約來執(zhí)行服務(wù)。2)服務(wù)提供者:服務(wù)提供者是一個(gè)可通過網(wǎng)絡(luò)尋址的實(shí)體,它接受和執(zhí)行來自使用者的請求。它將自己的服務(wù)和接口契約發(fā)布到服務(wù)注冊中心,以便服務(wù)使用者可以發(fā)現(xiàn)和訪問該服務(wù)。3)服務(wù)注冊中心:服務(wù)注冊中心是服務(wù)發(fā)現(xiàn)的支持者。它包含一個(gè)可用服務(wù)的存儲(chǔ)庫,并允許感興趣的服務(wù)使用者查找服務(wù)提供者接口。
面向服務(wù)的體系結(jié)構(gòu)中的每個(gè)實(shí)體都扮演著服務(wù)提供者、使用者和注冊中心這三種實(shí)體中的某一種(或多種)。面向服務(wù)的體系結(jié)構(gòu)中的操作包括:1)發(fā)布:為了使服務(wù)可訪問,需要發(fā)布服務(wù)描述以使服務(wù)使用者可以發(fā)現(xiàn)和調(diào)用它。2)發(fā)現(xiàn):服務(wù)請求者定位服務(wù),方法是查詢服務(wù)注冊中心來找到滿足其標(biāo)準(zhǔn)的服務(wù)。3)綁定和調(diào)用:在檢索完服務(wù)描述之后,服務(wù)使用者繼續(xù)根據(jù)服務(wù)描述中的信息來調(diào)用服務(wù)。
面向服務(wù)的體系結(jié)構(gòu)中的構(gòu)件包括:1)服務(wù):可以通過己發(fā)布接口使用服務(wù),并且允許服務(wù)使用者調(diào)用服務(wù)。2)服務(wù)描述:服務(wù)描述指定服務(wù)使用者與服務(wù)提供者交互的方式。它指定來自服務(wù)的請求和響應(yīng)的格式。
4 SOA在信息系統(tǒng)中實(shí)現(xiàn)方式
4.1 主要的SOA思路
目前SOA的實(shí)現(xiàn)可以采用三種主要的技術(shù)思路:CORBA(Common Object Request Broker Architecture,通用對象請求代理體系結(jié)構(gòu),基本上是面向消息的中間件解決思路)、WSDL(也就是Web服務(wù)的方式)、服務(wù)代理注冊方式。這三種方式中,WSDL的Web服務(wù)的方式是我們目前最為關(guān)注的核心。所以運(yùn)用Web服務(wù)和服務(wù)代理注冊方式就成為主要的實(shí)現(xiàn)方案。其中Web服務(wù)方式是現(xiàn)在眾多企業(yè)關(guān)注的熱點(diǎn),而且Web服務(wù)或服務(wù)代理注冊的方式,更容易實(shí)現(xiàn),而且更具有現(xiàn)實(shí)意義。由于CORBA技術(shù)難度有目共睹,而且CORBA并不是一個(gè)真正意義上的SOA實(shí)現(xiàn)。
4.2 WEB服務(wù)技術(shù)
Web Services是目前最適合實(shí)現(xiàn)SOA的一些技術(shù)的集合,事實(shí)上最近SOA的火爆在很大程度上歸功于Web Services標(biāo)準(zhǔn)的成熟和應(yīng)用的普及,這些為廣泛的實(shí)現(xiàn)SOA架構(gòu)提供了基礎(chǔ)。Web服務(wù)作為SOA一種良好的實(shí)現(xiàn)技術(shù),使得面向服務(wù)的體系結(jié)構(gòu)同以往的體系結(jié)構(gòu)(如客戶端/服務(wù)器結(jié)構(gòu))相比有了更好的特性,突出表現(xiàn)在:
1) 整體結(jié)構(gòu)的分布性:應(yīng)用的功能性元素被部署到多個(gè)系統(tǒng),本地甚至遠(yuǎn)程網(wǎng)絡(luò)之上。Web服務(wù)能夠充分利用Internet上業(yè)己普遍采用的HTTP作為傳輸?shù)牡讓訁f(xié)議,使其穿越企業(yè)的防火墻,實(shí)現(xiàn)跨越企業(yè)邊界的交互;2) 松耦合的可集成性:相比傳統(tǒng)的應(yīng)用系統(tǒng)設(shè)計(jì)模式,基于Web服務(wù)的松耦合系統(tǒng)很容易通過重新配置實(shí)現(xiàn)功能元素的替換,交互簡單,具有很好的擴(kuò)展性和靈活性;3) 標(biāo)準(zhǔn)的開放性:采用開放標(biāo)準(zhǔn)是SOA能夠成功的一個(gè)很關(guān)鍵的因素,傳統(tǒng)的分布式運(yùn)算技術(shù),比如CORBA,DCOM,RMI往往要基于特定實(shí)現(xiàn),特定的軟件提供商,實(shí)現(xiàn)非常繁復(fù),阻礙了應(yīng)用的推進(jìn);4) 應(yīng)用過程的可管理性:在SOA中,每一個(gè)獨(dú)立的服務(wù)被設(shè)計(jì)成為面向業(yè)務(wù)的功能性元素,同時(shí)它又作為企業(yè)過程或工作流的一環(huán)。一個(gè)設(shè)計(jì)良好的服務(wù)通過對其輸入和輸出的清晰的描述,使得其它服務(wù)通過了解描述就知道如何對服務(wù)進(jìn)行調(diào)用,尤其是在Web服務(wù)結(jié)構(gòu)中使用了WSDL規(guī)范描述,從而能夠?qū)崿F(xiàn)調(diào)用的自動(dòng)化處理。
4.3 ASP.NET下的WEB服務(wù)
本文討論一種應(yīng)用性很強(qiáng)的WEB服務(wù)技術(shù),可以很容易的應(yīng)用到信息系統(tǒng)開發(fā)中。ASP.NET在IIS和.NET框架之間通過HTTP管道來處理Web服務(wù)請求,如圖2。ASP.NET通過HTTP管道來截取80端口的網(wǎng)絡(luò)通信并將各種數(shù)據(jù)包指派給處理程序。在任何指定的時(shí)間都有一個(gè)進(jìn)程在處理Web服務(wù)。
Web服務(wù)請求者將它們的SOAP請求數(shù)據(jù)包發(fā)給Web服務(wù)的URL。這時(shí),IIS截獲HTTP請求,并將它傳給ASP.NET的ISAPI擴(kuò)展。該數(shù)據(jù)包將被查看是否是一個(gè)Web服務(wù)數(shù)據(jù)包,服務(wù)請求至少對Web服務(wù)進(jìn)行兩次訪問,一次是請求WSDL文件,此后多次訪問時(shí)用來調(diào)用服務(wù)的。Web服務(wù)的實(shí)現(xiàn)過程:
1)Web服務(wù)的創(chuàng)建:.Net提供了一個(gè)ASP.NET Web服務(wù)項(xiàng)目模板,利用該模版可以創(chuàng)建Web服務(wù)。可以在代碼文件里面的[webmethod]下編寫實(shí)現(xiàn)具體功能的Web方法,以供服務(wù)請求者調(diào)用。2)Web服務(wù)的發(fā)布:Web服務(wù)的發(fā)布有兩種方法:一是把需要發(fā)布的服務(wù)整個(gè)項(xiàng)目拷貝到Web服務(wù)器;另一個(gè)方法是在UDDI注冊中心進(jìn)行注冊,向服務(wù)請求者公布服務(wù)接口和服務(wù)合約。3)Web Service的發(fā)現(xiàn)調(diào)用:在.NET開發(fā)平臺(tái)內(nèi)建了對Web服務(wù)的發(fā)現(xiàn)機(jī)制,在集成開發(fā)環(huán)境Visual Studio.NET的解決方案中,右鍵單擊“引用”文件夾,選擇上下文菜單中的“添加引用”菜單項(xiàng),將出現(xiàn)帶URL的界面。在URL地址里添加服務(wù)的地址直接定位所需要的服務(wù)或者通過鏈接在本地計(jì)算機(jī)上,本地網(wǎng)絡(luò)上的UDDI服務(wù)器以及公用UDDI目錄里查找需要的Web服務(wù)。在這里不僅能看到Web服務(wù)包含的所有操作,也能看到該服務(wù)的服務(wù)說明文件(WSDL文件)。添加引用后,將在項(xiàng)目中創(chuàng)建該服務(wù)的代理,完成相應(yīng)的功能。
參考文獻(xiàn):
[1] 柴曉路,梁宇路.Web services技術(shù)、架構(gòu)和應(yīng)用[M].北京:電子工業(yè)出版社,2003:126-128.
[2] 王迪.IBM提升在SOA領(lǐng)域的地位[J].世界電信,2004:156-161.
[3] 郭晉偉.SOA架構(gòu)的管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].沈陽: 中國科學(xué)院研究生院,2006:4.