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架构吗?
答案 0 :(得分:69)
SOAP是一种通过HTTP以XML格式发送/接收数据的协议。
典型的WebService将是一些描述如何调用它的WSDL方法。对于如何构建这些内容没有真正的约定,因此您总是需要大量的API文档。
通常情况下(对于ASP.NET):
POST
到 mysite.com/products.asmx/ListAllProducts - 返回XML产品列表POST
到 mysite.com/products.asmx/GetProduct - 在发布的内容中基于SOAP XML返回产品的XML POST
到 mysite.com/products.asmx/UpdateProduct - 在发布的内容中基于SOAP XML更改产品REST更像是构建所有方法的惯例:
GET
- 返回列出所有产品的XML或JSON GET
- 为产品14返回XML或JSON POST
到 mysite.com/products/14 - 将产品14更改为您在HTML表单中发布的内容。DELETE
至 mysite.com/products/14 - 删除产品14 PUT
到 mysite.com/products - 添加新产品所以REST更像你期望的浏览器URL。通过这种方式,它更自然,并且作为惯例更容易理解。所有REST API都以类似的方式工作,因此您不必花费很长时间来学习每个系统的怪癖。
答案 1 :(得分:13)
对我来说,使用RESTful方法实现的服务胜过在其可访问性方面使用SOAP或RPC的服务。在一个相对封闭的系统中,工具可用于生成基于WSDL的存根和连接,这不是非常重要。但是,如果您想创建可供各种客户端访问和使用的服务,那么REST服务的一致性和可以轻松使用它们是一个很大的优势,即您不需要繁重的RPC堆栈,只需发出HTTP请求的能力。
不确定这完全回答了你的问题,但是,正如你所说,如果你有一个基于SOAP工作的系统(并且你控制客户端和服务器),那么我没有看到任何改变的理由。此外,一些服务自然会更多地基于RPC的访问,在这种情况下,SOAP接口将更合适。
就性能而言,如果不使用SOAP,将有效地从客户端和服务器技术堆栈中删除一个或多个层,因此在所有其他条件相同的情况下,暴露RESTful接口的服务将在那里获胜。