天天看點

建構下一代軟體架構

建構下一代軟體架構
作者:李巍

Web服務一種作為炙手可熱的技術,應用到企業的IT系統和商業流程之中,并給企業帶來直接的經濟效益,一直以來得到了國内外企業管理者的推崇。而在近兩年,伴随着企業需求的不斷變化,一種被譽為下一代Web服務的技術架構,再一次引起業内關注,這就是SOA(Service-Oriented Architecture,面向服務架構)。

早在1996年,Gartner最早提出SOA的預言,2002年12月,Gartner又提出了SOA是“現代應用開發領域最重要的課題”,并預計到2008年,SOA将成為占有絕對優勢的軟體工程實踐方法,主流企業現在就應該在了解和應用SOA開發技能方面進行投資。

更好地支援商業流程

SOA并不是一個新事物,IT組織已經成功建立并實施SOA應用軟體很多年了,BEA、IBM等廠商看到了它的價值,并且紛紛跟進。SOA的目标在于讓IT變得更有彈性,以更快地響應業務機關的需求,實作實時企業(Real-Time Enterprise,這是Gartner為SOA描述的遠景目标)。而BEA的CIO Rhonda早在2001年6月就提出要将BEA的IT基礎架構轉變為SOA,并且從對整個企業架構的控制能力,提升開發效率、加快開發速度、降低在客戶化和人員技能的投入等方面取得了不錯的成績。

由于SOA是在計算環境下設計、開發、應用、管理分散的邏輯(服務)單元的一種規範,這就決定了SOA的廣泛性。SOA要求開發者從服務內建的角度來設計應用軟體,即使這麼做的利益不會馬上顯現。SOA要求開發者超越應用軟體來思考,并考慮複用現有的服務,或者檢查如何讓服務被重複利用。SOA鼓勵使用可替代的技術和方法(例如消息機制),通過把服務聯系在一起而非編寫新代碼來構架應用。經過适當建構之後,這種消息機制的應用允許公司僅通過調整原有服務模式而非被迫進行大規模應用代碼的開發,使得在商業環境許可的時間内對變化的市場條件做出快速的響應。

SOA也不僅僅是一種開發的方法論,它還包含管理。例如,應用SOA後,管理者可以友善地管理這些搭建在服務平台上的企業應用,而不是管理單一的應用子產品。其原理是通過分析服務之間的互相調用,SOA使得公司管理人員友善地擷取什麼時候、什麼原因、哪些商業邏輯被執行的資料資訊,這樣就幫助了企業管理人員或應用架構師疊代地優化他們的企業業務流程、應用系統。

SOA的一個中心思想就是讓企業應用徹底擺脫面向技術的解決方案的束縛,輕松應對企業商業服務變化、發展的需要。企業IT架構環境中單個應用程式是無法包容業務使用者的(各種)需求的,即使是一個大型的ERP解決方案,仍然不能滿足這個需求在不斷膨脹、變化的缺口。對市場快速做出反應,商業使用者隻能通過不斷開發新應用、擴充現有應用程式來艱難地支撐其現有的業務需求。通過将注意力放在服務上,應用程式能夠集中起來提供更加豐富、目的性更強的商業流程。其結果就是,基于SOA的企業應用系統通常會更加真實地反映出與業務模型的結合。

服務是從業務流程的角度來看待技術的——這是從上向下看的。這種角度同一般的從可用技術所驅動的商業視角是相反的。因為服務的優勢很清楚,它們會同業務流程結合在一起,能夠更加精确地表示業務模型、更好地支援業務流程。相反,我們可以看到,以應用程式為中心的企業應用模型,迫使業務使用者将其能力局限為應用程式的能力。

企業流程(Enterprise Process)是流經企業架構的空氣,它賦予業務模型裡的元件以生命,并更加清晰地定義了它們之間的關系。流程定義了同業務模型進行互動操作的專門方法。例如,會計可能是企業服務系統的一個元件,但是将發票寄給客戶卻是一個業務流程。服務被定義用來支援業務流程,因而自始至終地貫穿整個流程:各種服務元件在流程和邏輯實作過程中的裝配操作,了解業務流程是定制服務的關鍵所在。

有利于企業業務的內建

傳統的應用內建方法,如:點對點內建、企業消息總線或EAI、基于業務流程的內建等,都很複雜、昂貴,而且不靈活。這些內建方法難于快速适應基于企業現代業務變化不斷産生的需求。

基于SOA的應用開發和內建可以很好地解決其中的許多問題。它描述了一套完善的開發模式來幫助用戶端應用連接配接到服務上。這些模式定制了系列機制用于描述服務、通知及發現服務、與服務進行通信。

