應(yīng)運(yùn)而生的SOA
美國(guó)的IT市場(chǎng)研究和顧問(wèn)咨詢公司Gartner預(yù)測(cè):到2006年,采用面向服務(wù)的企業(yè)級(jí)應(yīng)用將占全球銷售出的所有商業(yè)應(yīng)用產(chǎn)品的80 以上到2008年,SOA將成為絕對(duì)主流的軟件工程實(shí)踐方法。近幾年全球各大IT巨頭紛紛推出自己的面向服務(wù)的應(yīng)用平臺(tái),紛紛表示自己將全面支持SOA。仿佛一夜之間SOA成為炙手可熱的軟件開(kāi)發(fā)方法。其實(shí)SOA并非剛剛出現(xiàn)的新名詞,而是很早以前就有人提出了面向服務(wù)的概念,只是以前沒(méi)有現(xiàn)在這么多人關(guān)注而已。隨著軟件開(kāi)發(fā)方法的不斷發(fā)展,隨著企業(yè)級(jí)應(yīng)用系統(tǒng)愈來(lái)愈復(fù)雜,使得SOA成為了應(yīng)運(yùn)而生的軟件工程方法。
什么是SOA
SOA 是Service Oriented Architecture的縮寫(xiě),代表了一種軟件開(kāi)發(fā)方法。其核心思想是由擅長(zhǎng)軟件開(kāi)發(fā)的技術(shù)人員把一個(gè)個(gè)的業(yè)務(wù)功能包裝成一個(gè)個(gè)標(biāo)準(zhǔn)的服務(wù),精通商業(yè)流程的專家通過(guò)組合這些服務(wù)可以很容易的搭建功能完善的企業(yè)應(yīng)用,或者重新組合這些服務(wù)成全新的應(yīng)用以滿足企業(yè)的不斷變化的需求。這里只是給出了SOA簡(jiǎn)單的介紹后面將會(huì)詳細(xì)的講述SOA架構(gòu)。
應(yīng)用軟件開(kāi)發(fā)方法的演變
應(yīng)用軟件開(kāi)發(fā)方法在短短的幾十年中經(jīng)歷了又的進(jìn)化,然而每的進(jìn)化給人們帶來(lái)的好處都是一樣的,那就是提高生產(chǎn)效率、減低生產(chǎn)成本,因此給投資者帶來(lái)更豐厚的回報(bào)。回首軟件開(kāi)發(fā)方法的進(jìn)化歷程有如下幾次重大的過(guò)程:面向函數(shù)(面向過(guò)程)、面向?qū)ο蟆⒚嫦蚪M件以及迎面而來(lái)的面向服務(wù)軟件開(kāi)發(fā)方法。每一種軟件開(kāi)發(fā)方法都解決了特定的問(wèn)題,但同時(shí)又不得不面對(duì)新的問(wèn)題,因此不斷的催生新的方法和手段。面向過(guò)程和面向?qū)ο蟮能浖_(kāi)發(fā)方法大家都已很熟悉了,因此不用多說(shuō),下面著重看一看基于中間件和基礎(chǔ)件的面向組件的軟件架構(gòu)方法。所謂中間件是相對(duì)于以前的客戶端/服務(wù)器結(jié)構(gòu)而提出的把商業(yè)業(yè)務(wù)邏輯抽象成一個(gè)個(gè)組件,然后把這些組件放在中間層的應(yīng)用服務(wù)器上運(yùn)行,由應(yīng)用服務(wù)器負(fù)責(zé)各個(gè)組件所需要的事務(wù)和安全等基礎(chǔ)服務(wù)、以及組件的管理和監(jiān)控等等。IT技術(shù)人員都知道要開(kāi)發(fā)事務(wù)和安全這一類的基礎(chǔ)服務(wù)需要專業(yè)的系統(tǒng)級(jí)的程序員來(lái)完成,而不是普通的應(yīng)用程序員就可以輕松搞定的事情,或者說(shuō)開(kāi)發(fā)和維護(hù)這一類的基礎(chǔ)服務(wù)需要耗費(fèi)大量的人力財(cái)力,然而幸運(yùn)的是事務(wù)和安全等基礎(chǔ)服務(wù)可以獨(dú)立于業(yè)務(wù)組件,因此有了當(dāng)今正流行的各種中間件和基礎(chǔ)件產(chǎn)品。這些中間件產(chǎn)品專注于基礎(chǔ)服務(wù)的開(kāi)發(fā)和維護(hù),而應(yīng)用程序員可以專注于業(yè)務(wù)組件的開(kāi)發(fā),因此對(duì)于開(kāi)發(fā)各種企業(yè)應(yīng)用如ERP,BPM以及電子政務(wù)等等各種應(yīng)用系統(tǒng)的軟件公司只需要購(gòu)買專業(yè)的中間件產(chǎn)品,不用自己費(fèi)時(shí)費(fèi)力的開(kāi)發(fā)和維護(hù)中間件和基礎(chǔ)件產(chǎn)品。
當(dāng)今流行的中間件平臺(tái)有:SUN公司領(lǐng)導(dǎo)的J2EE平臺(tái),微軟主導(dǎo)的COM/DCOM平臺(tái)以及OMG公司主導(dǎo)的CORBA平臺(tái)。正如我們所看到的有這樣三種主流的技術(shù),因此應(yīng)用軟件公司在開(kāi)發(fā)應(yīng)用軟件時(shí)不得不在其中做出選擇。在他們選定了一種中間件技術(shù)之后,所有的軟件組件都在這個(gè)選定的中間件平臺(tái)上面搭建。也有的比較大的軟件公司選擇的了多個(gè)平臺(tái),比如說(shuō)他的ERP基于.NET平臺(tái),而CRM基于J2EE平臺(tái)。隨著各種應(yīng)用軟件的不斷開(kāi)發(fā),一個(gè)個(gè)“信息孤島”也就被無(wú)形中建立了起來(lái),然而應(yīng)用軟件也越來(lái)越復(fù)雜,應(yīng)用軟件的客戶對(duì)應(yīng)用軟件的要求也越來(lái)越高,其中為典型的技術(shù)上的要求是:要求集成各種應(yīng)用軟件,各種應(yīng)用軟件產(chǎn)品必須能夠互連互通,各種應(yīng)用軟件產(chǎn)品之間可以共享信息,互 相之間可以共享某些功能模塊,而不需要重復(fù)開(kāi)發(fā)。這些要求成為了基于中間件的面向組件開(kāi)發(fā)的軟件開(kāi)發(fā)技術(shù)的心頭之痛。雖然各種EAI的產(chǎn)品可以緩解一下這個(gè)心頭之痛,但還是無(wú)法從根本上解決問(wèn)題。除此之外,基于中間件的開(kāi)發(fā)的產(chǎn)品耦合度過(guò)高,導(dǎo)致無(wú)法適應(yīng)不斷變化的應(yīng)用軟件需求,因此基于中間件的面向服務(wù)的軟件開(kāi)發(fā)方法SOA成為了人們關(guān)注的焦點(diǎn)。因?yàn)榭梢曰ゲ僮鞯奶匦允荢OA的一個(gè)重要的基礎(chǔ)功能之一。SOA要求把業(yè)務(wù)功能包裝成標(biāo)準(zhǔn)的服務(wù),所謂標(biāo)準(zhǔn)的服務(wù)是服務(wù)之間可以互相調(diào)用,服務(wù)的技術(shù)實(shí)現(xiàn)對(duì)于客戶端來(lái)說(shuō)是透明的??蛻舳瞬挥藐P(guān)心服務(wù)是如何實(shí)現(xiàn)的,不管它是用什么編成語(yǔ)言來(lái)開(kāi)發(fā)的。服務(wù)可以用JAVA來(lái)實(shí)現(xiàn),也可以用Microsoft C#來(lái)開(kāi)發(fā)。
因此可以用下圖來(lái)表示應(yīng)用軟件開(kāi)發(fā)方法的演變過(guò)程:面向過(guò)程、面向?qū)ο?、面向組件、面向服務(wù)。

