【问题标题】:SOAP to REST ConversionSOAP 到 REST 的转换
【发布时间】:2011-08-08 15:34:12
【问题描述】:

我有一个使用 SOAP 用 C# 编写的 Web 服务。客户端已请求将相同的服务作为基于 REST 的服务提供。

有没有一种聪明/快速的方法可以实现这一点,或者我是否正在寻找从新的重建?

【问题讨论】:

  • 这取决于你当前的 SOAP 接口做什么——如果它只是通过一些标识符来查找文档,那并不太难……如果你正在插入/修改文档……它仍然不是问题太大了......但如果它是围绕消息而不是文档,那么你还有一些工作要做。

标签: c# rest soap


【解决方案1】:

基于 SOAP 的服务是使用一组与 REST 服务完全不同的约束构建的。如果服务很简单,那么这两种方法的最终结果可能看起来有些相关,但实际上它们是两种完全不同的方法。

【讨论】:

  • 我有一种可怕的预感会是这种情况。
【解决方案2】:

SOAP 和 REST 不仅在概念上而且在机制上都不同。

从概念上讲,SOAP 方法几乎是 RPC、远程过程。所以你的网络方法看起来像“GetListOfCustomers”和“DeleteCustomer”。在 REST 中,您将客户建模为资源并在这些资源上使用 HTTP 动词。要获取客户列表,客户端将发送 HTTP GET,服务器将以 XML、JSON、HTML 或自定义格式返回客户表示。客户代表可能具有嵌入的 URL 链接,例如允许客户代码删除客户。这叫HATEOAS

从机制上讲,SOAP 是 HTTP 之上的一层。忽略并重新实现现有 HTTP 功能(如信封、动词、缓存、编码等)的层。与依赖所有这些 HTTP 功能的 REST 相反。所以机械上 REST 更简单,因为 SOAP 没有额外的层。

当您被要求将现有的 SOAP 服务作为 REST 提供时,它可能暗示了纯粹的机械方面。您可能需要“XML RPC over HTTP”,这将需要您做一些工作,但可能不如将 API 从 SOAP/RPC 重新设计为 REST/HATEOAS 困难。

【讨论】:

  • 非常感谢您的详细回复。我想我需要做一些阅读,并期待一些漫长的夜晚。
  • -1 您忘记了一些 SOAP Web 服务是基于消息或文档的,而根本不是 RPC。您也可以省略意识形态并坚持回答问题。
  • @John Saunders:它的 WSDL SOAP 绑定样式可以是 RPC 或 Document。编程模型大部分时间是 RPC。但是感谢您的评论,它与您的回答一样有用。
  • 如果服务是面向文档或消息的,而不是面向 RPC 的,则 WSDL SOAP 绑定样式将是 Document。我的第一个 Web 服务就是一个例子——它通过 SOAP 将所有请求作为文档接收,并通过 XML 进行所有处理,在 SOAP 响应中返回一个文档。
【解决方案3】:

解决方案将取决于您如何实现 SOAP Web 服务。

这不是“转换”。您将编写一个基于 REST 的服务来执行与您的 SOAP 服务相同的事情。如果您正确地开发了您的 SOAP 服务,那么您将能够重用大部分代码。然后,您将能够部署满足这两个要求的单一服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多