不同于傳統的應用內建方法的是,在SOA中,圍繞服務的所有模式都是以基于标準的技術實作的。大部分的通信中間件系統,如RPC、CORBA、DCOM、EJB和RMI,也同樣如此。可是它們的實作都不是很完美的,在權衡互動性以及标準定制的可接受性方面總是存在問題。SOA試圖排除這些缺陷。因為幾乎所有的通信中間件系統都有固定的處理模式,如RPC的功能、CORBA的對象等等。然而,服務既可以定義為功能,又可同時對外定義為對象、應用等等。這使得SOA可适應于任何現有系統,并使得系統在內建時不必刻意遵循任何特殊定制。

SOA幫助企業資訊系統遷移到“leave-and-layer”架構之上,這就意味着在不用對現有的企業系統做修改的前提下,系統可對外提供Web服務接口,因為它們已經被可以提供Web服務接口的應用層做了一層封裝,SOA可以将系統和應用迅速轉換為服務。SOA不僅覆寫來自于打包應用、定制應用和遺留系統中的資訊,而且還覆寫來自于如安全、内容管理、搜尋等IT架構中的功能和資料。因為基于SOA的應用能很容易地從這些基礎服務架構中添加功能。是以,基于SOA的應用能更快地應對市場變化,使企業業務部門設計開發出新的功能應用。

與傳統的企業應用內建架構的主要差別在于,基于SOA的企業應用系統使用基于标準的服務,并包括過程/資料服務、編排群組合。基于标準的服務成了應用間的內建點。服務的編排群組合增加了服務的靈活性、重用性和內建性。

兩種粒度實作SOA服務

可以按基于服務的功能及發送和接收的資料數量來定義服務,如細粒度服務、粗粒度服務或組合服務。

在SOA中服務粒度有兩種相關的意思,即服務是如何實作的,服務使用和傳回了多少資料或多少消息。細粒度服務執行了最小的功能,發送和接收少量的資料。粗粒度服務執行了較大的業務功能,并交換了更多的資料。

細粒度服務是供粗粒度服務或組合服務使用的,而不是由終端應用直接使用的。如果應用是使用細粒度服務建立的,則應用将不得不調用網絡上多個服務,并且發生在每個服務上的資料量較少,因而會對對系統整體性帶來影響。是以,粗粒度服務的使用者不能直接調用他所使用的細粒度服務。然而,由于粗粒度服務可能使用多個細粒度服務,是以它們不能提供粒度級的安全和通路控制。

組合服務可以使用粗粒度服務和細粒度服務進行組裝。資料數量不是粗粒度服務群組合服務之間的差別。粗粒度服務例子,如建立新客戶,在這一過程的操作是:需要通過一些外部服務驗證對客戶進行驗證,并在CRM應用系統中建立客戶記錄。組合服務例子可以是提供一個新的DSL線,這需要一個服務調用來驗證訂單、建立或驗證客戶,确認産品庫存及為資料線配置設定資源。

建構下一代軟體架構

基于SOA的企業應用

建構下一代軟體架構

SOA服務粒度的不同級别及其互相關系

上圖描述了SOA服務粒度的不同級别及它們之間的關系。

通過一組有效設計群組合的粗粒度服務,業務專家就能夠有效地組合出新的業務流程和應用程式了。

成就商務自主

作為面向服務的計算架構,SOA簡化了IT的計算環境,其相容性、互通性以及最終實作的商務自主的能力,滿足了高度動态的商務環境(Dynamic Business),實作了IT對業務從數月到分秒的響應。專家指出,SOA的最終價值在于讓IT和業務同步,在規劃上以面向提供彈性的業務服務為目标。從CIO到負責規劃的架構設計師,都需要和業務部門之間有充分的溝通。是以,SOA的建立,将會是一個為期數年的承諾,基礎建設和标準必需逐漸實施。

在中間件領域,SOA架構日益成為中間件軟體供應商争奪的新焦點,誰都希望自己能夠先于競争對手提供最優的SOA技術實作平台,BEA也不例外。從技術上來說,Web服務、元件技術的采用将有助于SOA的進一步普及;從業務上來說,企業使用者要求成本效益更高的應用系統,SOA恰恰适應了這樣的趨勢。

5月底,在美國舊金山舉辦的BEA第九屆技術年會eWorld 2004上,來自全球的BEA技術精英将會在現場盡情體驗到BEA的技術專家在現場帶來的在BEA WebLogic Platform 8.1上的SOA系統設計模式和最佳實踐,即有關如何建構SOA系統的技術準則,BEA要讓全球的企業使用者的資訊系統都能夠最大化地享受到SOA帶來的商業價值。

GartnerGroup預計,到2008年,SOA将成為占有絕對優勢的軟體工程實踐方法,它将結束傳統的整體軟體體系架構長達40年的統治地位(可能性:70%)。Gartner建議,主流企業現在就應該在了解和應用SOA開發技能方面進行投資。總之,如何把握,如何運用到自身的企業建設中,SOA已經給出了一個很好的基礎。

繼續閱讀