SOA的抽象模型
要理解實(shí)施SOA,首先要對(duì)SOA的架構(gòu)有個(gè)認(rèn)識(shí),SOA架構(gòu)分為四大功能模塊:
開(kāi)發(fā)服務(wù)
發(fā)布服務(wù)
查找服務(wù)
使用服務(wù)
服務(wù)提供者開(kāi)發(fā)出各種各樣的有用的服務(wù),經(jīng)過(guò)嚴(yán)格測(cè)試后把服務(wù)發(fā)布到公共的服務(wù)注冊(cè)表上,服務(wù)請(qǐng)求者通過(guò)查找服務(wù)注冊(cè)表獲得所需要的服務(wù),然后便可以使用所需要的服務(wù)了。
SOA架構(gòu)可以抽象為如下的模型:

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

SOA的抽象模型
要理解實(shí)施SOA,首先要對(duì)SOA的架構(gòu)有個(gè)認(rèn)識(shí),SOA架構(gòu)分為四大功能模塊:
開(kāi)發(fā)服務(wù)
發(fā)布服務(wù)
查找服務(wù)
使用服務(wù)
服務(wù)提供者開(kāi)發(fā)出各種各樣的有用的服務(wù),經(jīng)過(guò)嚴(yán)格測(cè)試后把服務(wù)發(fā)布到公共的服務(wù)注冊(cè)表上,服務(wù)請(qǐng)求者通過(guò)查找服務(wù)注冊(cè)表獲得所需要的服務(wù),然后便可以使用所需要的服務(wù)了。
SOA架構(gòu)可以抽象為如下的模型:

