我有一个使用SOAP用C#编写的Web服务。客户端已请求提供与基于REST的服务相同的服务。
我可以通过聪明/快捷的方式实现这一目标吗,还是我正在寻找新的重建方式?
答案 0 :(得分:5)
基于SOAP的服务使用与REST服务完全不同的约束集构建。如果服务很简单,那么这两种方法的最终结果可能看起来有些相关,但实际上它们是两种完全不同的方法。
答案 1 :(得分:3)
SOAP和REST不仅在概念上而且在机械上都不同。
从概念上讲,SOAP方法几乎就是RPC远程过程。因此,您的Web方法看起来像“GetListOfCustomers”和“DeleteCustomer”。在REST中,您将Customers模型化为资源,并在这些资源上使用HTTP谓词。要获取客户列表,客户端将发送HTTP GET,服务器将返回XML,JSON,HTML或自定义格式的客户表示。客户表示可能具有嵌入的URL链接,允许客户端代码删除客户。这称为HATEOAS
机械SOAP是HTTP之上的一个层。忽略并重新实现现有HTTP功能(如信封,动词,缓存,编码等)的层。与依赖所有这些HTTP功能的REST相反。因此,机械REST更简单,因为SOAP没有额外的层。
当您被要求将现有SOAP服务作为REST提供时,它可能意味着纯粹的机械方面。您可能需要“XML RPC over HTTP”,这将需要您的一些工作,但可能不像重新设计从SOAP / RPC到REST / HATEOAS的API那么难。
答案 2 :(得分:0)
解决方案将取决于您如何实现SOAP Web服务。
这不是“转换”。您将编写基于REST的服务来执行与SOAP服务相同的操作。如果您正确开发了SOAP服务,那么您将能够重用大部分代码。然后,您将能够部署满足这两个要求的单个服务。