天天看點

SOA面向服務的架構

1、關于SOA的定義,目前主要有以下三個:

1)W3C的定義:SOA是一種應用程式架構,在這種架構中,所有功能都定義為獨立的服務,這些服務帶有定義明确的可調用接口,能夠以定義好的順序調用這些服務來形成業務流程。

2)Service-architecture.com的定義:服務是精确定義、封裝完善、獨立于其他服務所處環境和狀态的函數。SOA本質上是服務的集合,服務之間彼此通信,這種通信可能是簡單的資料傳送,也可能是兩個或更多的服務協調進行某些活動。服務之間需要某些方法進行連接配接。

3)Gartner的定義:SOA是一種C/S架構的軟體設計方法,應用由服務和服務使用者組成,SOA與大多數通用的C/S架構模型不同之處,在于它着重強調構件的松散耦合,并使用獨立的标準接口。

2、SOA設計原則:

1)明确定義的接口。服務請求者依賴于服務規約來調用服務,是以,服務定義必須長時間穩定,一旦公布,不能随意更改;服務的定義應盡可能明确,減少請求者的不适當使用;不要讓請求者看到服務内部的私有資料。

2)自包含和子產品化。服務封裝了那些在業務上穩定、重複出現的活動和構件,實作服務的功能實體是完全獨立自主的,獨立進行部署、版本控制、自我管理和恢複。

3)粗粒度。服務數量不應該太多,依靠消息互動而不是遠端過程調用,通常消息量比較大,但是服務之間的互動頻度較低。

4)松耦合。服務請求者可見的是服務的接口,其位置、實作技術、目前狀态和私有資料等,對服務請求者而言是不可見的。

5)互操作性、相容和政策聲明。為了確定服務規約的全面和明确,政策成為一個越來越重要的方面。這可以試與技術相關的内容,例如,一個服務隊安全性方面的要求;也可以試與業務有關的語義方面的内容,例如,需要滿足的費用或者服務級别方面的要求,這些政策對于服務在互動時是非常重要的。

3、SOA的關鍵技術

1)UDDI

統一描述、發現和內建(Universal Description Discovery and Integration ,UDDI)提供了一種服務釋出、查找和定位的方法,是服務的資訊注冊規範,以便被需要該服務的使用者發現和使用它。UDDI規範描述了服務的概念,同時也定義了一種程式設計接口。通過UDDI提供的标準接口,企業可以釋出自己的服務供其他企業查詢和調用,也可以查詢特定服務的描述資訊,并動态綁定到該服務上。

2)WSDL

Web服務描述語言(Web Service Description Language , WSDL)是對服務進行描述的語言,它有一套基于XML的文法定義。WSDL描述的重點是服務,它包含服務實作定義和服務接口定義。

采用抽象接口定義對于提高系統的擴充性很有幫助。服務接口定義就是一種抽象的、可重用的定義,行業标準組織可以使用這種抽象的定義來規定一些标準的服務類型,服務實作者可以根據這些标準定義來實作具體的服務。

服務實作定義描述了給定服務提供者如何實作特定的服務接口。服務實作定義中包含服務和端口描述。一個服務往往會包含多個服務通路入口,而每個通路入口都會使用一個端口元素來描述,端口描述的是一個服務通路入口的部署細節,例如,通過哪個位址來通路,應當使用怎樣的消息調用模式來通路等。

3)SOAP

簡單對象通路協定(Simple Object Access Protocol , SOAP)定義了服務請求者和服務提供者之間的消息傳輸規範。SOAP用XML來格式化消息,用HTTP來承載消息。通過SOAP,應用程式可以再網絡中進行資料交換和遠端過程調用(Remote Procedure Call , RPC)。SOAP主要包括以下4個部分:

1.封裝。

2.編碼規則。

3.RPC表示。

4.綁定。

4)REST

表述性狀态轉移(Representational State Thansfer , REST)是一種隻使用HTTP和XML進行基于Web通信的技術,可以降低開發的複雜性,提高系統的可伸縮性。它的簡單性和缺少嚴格配置檔案的特性,使它與SOAP很好地隔離開來,REST從根本上來說隻支援幾個操作(POST、GET、PUT和DELETE),這些操作适用于所有的消息。REST提出了如下一些設計概念和準則:

1.網絡上的所有事物都被抽象為資源。

2.每個資源對應一個唯一的資源辨別。

3.通過通用的連接配接件接口對資源進行操作。

4.對資源的各種操作不會改變資源辨別。

5.所有的操作都是無狀态的。

4、SOA的實作方法

SOA隻是一種概念和思想,需要借助于具體的技術和方法來實作它。從本質上來看,SOA是用本地計算模型來實作一個分布式的計算應用,也有人稱這種方法為“本地化設計,分布式工作”模型。CORBA、DCOM和EJB等都屬于這種解決方式,也就是說,SOA最終可以基于這些标準來實作。

從邏輯上和高層抽象來看,目前,實作SOA的方法也比較多,其中主流方式有Web Service、企業服務總線和服務系統資料庫。

1. Web Service

a)服務提供者。

b)服務請求者。

c)服務注冊中心。

2.服務系統資料庫

a)服務注冊。

b)服務位置。

c)服務綁定。

3.企業服務總線

與企業應用內建方面,與現存的、專有的內建解決方案相比,ESB具有以下優勢:

a)擴充的、基于标準的連接配接。

b)靈活的、服務導向的應用組合。

c)提高複用率,降低成本。

d)減少市場反應時間,提高生産率。