SOA的佳實(shí)踐
Web Services作為SOA的佳實(shí)踐具有如下特征:
標(biāo)準(zhǔn)
Web Services的規(guī)范包括SOAP、WSDL、UDDI、XML,以及其他一系列的標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)是每一個(gè)Web Services實(shí)現(xiàn)必須要實(shí)現(xiàn)的。目前絕大部分的Web Services產(chǎn)品都支持這些標(biāo)準(zhǔn),尤其是各大國(guó)際IT巨頭。
松散的耦合
互操作
每個(gè)Web Services產(chǎn)品之間的互操作在很大的程度上決定了Web Services的成敗,因此國(guó)際組織WS-I為Web Services互操作制定了標(biāo)準(zhǔn)以及測(cè)試包。
基于中間件
Web Services的大部分產(chǎn)品都基于某個(gè)中間件產(chǎn)品,因此可以把遺留應(yīng)用中的功能組件包裝成服務(wù)。因而這在很大的程度上可以保證現(xiàn)有的投資不至于浪費(fèi)。
APUSIC與SOA
金蝶中間件(APUSIC)作為專業(yè)的中間件公司一直專注于中間件產(chǎn)品的研發(fā),其通過(guò)了Sun公司的J2EE國(guó)際認(rèn)證的旗艦產(chǎn)品Apusic應(yīng)用服務(wù)器在中國(guó)的中間件市場(chǎng)扮演了重要的角色。經(jīng)過(guò)多年的實(shí)踐,Apusic應(yīng)用服務(wù)器已有廣泛的用戶,金蝶中間件公司不僅提供給用戶高效穩(wěn)定的中間件產(chǎn)品,而且培訓(xùn)用戶如何正確的使用中間件產(chǎn)品,幫助客戶對(duì)客戶的應(yīng)用進(jìn)行架構(gòu)設(shè)計(jì),因此中間件公司對(duì)中間件的優(yōu)勢(shì)和局限性有深刻的體會(huì),從而更加確認(rèn)SOA對(duì)于構(gòu)建將來(lái)的應(yīng)用的重要性。為了更好的滿足用戶的需求金蝶中間件公司已在Apusic應(yīng)用服務(wù)器3.0中集成了Web Services的功能,已經(jīng)開(kāi)始在實(shí)際應(yīng)用中實(shí)施SOA。Apusic Web Services是完全基于國(guó)際標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn)的,支持SOAP、WSDL、UDDI、JAX-RPC、SAAJ、JAXM、JAXP等等標(biāo)準(zhǔn)。在開(kāi)發(fā)Web Services時(shí)Apusic一直非常注重與其他產(chǎn)品的交互,經(jīng)過(guò)測(cè)試Apusic Web Services可以與Bea Weblogic和Microsoft .NET等產(chǎn)品的Web Services實(shí)現(xiàn)互操作。并且可以通過(guò)WS-I(www.ws-i.org)的WS Base Profile 1.0互操作性測(cè)試。