SOA與中間件、基礎件的發(fā)展

字號:

應運而生的SOA
    美國的IT市場研究和顧問咨詢公司Gartner預測:到2006年,采用面向服務的企業(yè)級應用將占全球銷售出的所有商業(yè)應用產(chǎn)品的80 以上到2008年,SOA將成為絕對主流的軟件工程實踐方法。近幾年全球各大IT巨頭紛紛推出自己的面向服務的應用平臺,紛紛表示自己將全面支持SOA。仿佛一夜之間SOA成為炙手可熱的軟件開發(fā)方法。其實SOA并非剛剛出現(xiàn)的新名詞,而是很早以前就有人提出了面向服務的概念,只是以前沒有現(xiàn)在這么多人關(guān)注而已。隨著軟件開發(fā)方法的不斷發(fā)展,隨著企業(yè)級應用系統(tǒng)愈來愈復雜,使得SOA成為了應運而生的軟件工程方法。
    什么是SOA
    SOA 是Service Oriented Architecture的縮寫,代表了一種軟件開發(fā)方法。其核心思想是由擅長軟件開發(fā)的技術(shù)人員把一個個的業(yè)務功能包裝成一個個標準的服務,精通商業(yè)流程的專家通過組合這些服務可以很容易的搭建功能完善的企業(yè)應用,或者重新組合這些服務成全新的應用以滿足企業(yè)的不斷變化的需求。這里只是給出了SOA簡單的介紹后面將會詳細的講述SOA架構(gòu)。
    應用軟件開發(fā)方法的演變
    應用軟件開發(fā)方法在短短的幾十年中經(jīng)歷了又的進化,然而每的進化給人們帶來的好處都是一樣的,那就是提高生產(chǎn)效率、減低生產(chǎn)成本,因此給投資者帶來更豐厚的回報。回首軟件開發(fā)方法的進化歷程有如下幾次重大的過程:面向函數(shù)(面向過程)、面向?qū)ο?、面向組件以及迎面而來的面向服務軟件開發(fā)方法。每一種軟件開發(fā)方法都解決了特定的問題,但同時又不得不面對新的問題,因此不斷的催生新的方法和手段。面向過程和面向?qū)ο蟮能浖_發(fā)方法大家都已很熟悉了,因此不用多說,下面著重看一看基于中間件和基礎件的面向組件的軟件架構(gòu)方法。所謂中間件是相對于以前的客戶端/服務器結(jié)構(gòu)而提出的把商業(yè)業(yè)務邏輯抽象成一個個組件,然后把這些組件放在中間層的應用服務器上運行,由應用服務器負責各個組件所需要的事務和安全等基礎服務、以及組件的管理和監(jiān)控等等。IT技術(shù)人員都知道要開發(fā)事務和安全這一類的基礎服務需要專業(yè)的系統(tǒng)級的程序員來完成,而不是普通的應用程序員就可以輕松搞定的事情,或者說開發(fā)和維護這一類的基礎服務需要耗費大量的人力財力,然而幸運的是事務和安全等基礎服務可以獨立于業(yè)務組件,因此有了當今正流行的各種中間件和基礎件產(chǎn)品。這些中間件產(chǎn)品專注于基礎服務的開發(fā)和維護,而應用程序員可以專注于業(yè)務組件的開發(fā),因此對于開發(fā)各種企業(yè)應用如ERP,BPM以及電子政務等等各種應用系統(tǒng)的軟件公司只需要購買專業(yè)的中間件產(chǎn)品,不用自己費時費力的開發(fā)和維護中間件和基礎件產(chǎn)品。
    當今流行的中間件平臺有:SUN公司領導的J2EE平臺,微軟主導的COM/DCOM平臺以及OMG公司主導的CORBA平臺。正如我們所看到的有這樣三種主流的技術(shù),因此應用軟件公司在開發(fā)應用軟件時不得不在其中做出選擇。在他們選定了一種中間件技術(shù)之后,所有的軟件組件都在這個選定的中間件平臺上面搭建。也有的比較大的軟件公司選擇的了多個平臺,比如說他的ERP基于.NET平臺,而CRM基于J2EE平臺。隨著各種應用軟件的不斷開發(fā),一個個“信息孤島”也就被無形中建立了起來,然而應用軟件也越來越復雜,應用軟件的客戶對應用軟件的要求也越來越高,其中為典型的技術(shù)上的要求是:要求集成各種應用軟件,各種應用軟件產(chǎn)品必須能夠互連互通,各種應用軟件產(chǎn)品之間可以共享信息,互 相之間可以共享某些功能模塊,而不需要重復開發(fā)。這些要求成為了基于中間件的面向組件開發(fā)的軟件開發(fā)技術(shù)的心頭之痛。雖然各種EAI的產(chǎn)品可以緩解一下這個心頭之痛,但還是無法從根本上解決問題。除此之外,基于中間件的開發(fā)的產(chǎn)品耦合度過高,導致無法適應不斷變化的應用軟件需求,因此基于中間件的面向服務的軟件開發(fā)方法SOA成為了人們關(guān)注的焦點。因為可以互操作的特性是SOA的一個重要的基礎功能之一。SOA要求把業(yè)務功能包裝成標準的服務,所謂標準的服務是服務之間可以互相調(diào)用,服務的技術(shù)實現(xiàn)對于客戶端來說是透明的??蛻舳瞬挥藐P(guān)心服務是如何實現(xiàn)的,不管它是用什么編成語言來開發(fā)的。服務可以用JAVA來實現(xiàn),也可以用Microsoft C#來開發(fā)。
    因此可以用下圖來表示應用軟件開發(fā)方法的演變過程:面向過程、面向?qū)ο蟆⒚嫦蚪M件、面向服務。  
    
    SOA的抽象模型
    要理解實施SOA,首先要對SOA的架構(gòu)有個認識,SOA架構(gòu)分為四大功能模塊:
    開發(fā)服務
    發(fā)布服務
    查找服務
    使用服務
    服務提供者開發(fā)出各種各樣的有用的服務,經(jīng)過嚴格測試后把服務發(fā)布到公共的服務注冊表上,服務請求者通過查找服務注冊表獲得所需要的服務,然后便可以使用所需要的服務了。
    SOA架構(gòu)可以抽象為如下的模型:  
    
    SOA的佳實踐
    Web Services作為SOA的佳實踐具有如下特征:
    標準
    Web Services的規(guī)范包括SOAP、WSDL、UDDI、XML,以及其他一系列的標準,這些標準是每一個Web Services實現(xiàn)必須要實現(xiàn)的。目前絕大部分的Web Services產(chǎn)品都支持這些標準,尤其是各大國際IT巨頭。
    松散的耦合
    互操作
    每個Web Services產(chǎn)品之間的互操作在很大的程度上決定了Web Services的成敗,因此國際組織WS-I為Web Services互操作制定了標準以及測試包。
    基于中間件
    Web Services的大部分產(chǎn)品都基于某個中間件產(chǎn)品,因此可以把遺留應用中的功能組件包裝成服務。因而這在很大的程度上可以保證現(xiàn)有的投資不至于浪費。
    APUSIC與SOA
    金蝶中間件(APUSIC)作為專業(yè)的中間件公司一直專注于中間件產(chǎn)品的研發(fā),其通過了Sun公司的J2EE國際認證的旗艦產(chǎn)品Apusic應用服務器在中國的中間件市場扮演了重要的角色。經(jīng)過多年的實踐,Apusic應用服務器已有廣泛的用戶,金蝶中間件公司不僅提供給用戶高效穩(wěn)定的中間件產(chǎn)品,而且培訓用戶如何正確的使用中間件產(chǎn)品,幫助客戶對客戶的應用進行架構(gòu)設計,因此中間件公司對中間件的優(yōu)勢和局限性有深刻的體會,從而更加確認SOA對于構(gòu)建將來的應用的重要性。為了更好的滿足用戶的需求金蝶中間件公司已在Apusic應用服務器3.0中集成了Web Services的功能,已經(jīng)開始在實際應用中實施SOA。Apusic Web Services是完全基于國際標準來實現(xiàn)的,支持SOAP、WSDL、UDDI、JAX-RPC、SAAJ、JAXM、JAXP等等標準。在開發(fā)Web Services時Apusic一直非常注重與其他產(chǎn)品的交互,經(jīng)過測試Apusic Web Services可以與Bea Weblogic和Microsoft .NET等產(chǎn)品的Web Services實現(xiàn)互操作。并且可以通過WS-I(www.ws-i.org)的WS Base Profile 1.0互操作性測試。