SOA介紹

版權聲明:本文可以自由轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明
作者:Raghu R. Kodali tetsu(作者的Blog:http://blog.matrix.org.cn/page/tetsu)
原文:http://www.javaworld.com/javaworld/jw-06-2005/jw-0613-soa.html
中文:http://www.matrix.org.cn/resource/article/44/44070_SOA.html
關鍵字:SOA

摘要
在最近的軟件發展中,面向服務架構(SOA, service-oriented architecture)成爲了時下的熱門話題。這篇文章將向大家介紹SOA, 討論企業爲什麼需要SOA,什麼是SOA, 從核心,平臺,服務品質3個層面來解釋SOA的基礎構成。
By Raghu R. Kodali



對於面向同步和異步應用的,基於請求/響應模式的分佈式計算來說,SOA是一場革命。一個應用程序的業務邏輯(business logic)或某些單獨的功能被模塊化並作爲服務呈現給消費者或客戶端。這些服務的關鍵是他們的鬆耦合特性。例如,服務的接口和實現相獨立。應用開發人員或者系統集成者可以通過組合一個或多個服務來構建應用,而無須理解服務的底層實現。舉例來說,一個服務可以用.NET或J2EE來實現,而使用該服務的應用程序可以在不同的平臺之上,使用的語言也可以不同。

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?

不同種類的操作系統,應用軟件,系統軟件和應用基礎結構(application infrastructure)相互交織,這便是IT企業的現狀。一些現存的應用程序被用來處理當前的業務流程(business processes),因此從頭建立一個新的基礎環境是不可能的。企業應該能對業務的變化做出快速的反應,利用對現有的應用程序和應用基礎結構(application infrastructure)的投資來解決新的業務需求,爲客戶,商業夥伴以及供應商提供新的互動渠道,並呈現一個可以支持有機業務(organic business)的構架。SOA憑藉其鬆耦合的特性,使得企業可以按照模塊化的方式來添加新服務或更新現有服務,以解決新的業務需要,提供選擇從而可以通過不同的渠道提供服務,並可以把企業現有的或已有的應用作爲服務, 從而保護了現有的IT基礎建設投資。

如圖1的例子所示,一個使用SOA的企業,可以使用一組現有的應用來創建一個供應鏈複合應用(supply chain composite application),這些現有的應用通過標準接口來提供功能。

image
Figure 1. Supply chain application. Click on thumbnail to view full-sized image.         


服務架構

爲了實現SOA,企業需要一個服務架構,圖2顯示了一個例子:

image
Figure 2. A sample service architecture. Click on thumbnail to view full-sized image.        

在圖2中, 服務消費者(service consumer)可以通過發送消息來調用服務。這些消息由一個服務總線(service bus)轉換後發送給適當的服務實現。這種服務架構可以提供一個業務規則引擎(business rules engine),該引擎容許業務規則被合併在一個服務裏或多個服務裏。這種架構也提供了一個服務管理基礎(service management infrastructure),用來管理服務,類似審覈,列表(billing),日誌等功能。此外,該架構給企業提供了靈活的業務流程,更好地處理控制請求(regulatory requirement),例如Sarbanes Oxley(SOX),並且可以在不影響其他服務的情況下更改某項服務。

SOA基礎結構

要運行,管理SOA應用程序,企業需要SOA基礎,這是SOA平臺的一個部分。SOA基礎必須支持所有的相關標準,和需要的運行時容器。圖3所示的是一個典型的SOA基礎結構。接下來的章節將逐一討論該結構的每個部分。

image
Figure 3. A typical SOA infrastructure. Click on thumbnail to view full-sized image.         

SOAP, WSDL, UDDI
WSDL,UDDI和SOAP是SOA基礎的基礎部件。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
儘管J2EE和.NET平臺是開發SOA應用程序常用的平臺,但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)的服務互用。

