SOA 服務用消息進行通信,該消息通常使用XML Schema來定義(也叫做XSD, XML Schema Definition)。消費者和提供者或消費者和服務之間的通信多見于不知道提供者的環境中。服務間的通訊也可以看作企業內部處理的關鍵商業文檔。
在一個企業內部,SOA服務通過一個扮演目錄列表(directory listing)角色的登記處(Registry)來進行維護。應用程序在登記處(Registry)尋找并調用某項服務。統一描述,定義和集成(UDDI, Universal Description, Definition, and Integration)是服務登記的標準。每項SOA服務都有一個與之相關的服務品質(QoS, quality of service)。QoS的一些關鍵元素有安全需求(例如認證和授權),可靠通信(譯注:可靠消息是指,確保消息“僅且僅僅”發送一次,從而過濾重復信息。),以及誰能調用服務的策略。
為什么選擇SOA?
不同種類的操作系統,應用軟件,系統軟件和應用基礎結構(application infrastructure)相互交織,這便是IT企業的現狀。一些現存的應用程序被用來處理當前的業務流程(business processes),因此從頭建立一個新的基礎環境是不可能的。企業應該能對業務的變化做出快速的反應,利用對現有的應用程序和應用基礎結構(application infrastructure)的投資來解決新的業務需求,為客戶,商業伙伴以及供應商提供新的互動渠道,并呈現一個可以支持有機業務(organic business)的構架。SOA憑借其松耦合的特性,使得企業可以按照模塊化的方式來添加新服務或更新現有服務,以解決新的業務需要,提供選擇從而可以通過不同的渠道提供服務,并可以把企業現有的或已有的應用作為服務,從而保護了現有的IT基礎建設投資。
SOA基礎結構
要運行,管理SOA應用程序,企業需要SOA基礎,這是SOA平臺的一個部分。SOA基礎必須支持所有的相關標準,和需要的運行時容器。
SOAP, WSDL, UDDI
WSDL,UDDI和SOAP是SOA基礎的基礎部件。WSDL用來描述服務;UDDI用來注冊和查找服務;而SOAP,作為傳輸層,用來在消費者和服務提供者之間傳送消息。SOAP是Web服務的默認機制,其他的技術為可以服務實現其他類型的綁定。一個消費者可以在UDDI注冊表(registry)查找服務,取得服務的WSDL描述,然后通過SOAP來調用服務。
SOA 不是Web服務
在理解SOA和Web服務的關系上,經常發生混淆。根據2003年4月的Gartner報道,Yefim V. Natis就這個問題是這樣解釋的:“Web服務是技術規范,而SOA是設計原則。特別是Web服務中的WSDL,是一個SOA配套的接口定義標準:這是Web服務和SOA的根本聯系。”從本質上來說,SOA是一種架構模式,而Web服務是利用一組標準實現的服務。Web服務是實現SOA的方式之一。用Web服務來實現SOA的好處是你可以實現一個中立平臺,來獲得服務,而且隨著越來越多的軟件商支持越來越多的Web服務規范,你會取得更好的通用性。
SOA的優勢
SOA的概念并非什么新東西,SOA不同于現有的分布式技術之處在于大多數軟件商接受它并有可以實現SOA的平臺或應用程序。SOA伴隨著無處不在的標準,為企業的現有資產或投資帶來了更好的重用性。SOA能夠在最新的和現有的應用之上創建應用;SOA能夠使客戶或服務消費者免予服務實現的改變所帶來的影響;SOA能夠升級單個服務或服務消費者而無需重寫整個應用,也無需保留已經不再適用于新需求的現有系統。總而言之,SOA以借助現有的應用來組合產生新服務的敏捷方式,提供給企業更好的靈活性來構建應用程序和業務流程。