Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SOAP到REST的转换_C#_Rest_Soap - Fatal编程技术网

C# SOAP到REST的转换

C# SOAP到REST的转换,c#,rest,soap,C#,Rest,Soap,我有一个使用SOAP用C#编写的web服务。客户端已请求提供与基于REST的服务相同的服务 是否有一种聪明/快速的方法可以实现这一点,或者我正在考虑从新的服务中重建?基于SOAP的服务是使用与REST服务完全不同的约束集构建的。如果服务很简单,那么这两种方法的最终结果可能看起来有些关联,但实际上它们是两种完全不同的方法。SOAP和REST不仅在概念上而且在机械上是不同的 从概念上讲,SOAP方法基本上是RPC、远程过程。所以您的web方法看起来像“GetListOfCustomers”和“Del

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


是否有一种聪明/快速的方法可以实现这一点,或者我正在考虑从新的服务中重建?

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

SOAP和REST不仅在概念上而且在机械上是不同的

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

SOAP是HTTP之上的一个层。层,它忽略并重新实现现有的HTTP功能,如信封、谓词、缓存、编码等,而不是依赖于所有这些HTTP功能的REST。所以REST更简单,因为SOAP没有额外的层


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

解决方案将取决于您如何实现soapweb服务


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

这取决于您当前的SOAP接口的功能——如果它只是通过某个标识符来查找文档,这并不难。。。如果要插入/修改文档。。。这仍然不是什么大问题。。。但是,如果是关于信息而不是文件的事情,你还有一些工作要做。我有一种可怕的感觉,情况就是这样。非常感谢你的详细回复。我想我需要做一些阅读,并期待一些漫长的夜晚。-1您忘记了一些SOAP web服务是基于消息或文档的,而不是基于RPC的。你也可以省去意识形态,坚持回答这个问题。@johnsaunders:它的WSDL-SOAP绑定风格可以是RPC或Document。大多数情况下,编程模型都是RPC。但是感谢您的评论,它和您的回答一样有用。如果服务是面向文档或消息的,则WSDL SOAP绑定样式将是文档,而不是面向RPC的。我的第一个web服务就是一个例子——它通过SOAP接收所有请求作为文档,并通过XML进行所有处理,在SOAP响应中返回一个文档。