REST和Web服务之间的区别

时间:2009-09-18 08:08:16

标签: asp.net web-services rest soap

REST和WebService(SOAP)有什么区别,我查看了facebook api,他们使用HTTP头和一些参数(可能是xml或非)并在xml中返回结果,否则SOAP完全相同,HTTP头+ xml参数并返回标题+ xml。

REST还需要一些经过身份验证的令牌,否则SOAP会使用http会话,这与用于身份验证和其他信息的令牌完全相同。我只能看到SOAP是REST的高级版本?

还是有其他性能考虑因素吗?阅读REST只是谈论非常高级别的客户端服务器通信,但即使SOAP也完全相同。任何人都可以指出我可以定义REST和SOAP的正确边界。

我们在.net中透明地使用了很多SOAP,但是我只是想知道是否真的值得注意REST,目前一切都运行得非常顺利。

我知道REST是一种架构而SOAP是一种协议,但我的问题是详细的,目前SOAP的ASP.NET WebService实现有REST架构吗?

2 个答案:

答案 0 :(得分:69)

SOAP是一种通过HTTP以XML格式发送/接收数据的协议。

典型的WebService将是一些描述如何调用它的WSDL方法。对于如何构建这些内容没有真正的约定,因此您总是需要大量的API文档。

通常情况下(对于ASP.NET):

  • HTTP POST mysite.com/products.asmx/ListAllProducts - 返回XML产品列表
  • HTTP POST mysite.com/products.asmx/GetProduct - 在发布的内容中基于SOAP XML返回产品的XML
  • HTTP POST mysite.com/products.asmx/UpdateProduct - 在发布的内容中基于SOAP XML更改产品

REST更像是构建所有方法的惯例:

    来自 mysite.com/products
  • HTTP GET - 返回列出所有产品的XML或JSON
  • 来自 mysite.com/products/14
  • HTTP GET - 为产品14返回XML或JSON
  • HTTP POST mysite.com/products/14 - 将产品14更改为您在HTML表单中发布的内容。
  • HTTP DELETE mysite.com/products/14 - 删除产品14
  • HTTP PUT mysite.com/products - 添加新产品

所以REST更像你期望的浏览器URL。通过这种方式,它更自然,并且作为惯例更容易理解。所有REST API都以类似的方式工作,因此您不必花费很长时间来学习每个系统的怪癖。

答案 1 :(得分:13)

对我来说,使用RESTful方法实现的服务胜过在其可访问性方面使用SOAP或RPC的服务。在一个相对封闭的系统中,工具可用于生成基于WSDL的存根和连接,这不是非常重要。但是,如果您想创建可供各种客户端访问和使用的服务,那么REST服务的一致性和可以轻松使用它们是一个很大的优势,即您不需要繁重的RPC堆栈,只需发出HTTP请求的能力。

不确定这完全回答了你的问题,但是,正如你所说,如果你有一个基于SOAP工作的系统(并且你控制客户端和服务器),那么我没有看到任何改变的理由。此外,一些服务自然会更多地基于RPC的访问,在这种情况下,SOAP接口将更合适。

就性能而言,如果不使用SOAP,将有效地从客户端和服务器技术堆栈中删除一个或多个层,因此在所有其他条件相同的情况下,暴露RESTful接口的服务将在那里获胜。