對(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ù)的要害是他們的松耦合特性。例如,服務(wù)的接口和實(shí)現(xiàn)相獨(dú)立。應(yīng)用開(kāi)發(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)部處理的要害商業(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的一些要害元素有安全需求(例如認(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è)伙伴以及供給商提供新的互動(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è)供給鏈復(fù)合應(yīng)用(supply chain composite application),這些現(xiàn)有的應(yīng)用通過(guò)標(biāo)準(zhǔn)接口來(lái)提供功能。
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è)例子:
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è)部分。
Figure 3. A typical SOA infrastructure. Click on thumbnail to view full-sized image.
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注