为什么会使用REST而不是基于SOAP的服务?

今天在REST上参加了一个有趣的演示,然而,我想不出有什么原因(也没有人提出过)为什么REST在使用和实现方面比基于SOAP的服务栈更好或更简单。

什么是“真实世界”中的任何人使用REST而不是基于SOAP的服务的一些原因?


较少的开销(没有SOAP信封来包装每个呼叫)

减少重复(HTTP已经表示像DELETE,PUT,GET等那样必须在SOAP信封中表示的操作)。

更加标准化 - HTTP操作很好理解并且运行一致。 一些SOAP实现可能会非常挑剔。

更人性化的可读性和可测试性(更难以通过浏览器测试SOAP)。

不需要使用XML(你也可以不用SOAP),但是因为你已经在解析信封了,所以它没有什么意义。

图书馆使SOAP(一种)变得简单。 但正如我所指出的那样,你正在抽象出很多冗余。 理论上讲,SOAP可以超越其他传输,以避免在层上做类似的事情,但实际上几乎所有的SOAP工作都是通过HTTP进行的。


REST式服务比基于SOAP(常规)服务要简单得多。 原因在于REST基于正常的HTTP请求,它使得可以根据正在进行的请求类型(GET = retrive,POST = write,DELETE = remove等等)来推断意图,并且是完全无状态的。 另一方面,你可能会认为它不太灵活,因为它消除了包含请求上下文的消息信封的概念。

根据我的经验,SOAP一直是企业内服务的首选,REST一直被作为公开API提供服务的首选。

使用.NET框架中的WCF等工具,将服务作为REST或SOAP实现是非常简单的。

一些相关的阅读:

  • 亚马逊Web服务博客:REST vs SOAP
  • 敢于经常写关于REST的奥巴桑乔

  • 我假定当你说“Web服务”时,你的意思是SOAP和WS- *标准。 (否则,我可以争辩说REST服务是“Web服务”。)

    规范的论点是REST服务与网络设计(即HTTP和相关基础设施的设计)更接近。 因此,使用REST服务将与现有的网络工具和技术更加兼容。

    当然,一旦你深入细节,你会发现这两种方法在不同场景下都有优势。 这是你感兴趣的具体细节吗?

    链接地址: http://www.djcxy.com/p/71335.html

    上一篇: Why would one use REST instead of SOAP based services?

    下一篇: What are REST web services?