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
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更多地是构build所有方法的惯例:
- 来自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都以类似的方式工作,所以你不用花很长时间学习每个系统的怪癖。
对我来说,使用RESTful方法实现的服务胜过使用SOAP或RPC的可访问性。 在一个相对封闭的系统中,工具可用于生成基于WSDL的存根和关系,这不是非常重要的。 但是,如果您想要创build可供大量客户访问和使用的服务,那么REST服务的一致性和易于使用是一大优点,也就是说,您不需要繁重的RPC栈,发出HTTP请求的能力。
不知道这完全回答你的问题,但如果,如你所说,你有一个基于SOAP的系统(你控制客户端和服务器),那么我没有看到任何改变的理由。 此外,一些服务自然会更倾向于基于RPC的访问,在这种情况下,SOAP接口将更合适。
就性能而言,如果您不使用SOAP,则可以有效地从客户端和服务器技术堆栈中删除一个或多个层,因此,在其他所有条件相同的情况下,暴露RESTful接口的服务将在此处获胜。