REST和WebServices之间的区别

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

REST还需要一些authentication令牌,其中SOAP使用http会话,该会话与用于authentication和其他信息的令牌完全相同。 我只能看到SOAP是REST的一些高级版本吗?

还是有其他的性能考虑? 阅读REST只是谈论客户端服务器通信的非常高的水平,但即使是SOAP也完全一样。 任何人都可以指出它在哪里可以定义正确的REST和SOAP的边界。

我们在.net中透明地使用了大量的SOAP,但是我只想知道是否真的值得向REST支付额外的费用,目前所有的一切都运行得非常顺利。

我知道REST是一个体系结构,SOAP是一个协议,但我的问题是详细的说,目前的SOAP WebService的SOAP实现有REST架构吗?

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

一个典型的WebService将是一些描述如何调用它的WSDL方法。 这些应该如何构build没有真正的约定,所以你总是需要大量的API文档。

通常这将是类似于(对于ASP.NET):

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

REST更多地是构build所有方法的惯例:

  • 来自mysite.com/products的 HTTP GET – 返回列出所有产品的XML或JSON
  • 来自mysite.com/products/14的 HTTP GET – 为产品14返回XML或JSON
  • HTTP POSTmysite.com/products/14 – 将产品14更改为您在HTML表单中发布的内容。
  • HTTP DELETEmysite.com/products/14 – 删除产品14
  • HTTP PUTmysite.com/products – 增加了一个新的产品

因此REST的工作方式与您期望的浏览器url更相似。 这样就更自然了,因为一个约定更容易理解。 所有的REST API都以类似的方式工作,所以你不用花很长时间学习每个系统的怪癖。

对我来说,使用RESTful方法实现的服务胜过使用SOAP或RPC的可访问性。 在一个相对封闭的系统中,工具可用于生成基于WSDL的存根和关系,这不是非常重要的。 但是,如果您想要创build可供大量客户访问和使用的服务,那么REST服务的一致性和易于使用是一大优点,也就是说,您不需要繁重的RPC栈,发出HTTP请求的能力。

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

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