下一代軟件架構(gòu)--SOA
Web服務(wù)作為炙手可熱的技術(shù),如何應(yīng)用到企業(yè)的IT系統(tǒng)和商業(yè)流程之中、并給企業(yè)帶來直接的經(jīng)濟(jì)效益,一直備受國內(nèi)外企業(yè)管理者的高度關(guān)注和推崇。而在
近兩年,出現(xiàn)了一種技術(shù)架構(gòu)被譽(yù)為下一代Web服務(wù)的基礎(chǔ)架構(gòu),它就是SOA(Service-oriented
architecture,面向服務(wù)架構(gòu))。1996年,Gartner最早提出SOA。2002年12月,Gartner提出SOA是"現(xiàn)代應(yīng)用開發(fā)領(lǐng)
域最重要的課題",還預(yù)計(jì)到2008年,SOA將成為占有絕對(duì)優(yōu)勢(shì)的軟件工程實(shí)踐方法,主流企業(yè)現(xiàn)在就應(yīng)該在理解和應(yīng)用SOA開發(fā)技能方面進(jìn)行投資。
更好支持商業(yè)流程
SOA并不是一個(gè)新事物,IT組織已經(jīng)成功建立并實(shí)施SOA應(yīng)用軟件很多年了,BEA、IBM、等廠商看到了它的價(jià)值,紛紛跟進(jìn)。SOA的目標(biāo)在于讓IT
變得更有彈性,以更快地響應(yīng)業(yè)務(wù)單位的需求,實(shí)現(xiàn)實(shí)時(shí)企業(yè)(Real-Time
Enterprise,這是Gartner為SOA描述的愿景目標(biāo))。而BEA的CIO
Rhonda早在2001年6月就提出要將BEA的IT基礎(chǔ)架構(gòu)轉(zhuǎn)變?yōu)镾OA,并且從對(duì)整個(gè)企業(yè)架構(gòu)的控制能力、提升開發(fā)效率、加快開發(fā)速度、降低在客戶
化和人員技能的投入等方面取得了不錯(cuò)的成績。
SOA是在計(jì)算環(huán)境下設(shè)計(jì)、開發(fā)、應(yīng)用、管理分散的邏輯(服務(wù))單元的一種規(guī)范。這個(gè)定義決定了SOA的廣泛性。SOA要求開發(fā)者從服務(wù)集成的角度來設(shè)計(jì)
應(yīng)用軟件,即使這么做的利益不會(huì)馬上顯現(xiàn)。SOA要求開發(fā)者超越應(yīng)用軟件來思考,并考慮復(fù)用現(xiàn)有的服務(wù),或者檢查如何讓服務(wù)被重復(fù)利用。SOA鼓勵(lì)使用可
替代的技術(shù)和方法(例如消息機(jī)制),通過把服務(wù)聯(lián)系在一起而非編寫新代碼來構(gòu)架應(yīng)用。經(jīng)過適當(dāng)構(gòu)架后,這種消息機(jī)制的應(yīng)用允許公司僅通過調(diào)整原有服務(wù)模式
而非被迫進(jìn)行大規(guī)模新的應(yīng)用代碼的開發(fā),使得在商業(yè)環(huán)境許可的時(shí)間內(nèi)對(duì)變化的市場(chǎng)條件做出快速的響應(yīng)。
SOA也不僅僅是一種開發(fā)的方法論--它還包含管理。例如,應(yīng)用SOA后,管理者可以方便的管理這些搭建在服務(wù)平臺(tái)上的企業(yè)應(yīng)用,而不是管理單一的應(yīng)用模
塊。其原理是,通過分析服務(wù)之間的相互調(diào)用,SOA使得公司管理人員方便的拿到什么時(shí)候、什么原因、哪些商業(yè)邏輯被執(zhí)行的數(shù)據(jù)信息,這樣就幫助了企業(yè)管理
人員或應(yīng)用架構(gòu)師迭代地優(yōu)化他們的企業(yè)業(yè)務(wù)流程、應(yīng)用系統(tǒng)。
SOA的一個(gè)中心思想就是使得企業(yè)應(yīng)用擺脫面向技術(shù)的解決方案的束縛,輕松應(yīng)對(duì)企業(yè)商業(yè)服務(wù)變化、發(fā)展的需要。企
業(yè)環(huán)境中單個(gè)應(yīng)用程序是無法包容業(yè)務(wù)用戶的(各種)需求的,即使是一個(gè)大型的ERP解決方案,仍然不能滿足這個(gè)需求在不斷膨脹、變化的缺口,對(duì)市場(chǎng)快速做
出反應(yīng),商業(yè)用戶只能通過不斷開發(fā)新應(yīng)用、擴(kuò)展現(xiàn)有應(yīng)用程序來艱難的支撐其現(xiàn)有的業(yè)務(wù)需求。通過將注意力放在服務(wù)上,應(yīng)用程序能夠集中起來提供更加豐富、
目的性更強(qiáng)的商業(yè)流程。其結(jié)果就是,基于SOA的企業(yè)應(yīng)用系統(tǒng)通常會(huì)更加真實(shí)地反映出與業(yè)務(wù)模型的結(jié)合。服務(wù)是從業(yè)務(wù)流程的角度來看待技術(shù)的--這是從上
向下看的。這種角度同一般的從可用技術(shù)所驅(qū)動(dòng)的商業(yè)視角是相反的。服務(wù)的優(yōu)勢(shì)很清楚:它們會(huì)同業(yè)務(wù)流程結(jié)合在一起,因此能夠更加精確地表示業(yè)務(wù)模型、更好
地支持業(yè)務(wù)流程。相反我們可以看到以應(yīng)用程序?yàn)橹行牡钠髽I(yè)應(yīng)用模型迫使業(yè)務(wù)用戶將其能力局限為應(yīng)用程序的能力。
企業(yè)流程(enterprise
process)是流經(jīng)企業(yè)框架的空氣,它賦予業(yè)務(wù)模型里的組件以生命,并更加清晰地定義了它們之間的關(guān)系。流程定義了同業(yè)務(wù)模型進(jìn)行交互操作的專門方
法。例如,會(huì)計(jì)可能是企業(yè)服務(wù)系統(tǒng)的一個(gè)組件--但是將發(fā)票寄給客戶卻是一個(gè)業(yè)務(wù)流程。服務(wù)被定義用來支持業(yè)務(wù)流程,因而貫穿整個(gè)流程始終的是:各種服務(wù)
組件在流程和邏輯實(shí)現(xiàn)過程中的裝配操作。理解業(yè)務(wù)流程是定制服務(wù)的關(guān)鍵所在。
有利于企業(yè)業(yè)務(wù)的集成
傳統(tǒng)的應(yīng)用集成方法(點(diǎn)對(duì)點(diǎn)集成、企業(yè)消息總線或中間件的集成(EAI)、基于業(yè)務(wù)流程的集成)都很復(fù)雜、昂貴,并且不靈活。這些集成方法難于快速適應(yīng)基
于企業(yè)現(xiàn)代業(yè)務(wù)變化不斷產(chǎn)生的需求。基于面向服務(wù)架構(gòu) (SOA) 的應(yīng)用開發(fā)和集成可以很好的解決其中的許多問題。
SOA 描述了一套完善的開發(fā)模式來幫助客戶端應(yīng)用連接到服務(wù)上。這些模式定制了系列機(jī)制用于描述服務(wù)、通知及發(fā)現(xiàn)服務(wù)、與服務(wù)進(jìn)行通信。
不同于傳統(tǒng)的應(yīng)用集成方法,在 SOA 中,圍繞服務(wù)的所有模式都是以基于標(biāo)準(zhǔn)的技術(shù)實(shí)現(xiàn)的。大部分的通信中間件系統(tǒng),如
RPC、CORBA、DCOM、EJB 和 RMI,也同樣如此??墒撬鼈兊膶?shí)現(xiàn)都不是很完美的,在權(quán)衡交互性以及標(biāo)準(zhǔn)定制的可接受性方面總是存在問題。SOA
試圖排除這些缺陷。因?yàn)閹缀跛械耐ㄐ胖虚g件系統(tǒng)都有固定的處理模式,如RPC 的功能、CORBA
的對(duì)象等等。然而,服務(wù)既可以定義為功能,又可同時(shí)對(duì)外定義為對(duì)象、應(yīng)用等等。這使得 SOA 可適應(yīng)于任何現(xiàn)有系統(tǒng),并使得系統(tǒng)在集成時(shí)不必刻意遵循任何特殊定制。
SOA 幫助企業(yè)信息系統(tǒng)遷移到"leave-and-layer"架構(gòu)之上,這意味著在不用對(duì)現(xiàn)有的企業(yè)系統(tǒng)做修改的前提下,系統(tǒng)可對(duì)外提供
Web 服務(wù)接口,這是因?yàn)樗鼈円呀?jīng)被可以提供 Web 服務(wù)接口的應(yīng)用層做了一層封裝,所以在不用修改現(xiàn)有系統(tǒng)架構(gòu)的情況下,SOA
可以將系統(tǒng)和應(yīng)用迅速轉(zhuǎn)換為服務(wù)。SOA 不僅覆蓋來自于打包應(yīng)用、定制應(yīng)用和遺留系統(tǒng)中的信息,而且還覆蓋來自于如安全、內(nèi)容管理、搜索等
IT 架構(gòu)中的功能和數(shù)據(jù)。因?yàn)榛?SOA 的應(yīng)用能很容易地從這些基礎(chǔ)服務(wù)架構(gòu)中添加功能,所以基于SOA的應(yīng)用能更快地應(yīng)對(duì)市場(chǎng)變化,為使企業(yè)業(yè)務(wù)部門設(shè)計(jì)開發(fā)出新的功能應(yīng)用。
下圖提供了使用基于服務(wù)集成的企業(yè)應(yīng)用的高級(jí)視圖。與傳統(tǒng)的企業(yè)應(yīng)用集成架構(gòu)的主要區(qū)別在于該系統(tǒng)使用基于標(biāo)準(zhǔn)的服務(wù),并包括過程/數(shù)據(jù)服務(wù)、編排和組
合?;跇?biāo)準(zhǔn)的服務(wù)成了應(yīng)用間的集成點(diǎn)。服務(wù)的編排和組合增加了服務(wù)的靈活性、重用性和集成性。
圖示:使用基于服務(wù)集成的企業(yè)應(yīng)用
SOA服務(wù)粒度
可以按基于服務(wù)的功能及發(fā)送和接收的數(shù)據(jù)數(shù)量來定義服務(wù),如細(xì)粒度服務(wù)、粗粒度服務(wù)或組合服務(wù)。
在 SOA
中服務(wù)粒度有兩種相關(guān)的意思:服務(wù)是如何實(shí)現(xiàn)的,服務(wù)使用和返回了多少數(shù)據(jù)或多少消息。細(xì)粒度服務(wù)執(zhí)行了最小的功能,發(fā)送和接收少量的數(shù)據(jù)。粗粒度服務(wù)執(zhí)
行了較大的業(yè)務(wù)功能,并交換了更多的數(shù)據(jù)。
細(xì)粒度服務(wù)是供粗粒度服務(wù)或組合服務(wù)使用的,而不是由終端應(yīng)用直接使用的。如果應(yīng)用是使用細(xì)粒度服務(wù)建立的,則應(yīng)用將不得不調(diào)用網(wǎng)絡(luò)上多個(gè)服務(wù),并且發(fā)生
在每個(gè)服務(wù)上的數(shù)據(jù)量較少,因而會(huì)對(duì)對(duì)系統(tǒng)整體性帶來影響。所以粗粒度服務(wù)的用戶不能直接調(diào)用他所使用的細(xì)粒度服務(wù)。然而,由于粗粒度服務(wù)可能使用多個(gè)細(xì)
粒度服務(wù),因此它們不能提供粒度級(jí)的安全和訪問控制。
組合服務(wù)可以使用粗粒度服務(wù)和細(xì)粒度服務(wù)進(jìn)行組裝。數(shù)據(jù)數(shù)量數(shù)量不是粗粒度服務(wù)和組合服務(wù)之間的區(qū)別。粗粒度服務(wù)例子,如創(chuàng)建新客戶,在這一過程的操作是:需要通過一些外部服務(wù)驗(yàn)證對(duì)客戶進(jìn)行驗(yàn)證,并在
CRM 應(yīng)用系統(tǒng)中創(chuàng)建客戶記錄。組合服務(wù)例子可以是提供一個(gè)新的DSL線,這需要一個(gè)服務(wù)調(diào)用來驗(yàn)證定單、創(chuàng)建或驗(yàn)證客戶,確認(rèn)產(chǎn)品庫存及為數(shù)據(jù)線分配資源。
下圖描述了服務(wù)粒度的不同級(jí)別及它們之間的關(guān)系。
圖示:服務(wù)粒度
通過一組有效設(shè)計(jì)和組合的粗粒度服務(wù),業(yè)務(wù)專家就能夠有效地組合出新的業(yè)務(wù)流程和應(yīng)用程序了。
SOA與Web服務(wù)
SOA不是一定需要 Web 服務(wù)來實(shí)現(xiàn),并且一個(gè)基于Web 服務(wù)開發(fā)出來的應(yīng)用也不代表就是一個(gè)基于
SOA 構(gòu)架應(yīng)用。Web 服務(wù)只是服務(wù)實(shí)現(xiàn)的一個(gè)典型,是實(shí)現(xiàn)企業(yè) SOA的一個(gè)組件(非必需組件)。SOA
為基于服務(wù)的分布式系統(tǒng)提供了概念上的設(shè)計(jì)模式。Web 服務(wù)則是基于標(biāo)準(zhǔn)的、可經(jīng)濟(jì)實(shí)惠地實(shí)現(xiàn)
SOA的一項(xiàng)技術(shù)。
SOA將IT資源透過服務(wù)這樣一個(gè)在業(yè)務(wù)上有重要涵義的概念來提供、共享,把IT與業(yè)務(wù)的距離更加拉近了一步。服務(wù)在涉及的層次上要比組件、函數(shù)、流程等
更高,而且往往在業(yè)務(wù)上可以找到與之直接對(duì)應(yīng)的概念或?qū)嶓w,例如報(bào)價(jià)、訂單。服務(wù)打破了IT系統(tǒng)間的藩籬,就像一家公司的各個(gè)部門,平常各自扮演特定對(duì)內(nèi)
或?qū)ν夥?wù)的角色,但彼此間如果能有效地通過共通的語言及文字,進(jìn)行良好的溝通,便能協(xié)力達(dá)成更大、更高的目標(biāo)。
隨著SOA和Web服務(wù)的潮流,帶來了組合式應(yīng)用(composite
application)的開發(fā)方式和觀念,開始逐漸被大量應(yīng)用在Portal(門戶)和Integration(集成)上。組合式Portal的做法,
就是通過Portal界面所提供的應(yīng)用,往往不是真的在Portal服務(wù)器上執(zhí)行,而是將Web服務(wù)即時(shí)抓過來,再加以呈現(xiàn),同時(shí)匯總給Portal的使
用者。在整合方面也是采用組合式的方式。通過高級(jí)工具來設(shè)定,使系統(tǒng)得以靈活地配合任務(wù)的調(diào)整,對(duì)各項(xiàng)以Web服務(wù)方式提供的服務(wù)進(jìn)行不同形式的串聯(lián)和協(xié)
作,同時(shí)快速地加以部署。2004年3月,BEA發(fā)布了一個(gè)企業(yè)門戶合理化(enterprise portal
rationalization,EPR)戰(zhàn)略,這個(gè)戰(zhàn)略用來平衡BEA WebLogic
Platform的SOA能力,憑借最好的行業(yè)實(shí)踐和行業(yè)專家,幫助客戶解決多年來形成的散亂的portal和Web應(yīng)用程序開發(fā)。
如果說Web服務(wù)等技術(shù)是SOA的血肉,那么正確的服務(wù)設(shè)計(jì)理念及系統(tǒng)運(yùn)行平臺(tái)則是SOA的靈魂。SOA試圖讓IT能更快和業(yè)務(wù)同步,在規(guī)劃上以提供彈性
的業(yè)務(wù)服務(wù)為目標(biāo)。從CIO到負(fù)責(zé)規(guī)劃的系統(tǒng)分析人員,需要和業(yè)務(wù)單位、策略伙伴間有充分的溝通。CIO必須認(rèn)識(shí)到,SOA的建立將是一個(gè)為期數(shù)年的承
諾,基礎(chǔ)建設(shè)需要按部就班地進(jìn)行,資助的模式也必須在IT和各個(gè)業(yè)務(wù)部門間建立,來陸續(xù)支援基礎(chǔ)建設(shè)及各項(xiàng)業(yè)務(wù)服務(wù)的開發(fā)。
在中間件領(lǐng)域,SOA架構(gòu)日益成為中間件軟件供應(yīng)商爭(zhēng)奪的新焦點(diǎn)。誰都希望自己能夠先于競(jìng)爭(zhēng)對(duì)手提供最優(yōu)的SOA技術(shù)實(shí)現(xiàn)平臺(tái),BEA也不例外。從技術(shù)上
來說,Web服務(wù)、組件技術(shù)的采用將有助于SOA的進(jìn)一步普及,從業(yè)務(wù)上來說,企業(yè)用戶要求性價(jià)比更高的應(yīng)用系統(tǒng),SOA恰恰適應(yīng)了這樣的趨勢(shì)。
5月底,在美國舊金山舉辦的BEA 第九屆技術(shù)年會(huì)eWorld
2004上,來自全球的BEA技術(shù)精英將會(huì)在現(xiàn)場(chǎng)盡情體驗(yàn)到BEA的技術(shù)專家在現(xiàn)場(chǎng)帶來的在BEA WebLogic Platform
8.1上的SOA系統(tǒng)設(shè)計(jì)模式和最佳實(shí)踐,即有關(guān)如何構(gòu)建SOA系統(tǒng)的技術(shù)準(zhǔn)則,隨后這些最佳技術(shù)實(shí)踐將陸續(xù)借助BEA公司的開發(fā)人員站點(diǎn)(總部:
http://dev2dev.,中國開發(fā)人員站點(diǎn):http://dev2dev.)等媒體分享給全球技術(shù)用戶,最
終目標(biāo)是使得不僅是BEA的客戶,而且是全球的企業(yè)用戶的信息系統(tǒng)最大化地享受到SOA帶來的商業(yè)價(jià)值。
|