SOAP vs REST:如何選擇?

2023年3月15日

💎 加入 E+ 成長計畫 與超過 300+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

什麼是 SOAP?

SOAP(Simple Object Access Protocol)是一種基於 XML 的網路通訊協議,用於在網際網路上進行分散式計算。SOAP 消息可以使用不同的協議進行傳輸,例如 HTTP、SMTP、MIME、RPC 等。SOAP 提供了 Web 服務協議堆疊的消息協議層,用於 Web 服務。它是一種基於 XML 的協議,由三部分組成:

  • 封裝:定消息的結構、內容和處理方式。
  • 編碼規則:定義應用程式定義的資料類型的表達方式。
  • 通訊樣式:定義如何表示遠端過程調用和回應。
SOAP Message Building Blocks
SOAP Message Building Blocks
圖片來源:https://www.guru99.com/soap-simple-object-access-protocol.html

SOAP Envelope:是一個封裝元素,可將子層元素識別為 SOAP 訊息,並提供名稱空間宣告。 名稱空間提供 SOAP 內文內元素的語意環境定義。

SOAP Header:是選用元素,可包含 meta 資料,例如鑑別資訊、本地化支援及遞送路徑。

SOAP Body:包含訊息的有效負載,它是 Web 服務要求或 Web 服務回應。 回應可能是處理錯誤,稱為 SOAP 錯誤。

SOAP 和 REST 該怎麼選?

性質差異

兩者都是 HTTP 協議,但差異之處在於:

  1. 傳輸協議:SOAP 使用 HTTP、SMTP、TCP 或 UDP 等傳輸協議,而 REST 通常使用 HTTP 協議。
  2. 資料格式:SOAP 使用 XML 格式來傳輸資料,而 REST 使用較為輕量的格式,如 JSON 或 XML 等。
  3. 操作風格:SOAP 使用基於 Remote Procedure Call (RPC) 的操作風格,而 REST 使用基於資源的操作風格。
  4. 設計原則:SOAP 遵循較為嚴格的標準和規範,而 REST 強調簡潔、自由度高、易於擴展等特點。
  5. 傳輸效率:由於 SOAP 使用較為複雜的 XML 格式和 RPC 操作風格,傳輸效率較低;而 REST 使用較為輕量的資料格式和資源操作風格,傳輸效率較高。

使用情境

選擇 REST 的情況

  • 量級且可伸縮的解決方案,尤其是在 Web 應用程序上。
  • 在客戶端和服務器之間進行簡單的數據傳輸,並且需要支持多種格式,如 JSON,XML 等。
  • 支持跨語言的通信,因為 REST 是基於 HTTP 和 URL 的,這使得它更容易跨平台。

選擇 SOAP 的情況

  • 一個較嚴格的協議,可以提供高度安全性和事務支持。
  • 在大型企業系統中傳輸複雜的、高度結構化的數據。
  • 保證消息的完整性,以確保數據在傳輸過程中不會遺失或被損壞。
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們