Flyingis

          Talking and thinking freely !
          Flying in the world of GIS !
          隨筆 - 156, 文章 - 16, 評(píng)論 - 589, 引用 - 0
          數(shù)據(jù)加載中……

          SOA介紹--什么是SOA?[轉(zhuǎn)載]

          版權(quán)聲明:本文可以自由轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
          作者: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
          關(guān)鍵字:SOA

          摘要
          在最近的軟件發(fā)展中,面向服務(wù)架構(gòu)(SOA, service-oriented architecture)成為了時(shí)下的熱門話題。這篇文章將向大家介紹SOA, 討論企業(yè)為什么需要SOA,什么是SOA, 從核心,平臺(tái),服務(wù)品質(zhì)3個(gè)層面來(lái)解釋SOA的基礎(chǔ)構(gòu)成。
          By Raghu R. Kodali



          對(duì)于面向同步和異步應(yīng)用的,基于請(qǐng)求/響應(yīng)模式的分布式計(jì)算來(lái)說(shuō),SOA是一場(chǎng)革命。一個(gè)應(yīng)用程序的業(yè)務(wù)邏輯(business logic)或某些單獨(dú)的功能被模塊化并作為服務(wù)呈現(xiàn)給消費(fèi)者或客戶端。這些服務(wù)的關(guān)鍵是他們的松耦合特性。例如,服務(wù)的接口和實(shí)現(xiàn)相獨(dú)立。應(yīng)用開發(fā)人員或者系統(tǒng)集成者可以通過(guò)組合一個(gè)或多個(gè)服務(wù)來(lái)構(gòu)建應(yīng)用,而無(wú)須理解服務(wù)的底層實(shí)現(xiàn)。舉例來(lái)說(shuō),一個(gè)服務(wù)可以用.NET或J2EE來(lái)實(shí)現(xiàn),而使用該服務(wù)的應(yīng)用程序可以在不同的平臺(tái)之上,使用的語(yǔ)言也可以不同。

          SOA有以下特性
                  SOA服務(wù)具有平臺(tái)獨(dú)立的自我描述XML文檔。Web服務(wù)描述語(yǔ)言(WSDL, Web Services Description Language)是用于描述服務(wù)的標(biāo)準(zhǔn)語(yǔ)言。
                  SOA 服務(wù)用消息進(jìn)行通信,該消息通常使用XML Schema來(lái)定義(也叫做XSD, XML Schema Definition)。消費(fèi)者和提供者或消費(fèi)者和服務(wù)之間的通信多見(jiàn)于不知道提供者的環(huán)境中。服務(wù)間的通訊也可以看作企業(yè)內(nèi)部處理的關(guān)鍵商業(yè)文檔。
                   在一個(gè)企業(yè)內(nèi)部,SOA服務(wù)通過(guò)一個(gè)扮演目錄列表(directory listing)角色的登記處(Registry)來(lái)進(jìn)行維護(hù)。應(yīng)用程序在登記處(Registry)尋找并調(diào)用某項(xiàng)服務(wù)。統(tǒng)一描述,定義和集成 (UDDI, Universal Description, Definition, and Integration)是服務(wù)登記的標(biāo)準(zhǔn)。
                   每項(xiàng)SOA服務(wù)都有一個(gè)與之相關(guān)的服務(wù)品質(zhì)(QoS, quality of service)。QoS的一些關(guān)鍵元素有安全需求(例如認(rèn)證和授權(quán)),可靠通信(譯注:可靠消息是指,確保消息“僅且僅僅”發(fā)送一次,從而過(guò)濾重復(fù)信息。),以及誰(shuí)能調(diào)用服務(wù)的策略。

          為什么選擇SOA?

          不同種類的操作系統(tǒng),應(yīng)用軟件,系統(tǒng)軟件和應(yīng)用基礎(chǔ)結(jié)構(gòu)(application infrastructure)相互交織,這便是IT企業(yè)的現(xiàn)狀。一些現(xiàn)存的應(yīng)用程序被用來(lái)處理當(dāng)前的業(yè)務(wù)流程(business processes),因此從頭建立一個(gè)新的基礎(chǔ)環(huán)境是不可能的。企業(yè)應(yīng)該能對(duì)業(yè)務(wù)的變化做出快速的反應(yīng),利用對(duì)現(xiàn)有的應(yīng)用程序和應(yīng)用基礎(chǔ)結(jié)構(gòu)(application infrastructure)的投資來(lái)解決新的業(yè)務(wù)需求,為客戶,商業(yè)伙伴以及供應(yīng)商提供新的互動(dòng)渠道,并呈現(xiàn)一個(gè)可以支持有機(jī)業(yè)務(wù)(organic business)的構(gòu)架。SOA憑借其松耦合的特性,使得企業(yè)可以按照模塊化的方式來(lái)添加新服務(wù)或更新現(xiàn)有服務(wù),以解決新的業(yè)務(wù)需要,提供選擇從而可以通過(guò)不同的渠道提供服務(wù),并可以把企業(yè)現(xiàn)有的或已有的應(yīng)用作為服務(wù), 從而保護(hù)了現(xiàn)有的IT基礎(chǔ)建設(shè)投資。

          如圖1的例子所示,一個(gè)使用SOA的企業(yè),可以使用一組現(xiàn)有的應(yīng)用來(lái)創(chuàng)建一個(gè)供應(yīng)鏈復(fù)合應(yīng)用(supply chain composite application),這些現(xiàn)有的應(yīng)用通過(guò)標(biāo)準(zhǔn)接口來(lái)提供功能。

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


          服務(wù)架構(gòu)

          為了實(shí)現(xiàn)SOA,企業(yè)需要一個(gè)服務(wù)架構(gòu),圖2顯示了一個(gè)例子:

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

          在圖2中, 服務(wù)消費(fèi)者(service consumer)可以通過(guò)發(fā)送消息來(lái)調(diào)用服務(wù)。這些消息由一個(gè)服務(wù)總線(service bus)轉(zhuǎn)換后發(fā)送給適當(dāng)?shù)姆?wù)實(shí)現(xiàn)。這種服務(wù)架構(gòu)可以提供一個(gè)業(yè)務(wù)規(guī)則引擎(business rules engine),該引擎容許業(yè)務(wù)規(guī)則被合并在一個(gè)服務(wù)里或多個(gè)服務(wù)里。這種架構(gòu)也提供了一個(gè)服務(wù)管理基礎(chǔ)(service management infrastructure),用來(lái)管理服務(wù),類似審核,列表(billing),日志等功能。此外,該架構(gòu)給企業(yè)提供了靈活的業(yè)務(wù)流程,更好地處理控制請(qǐng)求(regulatory requirement),例如Sarbanes Oxley(SOX),并且可以在不影響其他服務(wù)的情況下更改某項(xiàng)服務(wù)。

          SOA基礎(chǔ)結(jié)構(gòu)

          要運(yùn)行,管理SOA應(yīng)用程序,企業(yè)需要SOA基礎(chǔ),這是SOA平臺(tái)的一個(gè)部分。SOA基礎(chǔ)必須支持所有的相關(guān)標(biāo)準(zhǔn),和需要的運(yùn)行時(shí)容器。圖3所示的是一個(gè)典型的SOA基礎(chǔ)結(jié)構(gòu)。接下來(lái)的章節(jié)將逐一討論該結(jié)構(gòu)的每個(gè)部分。

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

          SOAP, WSDL, UDDI
          WSDL, UDDI和SOAP是SOA基礎(chǔ)的基礎(chǔ)部件。WSDL用來(lái)描述服務(wù);UDDI用來(lái)注冊(cè)和查找服務(wù);而SOAP,作為傳輸層,用來(lái)在消費(fèi)者和服務(wù)提供者之間傳送消息。SOAP是Web服務(wù)的默認(rèn)機(jī)制,其他的技術(shù)為可以服務(wù)實(shí)現(xiàn)其他類型的綁定。一個(gè)消費(fèi)者可以在UDDI注冊(cè)表(registry)查找服務(wù),取得服務(wù)的WSDL描述,然后通過(guò)SOAP來(lái)調(diào)用服務(wù)。

          WS-I Basic Profile
          WS-I Basic Profile,由Web服務(wù)互用性組織(Web Services Interoperability Organization)提供,是SOA服務(wù)測(cè)試與互用性所需要的核心構(gòu)件。服務(wù)提供者可以使用Basic Profile測(cè)試程序來(lái)測(cè)試服務(wù)在不同平臺(tái)和技術(shù)上的互用性。

          J2EE 和 .Net
          盡管J2EE和.NET平臺(tái)是開發(fā)SOA應(yīng)用程序常用的平臺(tái),但SOA不僅限于此。像J2EE這類平臺(tái),不僅為開發(fā)者自然而然地參與到SOA中來(lái)提供了一個(gè)平臺(tái),還通過(guò)他們內(nèi)在的特性,將可擴(kuò)展性,可靠性,可用性以及性能引入了SOA世界。新的規(guī)范,例如 JAXB(Java API for XML Binding),用于將XML文檔定位到Java類;JAXR(Java API for XML Registry)用來(lái)規(guī)范對(duì)UDDI注冊(cè)表(registry)的操作;XML-RPC(Java API for XML-based Remote Procedure Call)在J2EE1.4中用來(lái)調(diào)用遠(yuǎn)程服務(wù),這使得開發(fā)和部署可移植于標(biāo)準(zhǔn)J2EE容器的Web服務(wù)變得容易,與此同時(shí),實(shí)現(xiàn)了跨平臺(tái)(如.NET)的服務(wù)互用。

          服務(wù)品質(zhì)
          在企業(yè)中,關(guān)鍵任務(wù)系統(tǒng)(mission-critical system,譯注:關(guān)鍵任務(wù)系統(tǒng)是指如果一個(gè)系統(tǒng)的可靠性對(duì)于一個(gè)組織是至關(guān)重要的,那么該系統(tǒng)就是該企業(yè)的關(guān)鍵任務(wù)系統(tǒng)。比如,電話系統(tǒng)對(duì)于一個(gè)電話促銷企業(yè)來(lái)說(shuō)就是關(guān)鍵任務(wù)系統(tǒng),而文字處理系統(tǒng)就不那么關(guān)鍵了。)用來(lái)解決高級(jí)需求,例如安全性,可靠性,事物。當(dāng)一個(gè)企業(yè)開始采用服務(wù)架構(gòu)作為工具來(lái)進(jìn)行開發(fā)和部署應(yīng)用的時(shí)候,基本的Web服務(wù)規(guī)范,像WSDL,SOAP,以及UDDI就不能滿足這些高級(jí)需求。正如前面所提到的,這些需求也稱作服務(wù)品質(zhì)(QoS,quality of services)。與QoS相關(guān)的眾多規(guī)范已經(jīng)由一些標(biāo)準(zhǔn)化組織(standards bodies)提出,像W3C(World Wide Web Consortium)和OASIS(the Organization for the Advancement of Structured Information Standards)。下面的部分將會(huì)討論一些QoS服務(wù)和相關(guān)標(biāo)準(zhǔn)。

          安全
          Web服務(wù)安全規(guī)范用來(lái)保證消息的安全性。該規(guī)范主要包括認(rèn)證交換, 消息完整性和消息保密。該規(guī)范吸引人的地方在于它借助現(xiàn)有的安全標(biāo)準(zhǔn),例如,SAML(as Security Assertion Markup Language)來(lái)實(shí)現(xiàn)web服務(wù)消息的安全。OASIS正致力于Web服務(wù)安全規(guī)范的制定。

          可靠
          在典型的SOA 環(huán)境中,服務(wù)消費(fèi)者和服務(wù)提供者之間會(huì)有幾種不同的文檔在進(jìn)行交換。具有諸如“僅且僅僅傳送一次”( once-and-only-once delivery),“最多傳送一次”( at-most-once delivery),“重復(fù)消息過(guò)濾”(duplicate message elimination),“保證消息傳送”(guaranteed message delivery)等特性消息的發(fā)送和確認(rèn),在關(guān)鍵任務(wù)系統(tǒng)(mission-critical systems)中變得十分重要。WS-Reliability 和 WS-ReliableMessaging是兩個(gè)用來(lái)解決此類問(wèn)題的標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)現(xiàn)在都由OASIS負(fù)責(zé)。

          策略
          服務(wù)提供者有時(shí)候會(huì)要求服務(wù)消費(fèi)者與某種策略通信。比如,服務(wù)提供商可能會(huì)要求消費(fèi)者提供Kerberos安全標(biāo)示,才能取得某項(xiàng)服務(wù)。這些要求被定義為策略斷言(policy assertions)。一項(xiàng)策略可能會(huì)包含多個(gè)斷言。WS-Policy用來(lái)標(biāo)準(zhǔn)化服務(wù)消費(fèi)者和服務(wù)提供者之間的策略通信。

          控制
          當(dāng)企業(yè)著手于服務(wù)架構(gòu)時(shí),服務(wù)可以用來(lái)整合數(shù)據(jù)倉(cāng)庫(kù)(silos of data),應(yīng)用程序,以及組件。整合應(yīng)用意味著例如異步通信,并行處理,數(shù)據(jù)轉(zhuǎn)換,以及校正等進(jìn)程請(qǐng)求必須被標(biāo)準(zhǔn)化。在SOA中,進(jìn)程是使用一組離散的服務(wù)創(chuàng)建的。BPEL4WS 或者 WSBPEL(Web Service Business Process Execution Language)是用來(lái)控制這些服務(wù)的語(yǔ)言。WSBPEL目前也由OASIS負(fù)責(zé)。

          管理
          隨著企業(yè)服務(wù)的增長(zhǎng),所使用的服務(wù)和業(yè)務(wù)進(jìn)程的數(shù)量也隨之增加,一個(gè)用來(lái)讓系統(tǒng)管理員管理所有運(yùn)行在多相環(huán)境下的服務(wù)的管理系統(tǒng)就顯得尤為重要。WSDM(Web Services for Distributed Management)規(guī)定了任何根據(jù)WSDM實(shí)現(xiàn)的服務(wù)都可以由一個(gè)WSDM適應(yīng)(WSDM-compliant)的管理方案來(lái)管理。

          其它的qos特性,比如合作方之間的溝通和通訊,多個(gè)服務(wù)之間的事務(wù)處理,都在WS-Coordination 和 WS-Transaction 標(biāo)準(zhǔn)中描述, 這些都是OASIS 的工作.

          SOA 不是Web服務(wù)
          在理解SOA和Web服務(wù)的關(guān)系上,經(jīng)常發(fā)生混淆。根據(jù)2003年4月的Gartner報(bào)道,Yefim V. Natis就這個(gè)問(wèn)題是這樣解釋的:“Web服務(wù)是技術(shù)規(guī)范,而SOA是設(shè)計(jì)原則。特別是Web服務(wù)中的WSDL,是一個(gè)SOA配套的接口定義標(biāo)準(zhǔn):這是 Web服務(wù)和SOA的根本聯(lián)系。”從本質(zhì)上來(lái)說(shuō),SOA是一種架構(gòu)模式,而Web服務(wù)是利用一組標(biāo)準(zhǔn)實(shí)現(xiàn)的服務(wù)。Web服務(wù)是實(shí)現(xiàn)SOA的方式之一。用 Web服務(wù)來(lái)實(shí)現(xiàn)SOA的好處是你可以實(shí)現(xiàn)一個(gè)中立平臺(tái),來(lái)獲得服務(wù),而且隨著越來(lái)越多的軟件商支持越來(lái)越多的Web服務(wù)規(guī)范,你會(huì)取得更好的通用性。

          SOA的優(yōu)勢(shì)

          SOA 的概念并非什么新東西,SOA不同于現(xiàn)有的分布式技術(shù)之處在于大多數(shù)軟件商接受它并有可以實(shí)現(xiàn)SOA的平臺(tái)或應(yīng)用程序。SOA伴隨著無(wú)處不在的標(biāo)準(zhǔn),為企業(yè)的現(xiàn)有資產(chǎn)或投資帶來(lái)了更好的重用性。SOA能夠在最新的和現(xiàn)有的應(yīng)用之上創(chuàng)建應(yīng)用;SOA能夠使客戶或服務(wù)消費(fèi)者免予服務(wù)實(shí)現(xiàn)的改變所帶來(lái)的影響; SOA能夠升級(jí)單個(gè)服務(wù)或服務(wù)消費(fèi)者而無(wú)需重寫整個(gè)應(yīng)用,也無(wú)需保留已經(jīng)不再適用于新需求的現(xiàn)有系統(tǒng)。總而言之,SOA以借助現(xiàn)有的應(yīng)用來(lái)組合產(chǎn)生新服務(wù)的敏捷方式,提供給企業(yè)更好的靈活性來(lái)構(gòu)建應(yīng)用程序和業(yè)務(wù)流程。

          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開發(fā)者社區(qū):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:
          http://www.javaworld.com/channel_content/jw-enterprise-index.shtml

          posted on 2005-12-28 11:17 Flyingis 閱讀(1637) 評(píng)論(0)  編輯  收藏 所屬分類: 架構(gòu)與設(shè)計(jì)

          主站蜘蛛池模板: 隆子县| 永德县| 清水河县| 当雄县| 平远县| 门头沟区| 云林县| 兰州市| 霍林郭勒市| 葫芦岛市| 昌吉市| 侯马市| 岳西县| 老河口市| 阿勒泰市| 台北县| 万全县| 阿鲁科尔沁旗| 惠来县| 金塔县| 六枝特区| 江孜县| 江北区| 浦东新区| 兰西县| 玉田县| 共和县| 尉氏县| 东光县| 璧山县| 闸北区| 佛冈县| 桦川县| 湾仔区| 林口县| 镇安县| 尼勒克县| 江西省| 上饶县| 达州市| 永靖县|