为什么会使用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服务”时,你的意思是SOAP和WS- *标准。 (否则,我可以争辩说REST服务是“Web服务”。)
规范的论点是REST服务与网络设计(即HTTP和相关基础设施的设计)更接近。 因此,使用REST服务将与现有的网络工具和技术更加兼容。
当然,一旦你深入细节,你会发现这两种方法在不同场景下都有优势。 这是你感兴趣的具体细节吗?
链接地址: http://www.djcxy.com/p/71335.html