面向服务的体系结构
外观
此条目形似評論,須要清理。 (2010年3月9日) |
面向服务的体系结构(Service-oriented architecture)是构造分布式計算的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。
何謂 SOA?
企业系统的架构师认为SOA能够帮助业务迅速和高效地响应变化的市场条件[1] . 服务導向的架构在宏观(服务)上,而不是在微观上(对象)提高了重複使用性。同时,服务導向的架构可以简化与传统系统的互连和使用。
在某种意义上说,服务導向的架构可以被认为是一种演化,而不是革命。它捕捉到了之前体系架构的许多最佳实践或实际应用。比如在通信系统中,近年來進展有限的解決方案多採用完全靜態的綁定來與網路中的其他設備溝通,但若正式採用SOA方式,解決方案就更能妥善定位,進而突顯定義明確且可高度跨平台操作介面的重要性。[2]
有些人质疑服务導向的架构是不是1970年代模块化编程,1980年代的面向事件设计,1990年代的基于接口/构件设计的一种复兴?(1990s)[來源請求]。 服务導向的架构提升了将用户从服务实现分开的目标。服务可以运行在不同的服务器上,并通过网络被访问。 这也大大增加了服务的重用[來源請求]。
SOA的原則
以下指導原則是開發,維護和使用SOA的基本原則[3]
下面是一些特定的體系架構原則
- 服務封裝
- 服務鬆耦合(Loosely coupled) - 服務之間的關係最小化,只是互相知道。
- 服務契約 - 服務按照服務描述文檔所定義的服務契約行事。
- 服務抽象 - 除了服務契約中所描述的內容,服務將對外部隱藏邏輯。
- 服務的重用性 - 將邏輯分佈在不同的服務中,以提高服務的重用性。
- 服務的可組合性 - 一組服務可以協調工作並組合起來形成一個組合服務。
- 服務自治 – 服務對所封裝的邏輯具有控制權
- 服務無狀態 – 服務將一個活動所需保存的資訊最小化。
- 服務的可被發現性 – 服務需要對外部提供描述資訊,這樣可以通過現有的發現機制發現並訪問這些服務。[4]
除此以外,在定義一個SOA實現時,還需要考慮以下因素:
- 生命週期管理
- 有效使用系統資源
- 服務成熟度和性能
服務導向的架构和Web服务协议
服務導向的架构通常被定义为通过Web服务协议栈暴露的服务[來源請求] . 与SOA相关的Web服务的标准主要有:
- XML - 一种标记语言,用于以文档格式描述消息中的数据。
- HTTP (或HTTPS) - 客户端和服务端之间用于传送信息而发送请求/回复的协议。
- SOAP(Simple Object Access Protocol) - 在计算机网络上交换基于XML的消息的协议,通常是用HTTP。
- WSDL(Web Services Description Language) (Web服务描述语言) - 基于XML的描述语言,用于描述与服务交互所需的服务的公共接口,协议绑定,消息格式。
- UDDI(Universal Description, Discovery, and Integration) (是统一描述、发现和集成) - 基于XML的注册协议,用于发布WSDL并允许第三方发现这些服务。
注意,一个系统要成为服務導向的系统并不需要这些协议,比如一些服務導向的系统可以通过CORBA实现。
参考文献
- ^ Christopher Koch A New Blueprint For The Enterprise, CIO Magazine, Mar 1 2005
- ^ Norbert Bieberstein Service-Oriented Architecture Compass 2006
- ^ Yvonne Balzer 改進您的 SOA 專案規劃, IBM, 2004年8月1日
- ^ Thomas Erl Serviceorientation.org - About the Principles, 2005-2006