面向服務(wù)的體系結構(SOA)表示您可以如何使用 Web 服務(wù)的大圖景。Web 服務(wù)規范定義了實(shí)現服務(wù)以及與它們的交互所需要的細節。然而,面向服務(wù)的體系結構(SOA)是一種用于構建分布式系統的方法,采用 SOA 這種方法構建的分布式應用程序可以將功能作為服務(wù)交付給終端用戶(hù),也可以構建其他的服務(wù)。面向服務(wù)的體系結構(SOA)可以基于 Web 服務(wù),但是它可能改為使用其他的技術(shù)來(lái)代替。在使用面向服務(wù)的體系結構(SOA)設計分布式應用程序時(shí),您可以將 Web 服務(wù)的使用從簡(jiǎn)單的客戶(hù)端-服務(wù)器模型擴展成任意復雜的系統。
因而,單個(gè)的軟件資產(chǎn)成為開(kāi)發(fā)其他應用程序的基本構件。您可以通過(guò)與新的代碼和遺留代碼一起使用的共同交互方式來(lái)減少系統的復雜性(CBDi 的 Lawrence Wilkes 開(kāi)玩笑說(shuō),面向服務(wù)的體系結構(SOA)可以代表“節省我們的資產(chǎn)(Save Our Assets)”)。有一種標準的方法可以用于表示這些軟件資產(chǎn)和與它們交互;現在人們關(guān)注的重點(diǎn)已經(jīng)轉移到基于這些構件的應用程序裝配上來(lái)了。
雖然在這里討論的是用于業(yè)務(wù)應用程序的面向服務(wù)的體系結構(SOA),但是面向服務(wù)的體系結構(SOA)同樣也可以用于其他的分布式系統,比如網(wǎng)格計算和高級 Web 服務(wù)規范(例如,Web 服務(wù)分布式管理(WS-DistributedManagement)、Web 服務(wù)信任(WS-Trust)以及 UDDI)。
什么是服務(wù)?
在面向服務(wù)的體系結構(SOA)中,服務(wù)(service)是封裝成用于業(yè)務(wù)流程的可重用組件的應用程序函數。它提供信息或簡(jiǎn)化業(yè)務(wù)數據從一個(gè)有效的、一致的狀態(tài)向另一個(gè)狀態(tài)的轉變。用于實(shí)現特定服務(wù)的流程并不重要,只要它響應您的命令并為您的請求提供高質(zhì)量的服務(wù)就可以了。
通過(guò)定義的通信協(xié)議,可以調用服務(wù)來(lái)強調互操作性和位置透明性。一個(gè)服務(wù)表現為一個(gè)軟件組件,因為從服務(wù)請求者的角度來(lái)看,它看起來(lái)就像是一個(gè)自包含的函數。然而,實(shí)際上,服務(wù)的實(shí)現可能包括在一個(gè)企業(yè)內部的不同計算機上或者許多業(yè)務(wù)合作伙伴擁有的計算機上執行的很多步驟。就封裝的軟件而言,服務(wù)可能是一個(gè)組件,也可能不是一個(gè)組件。如同類(lèi)對象,請求者應用程序能夠將服務(wù)看作是一個(gè)整體。
Web 服務(wù)是以使用 SOAP 消息(它是用像 HTTP 這樣的標準協(xié)議上的 WSDL 來(lái)描述的)的調用為基礎的。使用 Web 服務(wù)的最佳實(shí)踐就是與外部的業(yè)務(wù)伙伴通信。
松耦合
服務(wù)請求者到服務(wù)提供者的綁定與服務(wù)之間應該是松耦合的。這就意味著(zhù),服務(wù)請求者不知道提供者實(shí)現的技術(shù)細節,比如程序設計語(yǔ)言、部署平臺,等等。服務(wù)請求者往往通過(guò)消息調用操作——請求消息和響應——而不是通過(guò)使用 API 和文件格式。
這個(gè)松耦合使會(huì )話(huà)一端的軟件可以在不影響另一端的情況下發(fā)生改變,前提是消息模式保持不變。在一個(gè)極端的情況下,服務(wù)提供者可以將以前基于遺留代碼(例如,COBOL)的實(shí)現完全用基于 Java 語(yǔ)言的新代碼取代,同時(shí)又不對服務(wù)請求者造成任何影響。這種情況是真實(shí)的,只要新代碼支持相同的消息模式。
明確定義的接口
服務(wù)交互必須是明確定義的。Web 服務(wù)描述語(yǔ)言(Web services Description Language,WSDL)是受到廣泛支持的方法,用于描述服務(wù)請求者所要求的綁定到服務(wù)提供者的細節。服務(wù)描述的重點(diǎn)在于與下面幾部分交互所用的操作:
延伸閱讀
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/