REST是更好的Web服务方法还是SOAP?或者它们是针对不同问题的不同工具?或者这是一个微妙的问题——也就是说,一个人在某些领域比另一个人稍微好一点,等等?
我尤其希望了解这些概念以及它们与php世界以及现代高端网络应用程序的关系。
REST是更好的Web服务方法还是SOAP?或者它们是针对不同问题的不同工具?或者这是一个微妙的问题——也就是说,一个人在某些领域比另一个人稍微好一点,等等?
我尤其希望了解这些概念以及它们与php世界以及现代高端网络应用程序的关系。
当前回答
请收听本期播客找出答案。如果你想在不听的情况下知道答案,那么好吧,这是REST。但我真的建议你听。
其他回答
请收听本期播客找出答案。如果你想在不听的情况下知道答案,那么好吧,这是REST。但我真的建议你听。
这是微妙的。
如果您需要让其他系统与您的服务进行接口,那么由于您使用契约、WSDL和SOAP标准所拥有的“验证”层,许多客户端将更乐于使用SOAP。
对于日常系统对系统的调用,我认为SOAP是很多不必要的开销,而简单的HTML调用就可以了。
我也看到了,我想, 它们是针对不同问题的不同工具。
简单对象访问协议(SOAP)标准,一种定义消息体系结构和消息格式的XML语言,被Web服务使用,它包含对操作的描述。WSDL是一种基于xml的语言,用于描述Web服务以及如何访问它们。将运行在SMTP,HTTP,FTP等。需要中间件支持,定义良好的机制来定义服务,如WSDL+XSD, WS-Policy SOAP将返回基于XML的数据,SOAP为安全性和可靠性提供标准
具象状态传输(RESTful) web服务。它们是第二代Web服务。基于rest的web服务通过HTTP而不是基于soap的服务进行通信,并且不需要XML消息或WSDL服务api定义。对于REST,不需要中间件,只需要HTTP支持。WADL标准,REST可以返回XML,纯文本,JSON, HTML等
对于许多类型的客户端来说,使用基于rest的web服务更容易,同时使服务器端能够演进和扩展。客户端可以选择使用服务的部分或全部方面,并将其与其他基于web的服务混合。
REST使用标准HTTP,因此创建客户端和开发api更简单 REST允许许多不同的数据格式,如XML、纯文本、JSON、HTML,而SOAP只允许XML。 REST具有更好的性能和可伸缩性。 休息并且可以缓存,而SOAP不能 内置错误处理,SOAP没有错误处理 REST在PDA和其他移动设备上特别有用。
REST是一种容易与现有网站集成的服务。
SOAP有一组协议,其中提供了安全性和可靠性标准,并与其他符合WS的客户机和服务器进行互操作。 SOAP Web服务(如JAX-WS)在处理异步处理和调用方面很有用。
对于复杂的API, SOAP会更有用。
一个老问题,但今天仍然有意义....因为许多企业领域的开发人员仍在使用它。
我的工作包括设计和开发IoT(物联网)解决方案。其中包括为与云通信的小型嵌入式设备开发代码。
很明显,REST现在已经被广泛接受和有用,而且几乎是web的事实上的标准,甚至微软在整个Azure中都包含了REST支持。如果我需要依赖SOAP,我就不能做我需要做的事情,因为对于小型嵌入式设备来说,它太大、太笨重、太烦人了。
REST简单、干净、小巧。使其成为小型嵌入式设备的理想选择。当我与一个web开发人员一起工作时,他给我发送wsdl时,我总是尖叫。因为我将不得不开始一场教育活动,告诉他们为什么这行不通,为什么他们必须学习REST。
我也在关注同样的问题。在我看来,REST实际上是快速和简单的,适用于轻量级调用和响应,并且非常适合调试(还有什么比将URL注入浏览器并查看响应更好的呢)。
然而,REST的不足之处在于它不是一个标准(尽管它由标准组成)。大多数编程库都有一种检查WSDL以自动生成消费基于SOAP的服务所需的客户端代码的方法。到目前为止,使用基于REST的web服务似乎是一种更特别的方法,即编写接口来匹配可能的调用。手动发起http请求,然后解析响应。这本身就是危险的。
SOAP的美妙之处在于,一旦WSDL被发布,那么业务就可以构造它们的逻辑主干,从而设置契约,对接口的任何更改都会改变WSDL。没有任何回旋的余地。您可以根据该WSDL验证所有请求。然而,由于WSDL没有正确地描述REST服务,因此您没有定义的方式来就通信的接口达成一致。
从商业的角度来看,这似乎让沟通变得容易解释和改变,这似乎是个坏主意。
这个线程中最上面的“答案”似乎说SOAP代表简单面向对象访问协议,然而在wiki中,O意味着对象不是面向对象的。它们是不同的东西。
我知道这篇文章很老了,但我认为我应该用我自己的发现来回应。