摘要:SOA的概念已經(jīng)誕生多年,業(yè)界對其商業(yè)模式也處于不斷的討論和摸索中,SOA可以譯為面向服務(wù)的體系架構(gòu)。普遍認為,SOA是面向全部IT資產(chǎn)的一種體系架構(gòu),通過以特定的規(guī)格將這些資產(chǎn)以服務(wù)的形式進行描述,可以實現(xiàn)服務(wù)的重復(fù)應(yīng)用,從而提高IT資產(chǎn)的適應(yīng)能力并更好地發(fā)揮效用。文章介紹了SOA的基礎(chǔ),包括SOA的體系架構(gòu)及描述方法,通過實例分析了如何應(yīng)用SOA進行軟件的開發(fā)以及實現(xiàn),以及如何有效的通過漸進式方法來部署SOA架構(gòu)。
關(guān)鍵詞:SOA;SOAP;WSDL;漸進式部署
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)06-10ppp-0c
Analysis the Application and Deployment of SOA
WEN Jian-guo, LI Xiong
(Information Occupation Technique Institute of Hunan, Changsha 410001,China)
Abstract: Before many years, the conception of SOA has invented, and many experts always study on their pattern of commerce. Commonly, SOA is an architecture oriented the resource of all information technology, the resource was descript using specifically standard by service, the service can be reuse and improved the adaption of the resource of IT. This paper introduces the base of SOA, include the descript method of SOA architecture, analysis how to develop and implement the software based SOA, and how to effectively deploy the architecture of SOA by gradually method.
Key words: SOA; SOAP; WSDL; Gradually Deploy
1 引言
SOA的概念已經(jīng)誕生多年,其應(yīng)用一直都很“神秘”,業(yè)界對其商業(yè)模式也處于不斷的討論和摸索中,但難掩用戶對SOA應(yīng)用的高漲熱情。當前,許多專家和用戶們認識到SOA并非僅僅是一套工具或一次服務(wù)實踐,而是涵蓋方法論、工具、多個切入點、最佳實踐以及對整個生命周期進行改革的整套架構(gòu)。
SOA給企業(yè)用戶帶來了許多誘人的“愿景”,包括:更有效的軟件構(gòu)造模式、廣泛的重用、提高系統(tǒng)的集成能力、規(guī)范資源建設(shè)及資源(動態(tài))優(yōu)化利用、節(jié)約成本、更好的應(yīng)變和系統(tǒng)重構(gòu)能力等等。然而,近幾年SOA在迅猛發(fā)展的同時也不斷地受到質(zhì)疑,人們對于未來基于SOA的商業(yè)模式一直都在討論和摸索,而SOA帶來的一些問題,如服務(wù)質(zhì)量、效率、服務(wù)安全、部署、編程模式、工程方法,特別是SOA的業(yè)務(wù)規(guī)范及標準等問題都存在著極大的不確定性。盡管如此,當前絕大多數(shù)企業(yè)仍然在積極地尋求SOA落地的更好方法,可見企業(yè)用戶真正參與到SOA的部署之中的需求更加迫切,SOA應(yīng)用熱潮正一浪高過一浪。
2 SOA基礎(chǔ)
SOA(Service-Oriented Architecture的簡寫),可以譯為面向服務(wù)的體系架構(gòu)。普遍認為,SOA是面向全部IT資產(chǎn)的一種體系架構(gòu),通過以特定的規(guī)格將這些資產(chǎn)以服務(wù)的形式進行描述,可以實現(xiàn)服務(wù)的重復(fù)應(yīng)用,從而提高IT資產(chǎn)的適應(yīng)能力并更好地發(fā)揮效用。
目前SOA可以通過很多種技術(shù)進行實現(xiàn),不同的廠商提供了不同的解決方案,但是從基礎(chǔ)技術(shù)層面分析,SOA還是擁有自己慣用的或者說主要的一組技術(shù),下面我們分別講解在構(gòu)建SOA的過程中經(jīng)常應(yīng)用的一些技術(shù)。
2.1 異構(gòu)服務(wù)交互
在最初版本的SOAP當中,這個概念是指簡單對象訪問協(xié)議,不過隨著時間的推移,無論是開發(fā)人員還是這項標準的締造者都已經(jīng)不再滿足于將其僅僅應(yīng)用于對象了。SOAP的規(guī)范目前已經(jīng)將目標轉(zhuǎn)移到基于XML進行消息處理的框架上面,根據(jù)較新的SOAP規(guī)范定義,SOAP是一種用于在分布式環(huán)境中交換結(jié)構(gòu)化信息的輕量級協(xié)議。基于XML技術(shù),SOAP定義出一種容易擴展的消息處理框架,基于該框架用戶可以在各種不同的底層協(xié)議上完成消息的交換,令用戶可以使用任何技術(shù)機制進行實現(xiàn)。SOAP并不是SOA完成消息交換的強制實現(xiàn),但是由于在需要協(xié)作的用戶之間往往具有不同的IT基礎(chǔ)設(shè)施結(jié)構(gòu),為了發(fā)揮SOA在彌合異構(gòu)平臺方面的核心作用,SOAP是支持異構(gòu)服務(wù)交互的一種非常有效的方法。
2.2 描述Web服務(wù)
WSDL是Web服務(wù)描述語言的簡稱,用于描述Web服務(wù)。從本質(zhì)上來講,WSDL是提供Web服務(wù)間交互的基礎(chǔ)。在Web服務(wù)應(yīng)用的過程中,一個很重要的特性就是Web服務(wù)之間的互相發(fā)現(xiàn),這就要求不同供應(yīng)商所提供的Web服務(wù)要具有統(tǒng)一的規(guī)范,即基于同樣的樣式進行描述[1],這正是WSDL所起到的作用。當不同的服務(wù)通過WSDL標識了自己,就意味著其他Web服務(wù)可以發(fā)現(xiàn)并理解自己,從而最終對自己進行調(diào)用。這個基于WSDL生成的對于Web服務(wù)的描述信息,可以經(jīng)由SOAP來完成交換[2]。在SOA當中之所以大量地使用Web服務(wù)所使用的技術(shù),核心原因在于Web服務(wù)能夠解決很多CORBA這樣以組件為基礎(chǔ)的體系中的一些問題。例如,面向組件的體系相對比較復(fù)雜,CORBA有一套自己的編程體系,如果需要使用CORBA就必須學(xué)習(xí)一系列全新的知識和規(guī)范[3]。而Web服務(wù)無需開發(fā)人員轉(zhuǎn)換到另一種開發(fā)模型當中,使用自己慣用的Java或者.NET開發(fā)技術(shù)都可以直接進行Web服務(wù)的開發(fā)。事實上,Web服務(wù)提供了一種接口或者中介,它能夠更加輕松和透明地將已有的業(yè)務(wù)導(dǎo)入到新的模式當中。另外,Web服務(wù)基于HTTP協(xié)議的通信和基于XML的定義方式都是標準實現(xiàn),可以輕松地提供SOA所需的跨平臺特性。當然,在需要的時候Web服務(wù)也可以應(yīng)用很多其他的協(xié)議來實現(xiàn)。因此說,在某些層面是SOA選擇了Web服務(wù),而從發(fā)展的角度來看,SOA也是建構(gòu)在Web服務(wù)上的,是一種對Web服務(wù)的延伸,絕大部分在Web服務(wù)中使用的開發(fā)技術(shù)都可以直接應(yīng)用于構(gòu)建SOA[5]。
2.3 開放信息交換體系
企業(yè)服務(wù)總線(Enterprise Service Bus,ESB)是實現(xiàn)SOA的一組最為重要的技術(shù),很多SOA的構(gòu)建和實施都是基于企業(yè)服務(wù)總線完成的[4]。從本質(zhì)上看,ESB是一種開放的、基于標準的消息交換體系,可以使用SOAP,也可以使用其他符合標準要求的消息機制來實現(xiàn)。通過提供接口,ESB可以在服務(wù)層面以及比服務(wù)更細致的組件層面實現(xiàn)互操作[6]。一般來說,ESB內(nèi)涵消息處理、服務(wù)通信、服務(wù)質(zhì)量、安全等諸多方面的功能,也提供建模、自主管理、基礎(chǔ)架構(gòu)智能等更高的支持。ESB從服務(wù)的構(gòu)建開始,更好地管理服務(wù)的整個生命周期,可以最大限度實現(xiàn)服務(wù)之間的整合。在很多的ESB實現(xiàn)當中也應(yīng)用了中間件技術(shù),基于中間件的實現(xiàn)與基于Web服務(wù)的實現(xiàn)相比,能夠更加降低體系的耦合度。圖1描述了SOA的基本架構(gòu)。
圖1 SOA基本架構(gòu)圖
3 SOA應(yīng)用實現(xiàn)
雖然面向服務(wù)的體系結(jié)構(gòu)不是一個新鮮事物,但它是更傳統(tǒng)的面向?qū)ο蟮哪P偷奶娲P?。面向?qū)ο蟮哪P褪蔷o耦合的,已經(jīng)存在20多年了。雖然基于SOA的系統(tǒng)并不排除使用面向?qū)ο蟮脑O(shè)計來構(gòu)建單個服務(wù),但是其整體設(shè)計是面向服務(wù)的。當然,現(xiàn)在的SOA已經(jīng)有所不同了,因為它依賴于一些更新的進展,這些進展是以可擴展標記語言(eXtensible Markup Language,XMI)為基礎(chǔ)的。當使用基于XMI的語言(稱為Web服務(wù)描述語言,Web Services Definition Language,WSDL)來描述接口時,服務(wù)已經(jīng)轉(zhuǎn)到更動態(tài)且更靈活的接口系統(tǒng)中,非以前CORBA中的接口描述語言(Interface Definition Language,IDL)可比了。
Web服務(wù)并不是實現(xiàn)SOA的惟一方式。而CORBA是另一種方式,這樣就有了面向消息的中間件(Message-Oriented Middleware)系統(tǒng)。但為了建立體系結(jié)構(gòu)模型,所需要的并不只是服務(wù)描述。這就需要定義整個應(yīng)用程序如何在服務(wù)之間執(zhí)行其工作流,尤其需要找到業(yè)務(wù)操作和業(yè)務(wù)所使用的軟件的操作之間的轉(zhuǎn)換點。因此,SOA應(yīng)該能夠?qū)I(yè)務(wù)的商業(yè)流程與它們的技術(shù)流程聯(lián)系起來,并且映射這兩者之間的關(guān)系。例如,給供應(yīng)商付款的操作是商業(yè)流程,而更新您的零件數(shù)據(jù)庫等卻是技術(shù)流程。因而,工作流還可以在SOA的設(shè)計中扮演重要的角色。
此外,動態(tài)業(yè)務(wù)的工作流不僅可以包括部門之間的操作,甚至還可以包括與不為您控制的外部合作伙伴進行的操作。因此,為了提高效率,就需要定義應(yīng)該如何得知服務(wù)之間關(guān)系的策略,這種策略常常采用服務(wù)級協(xié)定和操作策略的形式。
最后,所有這些都必須處于一個信任和可靠的環(huán)境之中,以同預(yù)期的一樣根據(jù)約定的條款來執(zhí)行流程。因此,安全、信任和可靠的消息傳遞應(yīng)該在任何SOA中都起著重要的作用。
對SOA的需要來源于使業(yè)務(wù)IT系統(tǒng)變得更加靈活的需要,以適應(yīng)業(yè)務(wù)中的改變。通過允許強定義的關(guān)系和依然靈活的特定實現(xiàn),IT系統(tǒng)既可以利用現(xiàn)有系統(tǒng)的功能,又可以準備在以后做一些改變來滿足它們之間交互的需要。
下面舉一個具體的例子。一個服裝零售組織擁有500家國際連鎖店,它們常常需要更改設(shè)計來趕上時尚的潮流。這可能意味著不僅需要更改樣式和顏色,甚至還可能需要更換布料、制造商和可交付的產(chǎn)品。如果零售商和制造商之間的系統(tǒng)不兼容,那么從一個供應(yīng)商到另一個供應(yīng)商的更換可能就是一個非常復(fù)雜的軟件流程。通過利用WSDL接口在操作方面的靈活性,每個公司都可以將它們的現(xiàn)有系統(tǒng)保持現(xiàn)狀,而僅僅匹配WSDL接口并制訂新的服務(wù)級協(xié)定,這樣就不必完全重構(gòu)它們的軟件系統(tǒng)了。也就是說,它們改變的是合作伙伴,而所有的業(yè)務(wù)操作基本上都保持不變。
另一種形式是內(nèi)部改變。在這種改變中,零售組織現(xiàn)在決定它還將把連鎖零售商店內(nèi)的一些地方出租給專賣流行衣服的小商店,這可以看作是采用店中店(store-in-store)的業(yè)務(wù)模型。這里,雖然公司的大多數(shù)業(yè)務(wù)操作都保持不變,但是它們現(xiàn)在需要新的內(nèi)部軟件來處理這樣的出租安排。盡管在內(nèi)部軟件系統(tǒng)可以承受全面的檢修,但是它們需要在這樣做的同時不會對與現(xiàn)有的供應(yīng)商系統(tǒng)交互產(chǎn)生大的影響。在這種情況下,SOA模型保持原封不動,而內(nèi)部實現(xiàn)卻發(fā)生了變化。這樣就可以將新的方面添加到SOA模型中來,如加入新的出租安排的職責(zé),但是正常的零售管理系統(tǒng)繼續(xù)如往常一樣。
總之,適應(yīng)SOA系統(tǒng)的改變能力是最重要的部分。對于開發(fā)人員來說,這樣的改變無論是在他們工作的范圍之內(nèi)還是在他們工作的范圍之外都有可能發(fā)生,這取決于是否知道接口是如何定義的以及它們相互之間如何進行交互的。與開發(fā)人員不同的是,架構(gòu)師的作用就是實現(xiàn)對SOA模型大的改變。這種分工,就是讓開發(fā)人員集中精力于創(chuàng)建作為服務(wù)定義的功能單元,而讓架構(gòu)師和建模人員集中精力于如何將這些單元適當?shù)亟M織在一起。
4 SOA的漸進式部署
“很長一段時間以來,我們都把IT認為是一個集中式的體系,如大型主機和C/S(服務(wù)器/客戶機)、B/S(瀏覽器/服務(wù)器)時代,但是這種模式是有局限性的?!狈植际絊OA架構(gòu)的總設(shè)計師、IONA科技公司首席技術(shù)官Eric Newcomer在日前接受采訪時告訴記者:“實際上,分布式的IT系統(tǒng)更高效。這一點上,我們可以參考一下互聯(lián)網(wǎng),由于采用了分布式的體系,互聯(lián)網(wǎng)效率非常高,成本效益也非常高,可擴展性非常好?!?/p>
Eric Newcomer表示,SOA在本質(zhì)上就是一種分布式架構(gòu)。作為SOA的核心要素之一,服務(wù)的目的是要實現(xiàn)與另一項服務(wù)的遠程通信,尤其是要實現(xiàn)數(shù)據(jù)互享。用戶部署SOA架構(gòu)的目的也是要改變IT系統(tǒng)的構(gòu)建方式,由原來建立專有的單一應(yīng)用變?yōu)榻⒏鼮楦呒壓驼系膽?yīng)用,這種應(yīng)用的顯著特點就是充分利用已有的、可以共享和重復(fù)使用的功能,也就是服務(wù)。”
與集中式的SOA架構(gòu)相比,分布式SOA架構(gòu)能更好地應(yīng)對不斷變化的技術(shù)和業(yè)務(wù)環(huán)境。比如,與過去流行的EAI(企業(yè)應(yīng)用集成)方式相似,集中式的SOA由于在項目建設(shè)之初,需要先建立一個集中的控制點(如消息總線),哪怕是再小的項目也是如此,這往往會提高項目門檻,抑制用戶部署SOA的積極性,特別是中小企業(yè)用戶。而分布式SOA沒有集中的控制點,允許客戶按照自己的計劃漸進地部署服務(wù),比如一次部署一兩個服務(wù),在未來根據(jù)具體的業(yè)務(wù)需要,再為系統(tǒng)擴容,如增加服務(wù)編排、注冊/貯存、管理等各項高級功能。
“在部署和使用可共享和重復(fù)使用的服務(wù)方面,分布式SOA架構(gòu)更簡單易行,從而對目前業(yè)界普遍認同的漸進式的部署提供了更好的支持,同時,具備更強的部署靈活性、適應(yīng)性和可維護性(例如,一個服務(wù)與整個應(yīng)用來比,對服務(wù)的驗證和升級要容易得多)。”Eric Newcomer說。
參考文獻:
[1]張廣勝,蔣昌俊,湯憲飛,等.面向服務(wù)的企業(yè)應(yīng)用集成系統(tǒng)描述與驗證[J].軟件學(xué)報,2007(12).
[2]Shan TC.Wachovia,C.Hua WW. Service-Oriented solution framework for intemet banking. The Int'l Journal of Web Services Research(JWSR),2006,3(1):29-48.
[3]苗哲,張黎寧,孫萬硯.基于Web服務(wù)的高校教務(wù)管理系統(tǒng)的設(shè)計與實現(xiàn)[J].教育信息化,2006(11).
[4]田霖,于建軍,王劍白,康建初. WebService技術(shù)在教育資源整合中的研究與實現(xiàn)[J].計算機工程與設(shè)計,2004,(12) .
[5]靳風(fēng)榮,鄭雪峰,孫國輝.SOAP協(xié)議及其在企業(yè)信息集成中的應(yīng)用研究[J].微計算機信息,2004,(04).
[6]吳家菊,劉剛,席傳裕.基于Web服務(wù)的面向服務(wù)(SOA)架構(gòu)研究[J].現(xiàn)代電子技術(shù),2005(14).
收稿日期:2008-01-12
作者簡介:溫建國,男,助教,主要研究方向:計算機網(wǎng)絡(luò)、體系結(jié)構(gòu);李雄,男,碩士,主要研究方向:軟件工程、軟件體系結(jié)構(gòu),軟件可靠性等。