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