資源描述:
《soa 面向服務(wù)的體系結(jié)構(gòu)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、.SOA面向服務(wù)的體系結(jié)構(gòu)面向服務(wù)的體系結(jié)構(gòu)(Service-OrientedArchitecture,SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱(chēng)為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以一種統(tǒng)一和通用的方式進(jìn)行交互?! ∵@種具有中立的接口定義(沒(méi)有強(qiáng)制綁定到特定的實(shí)現(xiàn)上)的特征稱(chēng)為服務(wù)之間的松耦合。松耦合系統(tǒng)的好處有兩點(diǎn),一點(diǎn)是它的靈活性,另一點(diǎn)是,當(dāng)組成整個(gè)應(yīng)用程序的每個(gè)服務(wù)的內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)逐漸地發(fā)生改變時(shí),它能夠繼續(xù)存在。而另一方面,緊耦合意味
2、著應(yīng)用程序的不同組件之間的接口與其功能和結(jié)構(gòu)是緊密相連的,因而當(dāng)需要對(duì)部分或整個(gè)應(yīng)用程序進(jìn)行某種形式的更改時(shí),它們就顯得非常脆弱?! ?duì)松耦合的系統(tǒng)的需要來(lái)源于業(yè)務(wù)應(yīng)用程序需要根據(jù)業(yè)務(wù)的需要變得更加靈活,以適應(yīng)不斷變化的環(huán)境,比如經(jīng)常改變的政策、業(yè)務(wù)級(jí)別、業(yè)務(wù)重點(diǎn)、合作伙伴關(guān)系、行業(yè)地位以及其他與業(yè)務(wù)有關(guān)的因素,這些因素甚至?xí)绊憳I(yè)務(wù)的性質(zhì)。我們稱(chēng)能夠靈活地適應(yīng)環(huán)境變化的業(yè)務(wù)為按需(Ondemand)業(yè)務(wù),在按需業(yè)務(wù)中,一旦需要,就可以對(duì)完成或執(zhí)行任務(wù)的方式進(jìn)行必要的更改?! ‰m然面向服務(wù)的體系結(jié)構(gòu)不是一個(gè)新鮮事物,但它卻是更傳統(tǒng)的面向?qū)ο蟮哪P偷奶娲P?,面向?qū)ο蟮哪P褪蔷o耦合的,已經(jīng)存在二
3、十多年了。雖然基于SOA的系統(tǒng)并不排除使用面向?qū)ο蟮脑O(shè)計(jì)來(lái)構(gòu)建單個(gè)服務(wù),但是其整體設(shè)計(jì)卻是面向服務(wù)的。由于它考慮到了系統(tǒng)內(nèi)的對(duì)象,所以雖然SOA是基于對(duì)象的,但是作為一個(gè)整體,它卻不是面向?qū)ο蟮?。不同之處在于接口本身。SOA系統(tǒng)原型的一個(gè)典型例子是通用對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(CommonObjectRequestBrokerArchitecture,CORBA),它已經(jīng)出現(xiàn)很長(zhǎng)時(shí)間了,其定義的概念與SOA相似?! ∪欢F(xiàn)在的SOA已經(jīng)有所不同了,因?yàn)樗蕾囉谝恍└碌倪M(jìn)展,這些進(jìn)展是以可擴(kuò)展標(biāo)記語(yǔ)言(eXtensibleMarkupLanguage,XML)為基礎(chǔ)的。通過(guò)使用基于XML的語(yǔ)言(
4、稱(chēng)為Web服務(wù)描述語(yǔ)言(WebServicesDefinitionLanguage,WSDL))來(lái)描述接口,服務(wù)已經(jīng)轉(zhuǎn)到更動(dòng)態(tài)且更靈活的接口系統(tǒng)中,非以前CORBA中的接口描述語(yǔ)言(InterfaceDefinitionLanguage,IDL)可比了?! eb服務(wù)并不是實(shí)現(xiàn)SOA的惟一方式。前面剛講的CORBA是另一種方式,這樣就有了面向消息的中間件(Message-OrientedMiddleware)系統(tǒng),比如IBM的頁(yè).MQseries。但是為了建立體系結(jié)構(gòu)模型,您所需要的并不只是服務(wù)描述。您需要定義整個(gè)應(yīng)用程序如何在服務(wù)之間執(zhí)行其工作流。您尤其需要找到業(yè)務(wù)的操作和業(yè)務(wù)中所使用的軟件
5、的操作之間的轉(zhuǎn)換點(diǎn)。因此,SOA應(yīng)該能夠?qū)I(yè)務(wù)的商業(yè)流程與它們的技術(shù)流程聯(lián)系起來(lái),并且映射這兩者之間的關(guān)系。例如,給供應(yīng)商付款的操作是商業(yè)流程,而更新您的零件數(shù)據(jù)庫(kù),以包括進(jìn)新供應(yīng)的貨物卻是技術(shù)流程。因而,工作流還可以在SOA的設(shè)計(jì)中扮演重要的角色。 此外,動(dòng)態(tài)業(yè)務(wù)的工作流不僅可以包括部門(mén)之間的操作,甚至還可以包括與不為您控制的外部合作伙伴進(jìn)行的操作。因此,為了提高效率,您需要定義應(yīng)該如何得知服務(wù)之間的關(guān)系的策略,這種策略常常采用服務(wù)級(jí)協(xié)定和操作策略的形式?! ∽詈?,所有這些都必須處于一個(gè)信任和可靠的環(huán)境之中,以同預(yù)期的一樣根據(jù)約定的條款來(lái)執(zhí)行流程。因此,安全、信任和可靠的消息傳遞應(yīng)該在任何
6、SOA中都起著重要的作用。 我可以用面向服務(wù)的體系結(jié)構(gòu)做什么? 對(duì)SOA的需要來(lái)源于需要使業(yè)務(wù)IT系統(tǒng)變得更加靈活,以適應(yīng)業(yè)務(wù)中的改變。通過(guò)允許強(qiáng)定義的關(guān)系和依然靈活的特定實(shí)現(xiàn),IT系統(tǒng)既可以利用現(xiàn)有系統(tǒng)的功能,又可以準(zhǔn)備在以后做一些改變來(lái)滿足它們之間交互的需要?! ∠旅媾e一個(gè)具體的例子。一個(gè)服裝零售組織擁有500家國(guó)際連鎖店,它們常常需要更改設(shè)計(jì)來(lái)趕上時(shí)尚的潮流。這可能意味著不僅需要更改樣式和顏色,甚至還可能需要更換布料、制造商和可交付的產(chǎn)品。如果零售商和制造商之間的系統(tǒng)不兼容,那么從一個(gè)供應(yīng)商到另一個(gè)供應(yīng)商的更換可能就是一個(gè)非常復(fù)雜的軟件流程。通過(guò)利用WSDL接口在操作方面的靈活性,每
7、個(gè)公司都可以將它們的現(xiàn)有系統(tǒng)保持現(xiàn)狀,而僅僅匹配WSDL接口并制訂新的服務(wù)級(jí)協(xié)定,這樣就不必完全重構(gòu)它們的軟件系統(tǒng)了。這是業(yè)務(wù)的水平改變,也就是說(shuō),它們改變的是合作伙伴,而所有的業(yè)務(wù)操作基本上都保持不變。這里,業(yè)務(wù)接口可以作少許改變,而內(nèi)部操作卻不需要改變,之所以這樣做,僅僅是為了能夠與外部合作伙伴一起工作?! ×硪环N形式是內(nèi)部改變,在這種改變中,零售組織現(xiàn)在決定它還將把連鎖零售商店內(nèi)的一些地方出