服務品質
在企業中,關鍵任務系統(mission-critical system,譯註:關鍵任務系統是指如果一個系統的可靠性對於一個組織是至關重要的,那麼該系統就是該企業的關鍵任務系統。比如,電話系統對於一個電話促銷企業來說就是關鍵任務系統,而文字處理系統就不那麼關鍵了。)用來解決高級需求,例如安全性,可靠性,事物。當一個企業開始採用服務架構作爲工具來進行開發和部署應用的時候,基本的Web服務規範,像WSDL,SOAP,以及UDDI就不能滿足這些高級需求。正如前面所提到的,這些需求也稱作服務品質(QoS,quality of services)。與QoS相關的衆多規範已經由一些標準化組織(standards bodies)提出,像W3C(World Wide Web Consortium)和OASIS(the Organization for the Advancement of Structured Information Standards)。下面的部分將會討論一些QoS服務和相關標準。

安全
Web服務安全規範用來保證消息的安全性。該規範主要包括認證交換, 消息完整性和消息保密。該規範吸引人的地方在於它藉助現有的安全標準,例如,SAML(as Security Assertion Markup Language)來實現web服務消息的安全。OASIS正致力於Web服務安全規範的制定。

可靠
在典型的SOA 環境中,服務消費者和服務提供者之間會有幾種不同的文檔在進行交換。具有諸如“僅且僅僅傳送一次”( 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 的工作.

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以藉助現有的應用來組合產生新服務的敏捷方式,提供給企業更好的靈活性來構建應用程序和業務流程。

About the author
Raghu R. Kodali is consulting product manager and SOA evangelist for Oracle Application Server. Kodali leads next-generation SOA initiatives and J2EE feature sets for Oracle Application Server, with particular expertise in EJB, J2EE deployment, Web services, and BPEL. Prior to product management, Kodali held presales and technical marketing positions in Oracle Asia-Pacific, based in Singapore. Prior to Oracle, he worked as software developer with National Computer Systems, Singapore. He holds a master's degree in computer science and is a frequent speaker at technology conferences. Kodali maintains an active blog at Loosely Coupled Corner

資源
·Java開發者社區:http://www.matrix.org.cn
·javaworld.com:javaworld.com
WS-I: http://www.ws-i.org
JAXB: http://www.java.sun.com/xml/jaxb
JAXR: http://java.sun.com/xml/jaxr
OASIS: http://www.oasis-open.org/home/index.php
SAML: http://www.oasis-open.org/specs/index.php#samlv1.0
SOAP: http://www.w3.org/TR/soap/
SOX: http://www.sarbanes-oxley.com/
UDDI: http://www.uddi.org/specification.html
W3C: http://www.w3.org/2002/ws/
WSDL: http://www.w3.org/TR/wsdl
WSBPEL: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsbpel
WS-Reliability: http://www.oasis-open.org/specs/index.php#wsrv1.1
WS-ReliableMessaging: http://xml.coverpages.org/WS-ReliableMessaging200502.pdf
Web Services Security: http://www.oasis-open.org/specs/index.php#wssv1.0
WS-I Basic Profile:http://www.ws-i.org/deliverables/workinggroup.aspx?wg=basicprofile
WSDM: http://www.oasis-open.org/committees/tc_home.php
XSD: http://www.w3.org/XML/Schema
Gartner: http://www.gartner.com/Init
To read about BEA's recent product offering in the SOA space, read "BEA's Patrick Discusses Project Free Flow," Paul Krill, InfoWorld (JavaWorld, June 2005): http://www.javaworld.com/javaworld/jw-06-2005/jw-0613-iw-bea.html
For more on SOA, read "Event-Driven Services in SOA," Jeff Hanson (JavaWorld, January 2005): http://www.javaworld.com/javaworld/jw-01-2005/jw-0131-soa.html
For more articles on Web services, browse the Java and Web Services section of JavaWorld's Topical Index: http://www.javaworld.com/channel_content/jw-webserv-index.shtml
For more articles on enterprise development, browse the Enterprise Java section of JavaWorld's Topical Index:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章