Web 服務開發方法 - 行動應用程式開發、Web 服務、SOA 架構 - 技術
跳至內容

Web 服務開發方法 – 移動應用程序開發、Web 服務、SOA 架構

廣告

Coulouris 將分散式系統定義為「電腦網路中存在的硬體和/或軟體元件透過交換訊息進行通訊並協調其行為的系統」。

由於多種因素,這一概念近年來變得流行。推動分散式系統發展的第一個因素是高速本地網路的出現。另一個重要因素是個人電腦效能的技術進步以及支援分散式應用程式的軟體開發。分散式系統與 Web 和 Internet 的概念相關。隨著 Web 的發展以及新領域、互動、需求和應用程式的出現,Web 2.0 的概念應運而生。這個術語由 Tim O'Reilly 在 2004 年創造,指的是 Web 歷史上基於用戶社區和一系列特殊服務(例如社交網絡、博客、wiki 或大眾分類法)的第二代,鼓勵協作和敏捷用戶之間的資訊交換。

第一個可以被認為是服務導向 (SOA) 的體系結構是基於 CORBA(通用物件請求代理體系結構),它充當抽象層來互連體系結構的不同元素並建構服務。其他早期技術包括 DCOM(分散式組件物件模型)或 RPC(遠端過程協定)。隨著在 Web 上高效設計和實現分散式系統的需要,出現了一些挑戰,一些挑戰集中在開發本身(效能、使用者體驗等),而其他挑戰則基於服務的可重複使用性和相容性。這些需求催生了 Web 服務,它提供了將不同使用者與資訊伺服器互連的標準化機制。

服務導向的架構

根據 SOA(服務導向的架構),它們是定義服務的使用來支援業務需求的軟體架構,其目標是實現軟體代理之間盡可能最小的耦合。服務是服務提供者為實現服務使用者所需的最終結果而執行的工作單元。服務提供者和服務消費者都是由軟體代理人扮演的角色,而不是其所有者。一般來說,服務導向的架構是一種軟體解決方案,旨在允許公司組織和利用各種流程。借助 SOA,軟體應用程式不再是龐大的功能和流程塊。相反,這些應用程式由組裝的模組化服務組成。請記住,服務是一種簡單的軟體功能(例如取消 CD 上的播放)。它可以由任何系統按需運行,無論作業系統、平台、程式語言或地理位置如何。

SOA的革命性並不是這個概念本身,這個概念已經存在很久了,而是它可以透過WWW(萬維網)來實現。就像網頁在任何平台上載入一樣,Web 服務以類似的方式運作,無論平台如何,因為它們是使用建構的
通用標準。

照片SOA 的想法直接源自於物件導向編程,它顯示了資料及其處理之間的關係。因此,他們透過獨立於底層平台和程式語言的介面正式定義服務。這些介面隱藏了其實現的特殊性,這使得它們獨立於 開發人員和程式語言。透過這些架構,可以設計和實現高度可擴展的系統,反映業務邏輯,同時促進不同專有或第三方系統之間的互動。我們希望有人為我們做這項工作的原因是因為他們是專家。使用服務通常比自己做更便宜、更有效。因此,我們大多數人都明白,我們不可能在所有事情上都是專家。同樣的規則可以應用在建構軟體系統。

介面非常重要,如果定義不明確或不起作用,系統就無法運作。整合更多介面的成本很高,而且還增加了分散式應用程式中出錯的可能性。遠端介面是大多數分散式應用程式中最慢的部分。有了這一切,與其為每個應用程式建立新的接口,不如為所有應用程式重複使用通用介面更有意義。

因此,由於我們只有一些可用的通用接口,因此我們必須在訊息中包含特定於應用程式的語義。我們可以透過介面發送任何類型的訊息,但是需要遵循一些規則來表明架構是面向服務的。

– 首先,訊息必須是描述性的,而不是指導性的,因為服務提供者負責解決問題。例如,這類似於去餐廳告訴服務生你想喝什麼、你的喜好,但我們不應該向廚師解釋如何一步一步準備你的菜餚。

‐ 其次,如果服務提供者的訊息沒有以每個相關人員都能理解的格式、結構和詞彙編寫,那麼他們將無法理解您的請求。因此,限制訊息的詞彙和結構是一個
有效溝通所必需的。訊息越受限制,就越容易理解。

‐ 第三,延期的可能性至關重要。世界是一個不斷變化的地方,軟體生存的環境也是如此。這些變化需要係統軟體、消費者進行相應的改變 服務、提供者以及他們交換的訊息。如果訊息不可擴展,消費者和提供者將被鎖定到特定版本的服務。約束和可擴展性密切相關,兩者都需要,增加一個意味著減少另一個。理想的是達到正確的平衡。

– 第四,SOA 必須有一種機制,讓消費者在其尋求的服務的脈絡中發現服務提供者。此機制必須靈活,且不能是中心化的註冊機構。

‐ 第五,無狀態服務:消費者傳送給提供者的每個訊息都必須包含提供者處理該訊息所需的所有資訊。此限制使服務提供者更具可擴展性,因為提供者不需要在請求之間儲存狀態資訊。這可以稱為“量產服務”,因為每個請求都可以通用處理。此限制還提供了更多可見性,因為任何監控軟體都可以檢查獨立請求並提取其意圖。由於沒有中間狀態,這還可以輕鬆地從部分故障中恢復,從而使服務更加可靠。

‐ 第六,冪等請求(不進行更改):軟體代理程式收到的重複請求與單一請求具有相同的效果。這項要求允許提供者和消費者提高整體可靠性 服務,如果發生任何故障,只需重複請求。

因此,我們可以說 SOA 不是一個工具,而是一套用於建立新的、更動態且依賴性更少的應用程式的標準。 SOA 促進以系統化的方式存取不同服務之間的業務邏輯和訊息,並且還可以編排多個遠端服務以形成單一服務。多數的 這些定義確定了 Web 服務在服務導向的體系結構的實作中的使用,我們將在下一章中看到它。但是,它可以使用任何其他基於服務的技術來實現。