SOAP vs REST:如何选择?

2023年3月15日

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

什么是 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 上追蹤我們