Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RESTful与基于SOAP的Web服务?_Java_Web Services_Rest_Soap - Fatal编程技术网

Java RESTful与基于SOAP的Web服务?

Java RESTful与基于SOAP的Web服务?,java,web-services,rest,soap,Java,Web Services,Rest,Soap,我最近读了一本关于Web服务的书,书中介绍了基于SOAP的Web服务和RESTful Web服务。 我不确定应该选择哪一个参数,因为它们看起来很相似(甚至从开发人员的角度来看)。以下是我的观点 在soapwebservices中,我们使用webservices生成的WSDL文件,然后基于该文件创建客户端存根 我的理解是,内部存根也将使用HTTP协议 与远程java Web服务通信。对吧? 在这里,HTTP请求/响应主体内将有SOAP消息(XML消息)。因此,在基于REST的Web服务中,HTTP

我最近读了一本关于Web服务的书,书中介绍了基于SOAP的Web服务和RESTful Web服务。 我不确定应该选择哪一个参数,因为它们看起来很相似(甚至从开发人员的角度来看)。以下是我的观点

在soapwebservices中,我们使用webservices生成的WSDL文件,然后基于该文件创建客户端存根

我的理解是,内部存根也将使用HTTP协议 与远程java Web服务通信。对吧?

在这里,HTTP请求/响应主体内将有SOAP消息(XML消息)。因此,在基于REST的Web服务中,HTTP请求本身的行为就像消息一样,需要再深入一层。这里我们使用WADL而不是WSDL。这里我们还可以基于WADL创建存根。因此,除了一些技术上的差异外,所有的东西看起来都差不多 消费者连接到生产者以及请求/响应是如何处理的。因此,根据我的理解,从开发者的角度来看,基于rest和基于soap的Web服务没有太大区别(开发者的工作量几乎相同)

我的理解正确吗


是的,可能是在幕后,可能SOAP比REST Web服务更复杂,因为在SOAP中,消息中包含消息(SOAP消息嵌入在HTTP请求中),但在基于REST的服务中,HTTP请求本身作为消息工作。

没有大的区别(特别是从开发人员的角度来看)


唯一真正的区别是SOAP是用WS-*建议标准化的。在SOAP中,还可以根据标准创建事务和保护消息本身。因此,对于互操作性,SOAP具有基于此的优势。

没有大的区别(特别是从开发人员的角度来看)


唯一真正的区别是SOAP是用WS-*建议标准化的。在SOAP中,还可以根据标准创建事务和保护消息本身。因此,对于互操作性,SOAP基于此具有优势。

这是开发web服务的两种不同方法。。。关于它们的区别(和优势)有很多讨论

SOAPWeb服务远不止您提到的几点,实际上有一个完整的“堆栈”(WS-*),旨在标准化设计和实现此类web服务的方法。这对于某些系统来说很好,但对于其他系统来说“太多”和沉重。幕后HTTP是“传输”消息的一种流行方式,但它不是唯一一种,它们可以通过其他协议实现。在SOAP中,您严重依赖“WSDL”规范,它确实可以用于“生成”服务器和客户机代码。在这些规范中,您非常关注“操作”,即在web服务上要完成的事情

另一方面,在REST上,我们更多地考虑“资源”(由给定的URI描述),然后在上面执行HTTP操作。虽然存在WADL,但规范的概念不如SOAP web服务中的多。事实上,一个很大的区别是,在REST中,您有所谓的“超链接”,其目的是允许客户机-服务器通信“状态”(下一步要去哪里),这在SOAP web服务中不是如此“动态”处理的,人们对此没有太多考虑(但实际上是REST原则核心的一部分)


从开发人员的角度来看,底线是:SOAP确实有很多好的工具(例如:所有EclipseWeb服务工具),但是它往往有点麻烦,并且有很多“代码”。REST开发通常更干净、更简单。我确实认为,这两种解决方案都可以作为你所处理的情况的函数,你不应该“选择一个”。例如,如果您有一个庞大的企业应用程序,其中包含大量的部件和相互依赖性、事务处理等,那么使用WSDL(contracts)的SOAP Web服务可能是一个不错的选择。另一方面,如果您将一个web服务(或API)公开给客户端,而没有许多相互依赖关系,那么REST可能是最有趣的(您可以从我们在过去5年左右所做的更改中看到这一点,所有主要的web API—google、twitter等—现在都公开为REST web服务).

这是开发web服务的两种不同方法。。。关于它们的区别(和优势)有很多讨论

SOAPWeb服务远不止您提到的几点,实际上有一个完整的“堆栈”(WS-*),旨在标准化设计和实现此类web服务的方法。这对于某些系统来说很好,但对于其他系统来说“太多”和沉重。幕后HTTP是“传输”消息的一种流行方式,但它不是唯一一种,它们可以通过其他协议实现。在SOAP中,您严重依赖“WSDL”规范,它确实可以用于“生成”服务器和客户机代码。在这些规范中,您非常关注“操作”,即在web服务上要完成的事情

另一方面,在REST上,我们更多地考虑“资源”(由给定的URI描述),然后在上面执行HTTP操作。虽然存在WADL,但规范的概念不如SOAP web服务中的多。事实上,一个很大的区别是,在REST中,您有所谓的“超链接”,其目的是允许客户机-服务器通信“状态”(下一步要去哪里),这在SOAP web服务中不是如此“动态”处理的,人们对此没有太多考虑(但实际上是REST原则核心的一部分)

从开发人员的角度来看,底线是:SOAP确实有很多好的工具(例如:所有EclipseWeb服务工具),但是它往往有点麻烦,并且有很多“代码”。REST开发通常更干净、更简单。我确实认为,这两种解决方案都可以作为你所处理的情况的函数,你不应该“选择一个”。例如,如果你有一个巨大的e