我最近通过webservices一书,其中涉及基于SOAP的Web服务和RESTful Web服务。 我不确定我应该选择哪一个参数,因为它们看起来相似(甚至从开发人员的角度来看)。以下是我的观点
在SOAP webservices中,我们使用从webservices生成的WSDL文件,然后基于此创建客户端存根。
我的理解是内部存根也将使用HTTP协议 与远程java webservice通信。正确?
此处HTTP请求/响应正文中将包含SOAP消息(XML消息)。因此,在基于REST的Web服务中,要再向下钻取一层,HTTP请求本身就像消息一样。这里我们有WADL而不是WSDL。在这里我们也可以基于WADL创建存根。因此,除了一些技术差异外,每件事情看起来或多或少相同 消费者连接到生产者以及如何处理请求/响应。根据我的理解,从开发人员的角度来看,基于w / rest和基于SOAP的Web服务没有太大区别(开发人员的工作量几乎相同)。
我的理解是否正确?
是可能在幕后,可能SOAP比SOAP中的REST webservices becoz更复杂,消息内部有消息(SOAP消息嵌入在HTTP请求中),但在基于REST的服务中,HTTP请求本身作为消息。
答案 0 :(得分:3)
SOAP和REST旨在解决一组相同的问题,即以最简单的方式促进异构应用程序之间的交互。现在,是否选择REST或SOAP不仅取决于开发工作量。您还应该考虑以下一些因素,
SOAP是由标准驱动的,因此在使用它们时会有更多的限制。因此,如果您使用案例很简单(那是非常主观的),请选择REST。
答案 1 :(得分:1)
这是开发Web服务的两种不同方式......关于它们的差异(和优势)有很多讨论。
SOAP Web服务远不止您所指的那些点,实际上有一个完整的“堆栈”(WS- *),旨在标准化设计和实现此类Web服务的方法。这对某些系统来说很不错,但对于其他系统而言,它“太多”而且很重。在幕后,HTTP是一种流行的“传输”消息的方式,但它不是唯一的,它们可以通过其他协议实现。在SOAP中,您严重依赖于“WSDL”规范,该规范确实可用于“生成”服务器和客户端代码。在这些规范中,您非常关注“操作”,即在Web服务上要做的事情。
另一方面,在REST上我们更多地考虑“资源”(由给定的URI描述),然后通过它我们执行HTTP操作。虽然WADL存在,但在SOAP Web服务中没有那么多规范的概念。实际上一个很大的区别,人们并没有多想(但实际上是REST原则的核心部分),在REST中你有所谓的“超链接”,其目的是允许客户端 - 服务器进行通信“状态”(接下来要去哪里),这在SOAP Web服务中不是那么“动态”处理。
总的来说,对于开发人员而言:SOAP确实有很多很好的工具(例如:所有Eclipse Web服务工具),但它往往有点麻烦和很多“代码”。 REST开发通常更简洁。我认为这两种解决方案都可以用作你正在处理的情况的函数,你不应该“选择一个”。例如,如果你有一个巨大的企业应用程序,有很多部件和相互依赖关系,事务处理等,可能是带有WSDL(契约)的SOAP Web服务。另一方面,如果您向客户端公开一个Web服务(或API),没有很多相互依赖性,那么REST可能是最有趣的(您可以在我们在过去5年左右所获得的更改中看到这一点,其中所有主要Web APIS - 谷歌,推特等,现在都公开为REST网络服务。)
答案 2 :(得分:0)
没有太大的差异(特别是来自开发人员的观点)。
唯一真正的区别是SOAP是使用WS- *建议标准化的。同样在SOAP中,有可能创建事务并根据标准保护消息本身。因此,对于互操作性,SOAP具有基于此的优势。