SOA---面向服務的體系結構(service-oriented architecture,SOA)是一個組件模型,
它將應用程序的不一樣功能單元(稱爲服務)經過這些服務之間定義良好的接口和契約聯繫起來;接口是採用中立的方式(沒有強制綁定到特定的實現上,稱爲服務之間的鬆耦合)進行定義的,它應該獨立於實現服務的硬件平臺、操做系統和編程語言。web
基於 SOA 的系統可使用面向對象的設計來構建單個服務,可是其總體設計倒是面向服務的。因爲它考慮到了系統內的對象,因此雖然 SOA 是基於對象的,可是做爲一個總體,它卻不是面向對象的編程
SOA 不是Web服務,Web服務是實現SOA的方式之一,Web服務是技術規範,而SOA是設計原則。安全
特別是Web服務中的WSDL,是一個SOA配套的接口定義標準:這是Web服務和SOA的根本聯繫。架構
SOA有如下特性異步
- SOA服務具備平臺獨立的自我描述XML文檔。Web服務描述語言(WSDL, Web Services Description Language)是用於描述服務的標準語言。
- 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的基礎結構:(通用對象請求代理體系結構Common Object Request Broker Architecture,CORBA)編程語言
![](http://static.javashuo.com/static/loading.gif)
WSDL,UDDI和SOAP是SOA基礎的基礎部件。ide
- WSDL用來描述服務;
- UDDI用來註冊和查找服務;
- 而SOAP,做爲傳輸層,用來在消費者和服務提供者之間傳送消息。
SOAP是Web服務的默認機制,一個消費者能夠在UDDI註冊表(registry)查找服務,取得服務的WSDL描述,而後經過SOAP來調用服務。 工具
WS-I Basic Profile
WS-I Basic Profile,由Web服務互用性組織(Web Services Interoperability Organization)提供,是SOA服務測試與互用性所須要的核心構件。服務提供者可使用Basic Profile測試程序來測試服務在不一樣平臺和技術上的互用性。性能
J2EE 和 .Net
SOA不只限於此。像J2EE這類平臺,不只爲開發者天然而然地參與到SOA中來提供了一個平臺,還經過他們內在的特性,將可擴展性,可靠性,可用性以及性能引入了SOA世界。新的規範,例如 JAXB(Java API for XML Binding),用於將XML文檔定位到Java類;JAXR(Java API for XML Registry)用來規範對UDDI註冊表(registry)的操做;XML-RPC(Java API for XML-based Remote Procedure Call)在J2EE1.4中用來調用遠程服務,這使得開發和部署可移植於標準J2EE容器的Web服務變得容易,與此同時,實現了跨平臺(如.NET)的服務互用測試
服務品質 (QoS,quality of services)
當一個企業開始採用服務架構做爲工具來進行開發和部署應用的時候,基本的Web服務規範,像WSDL,SOAP,以及UDDI就不能知足這些高級需求。這些需求也稱做服務品質。與QoS相關的衆多規範已經由一些標準化組織(standards bodies)提出,像W3C(World Wide Web Consortium)和OASIS(the Organization for the Advancement of Structured Information Standards)。
- 安全------ Web服務安全規範用來保證消息的安全性。該規範主要包括認證交換, 消息完整性和消息保密。該規範吸引人的地方在於它藉助現有的安全標準,例如,SAML(as Security Assertion Markup Language)來實現web服務消息的安全。OASIS正致力於Web服務安全規範的制定。
- 可靠------- 服務消費者和服務提供者之間會有幾種不一樣的文檔在進行交換。具備諸如「僅且僅僅傳送一次」( once-and-only-once delivery),「最多傳送一次」( at-most-once delivery),「重複消息過濾」(duplicate message elimination),「保證消息傳送」(guaranteed message delivery)等特性消息的發送和確認,在關鍵任務系統(mission-critical systems)中變得十分重要。WS-Reliability 和 WS-ReliableMessaging是兩個用來解決此類問題的標準。這些標準如今都由OASIS負責。
- 策略 -----服務提供者有時候會要求服務消費者與某種策略通訊。好比,服務提供商可能會要求消費者提供Kerberos安全標示,才能取得某項服務。這些要求被定義爲策略斷言(policy assertions)。一項策略可能會包含多個斷言。WS-Policy用來標準化服務消費者和服務提供者之間的策略通訊。
- 控制----- 當企業着手於服務架構時,服務能夠用來整合數據倉庫(silos of data),應用程序,以及組件。整合應用意味着例如異步通訊,並行處理,數據轉換,以及校訂等進程請求必須被標準化。在SOA中,進程是使用一組離散的服務建立的。BPEL4WS 或者 WSBPEL(Web Service Business Process Execution Language)是用來控制這些服務的語言。WSBPEL目前也由OASIS負責。
- 管理 ----隨着企業服務的增加,所使用的服務和業務進程的數量也隨之增長,一個用來讓系統管理員管理全部運行在多相環境下的服務的管理系統就顯得尤其重要。WSDM(Web Services for Distributed Management)規定了任何根據WSDM實現的服務均可以由一個WSDM適應(WSDM-compliant)的管理方案來管理。
- 其它的qos特性----好比合做方之間的溝通和通訊,多個服務之間的事務處理,都在WS-Coordination 和 WS-Transaction 標準中描述, 這些都是OASIS 的工做