当前位置:  开发笔记 > 编程语言 > 正文

REST和WebServices之间的区别

如何解决《REST和WebServices之间的区别》经验,为你挑选了2个好方法。

有什么区别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架构?



1> Keith..:

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

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

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

HTTP POSTto mysite.com/products.asmx/ListAllProducts - 返回XML产品列表

HTTP POSTto mysite.com/products.asmx/GetProduct - 在发布的内容中返回基于SOAP XML的产品XML

HTTP POSTto mysite.com/products.asmx/UpdateProduct - 在发布的内容中基于SOAP XML更改产品

REST更像是构建所有方法的约定:

GET来自mysite.com/products的 HTTP - 返回列出所有产品的XML或JSON

GET来自mysite.com/products/14的 HTTP - 返回产品14的XML或JSON

HTTP POSTmysite.com/products/14 - 将产品14更改为您在HTML表单中发布的内容.

HTTP DELETEmysite.com/products/14 - 删除产品14

HTTP PUTmysite.com/products - 添加了一个新产品

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


关于DELETE和PUT,由于REST主要用于相互通信的机器,因此无法从浏览器访问这些动词也许并不重要.我认为将重点放在REST动词上是非常重要的,而SOAP将实际命令放入请求中,而不是请求的类型.
@ShiDoiSi已经触及了这一点,但我觉得这对新人来说不够明确.需要明确的是,REST是客户端 - 服务器Web应用程序的通用解决方案,通过浏览器使用Web应用程序的用户可以与RESTful服务进行交互.他们不能直接做到这一点.它通常通过将JavaScript函数绑定到某个HTML元素来完成,然后JavaScript依次调用RESTful服务(即:PUT,DELETE等).这通常使用jQuery完成,但肯定有很多其他方法可以做到这一点.

2> Andy..:

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

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

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

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有