有什么区别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架构?
SOAP是一种通过HTTP以XML格式发送/接收数据的协议.
典型的WebService将是一些描述如何调用它的WSDL方法.对于如何构建这些内容没有真正的约定,因此您总是需要大量的API文档.
通常这将是(对于ASP.NET):
HTTP POST
to mysite.com/products.asmx/ListAllProducts - 返回XML产品列表
HTTP POST
to mysite.com/products.asmx/GetProduct - 在发布的内容中返回基于SOAP XML的产品XML
HTTP POST
to 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 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的存根和连接,这不是非常重要.但是,如果您想创建可供各种客户端访问和使用的服务,那么REST服务的一致性和可以轻松使用它们是一个很大的优势,即您不需要繁重的RPC堆栈,只需发出HTTP请求的能力.
不确定这完全回答了你的问题,但是,正如你所说,如果你有一个基于SOAP工作的系统(并且你控制客户端和服务器),那么我认为没有任何改变的理由.此外,一些服务自然会更多地基于RPC的访问,在这种情况下,SOAP接口将更合适.
在性能方面,如果您不使用SOAP,将有效地从客户端和服务器技术堆栈中删除一个或多个层,因此在所有其他条件相同的情况下,暴露RESTful接口的服务将在那里获胜.