服務導向架構

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

服務導向架構(英語:service-oriented architecture)並不特指一種技術,而是一種分散式運算的軟體設計方法。軟體的部分組件(呼叫者),可以透過網路上的通用協定呼叫另一個應用軟體元件執行、運作,讓呼叫者獲得服務。SOA原則上採用開放標準、與軟體資源進行互動並採用表示的標準方式。因此應能跨越廠商、產品與技術。一項服務應視為一個獨立的功能單元,可以遠端存取並獨立執行與更新,例如在線查詢信用卡帳單。

SOA中的一項服務應有以下四個特性:

  1. 針對某特定要求的輸出,該服務就是運作一項商業邏輯
  2. 具有完備的特性(self-contained)
  3. 消費者並不需要瞭解此服務的運作過程
  4. 可能由底層其他服務組成

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實現。

參考文獻[編輯]

外部連結[編輯]

參見[編輯]