我需要学习Java中的Web服务。里面有什么不同的类型?[关闭]


91

最近,我决定开始学习Java Web服务,并且当我开始在Google中搜索Java Web服务的教程时,我发现有许多类型的Web服务基于XML,基于SOAP以及RESTful Web服务。

另外,我发现有一个基于XML的Web服务的JAX-WS规范,和一个用于创建RESTful Web服务的JAX-RS规范。

Q1)我很困惑,如果有人可以帮助我理解这些不同类型的Web服务之间的区别,那太好了,这样我可以决定首先学习哪个。

Q2)另外,我想深入学习有关在Java中创建不同类型的Web服务的信息。是否有任何教程或资源可以深入了解每种Web服务以及它们之间的比较。

Q3)基于什么情况和条件,我应该决定要创建一个基于XML的Web服务而不是SOAP服务,或者应该使用RESTful服务。


Answers:


142
  1. SOAP Web服务基于标准,并且几乎受每个软件平台的支持:它们高度依赖XML,并支持事务,安全性,异步消息和许多其他问题。这是一个相当大且复杂的标准,但几乎涵盖了所有消息传递情况。另一方面,RESTful服务依赖于HTTP协议和动词(GET,POST,PUT,DELETE)来交换任何格式的消息,最好是JSON和XML。这是一种非常简单而优雅的架构方法。
  2. 像Java世界中的每个主题一样,有多个库可以构建/使用Web服务。在SOAP Side中,您具有JAX-WS标准Apache Axis,在REST中,您可以在其他库中使用RestletsSpring REST工具

对于问题3,本文指出RESTful Services在以下情况下适用:

  • 如果带宽有限
  • 如果您的操作是无状态的:从一次调用到下一次调用不会保留任何信息,并且每个请求都将被独立处理。
  • 如果您的客户端需要缓存。

在以下情况下,SOAP是必经之路:

  • 如果需要异步处理
  • 如果您需要正式合同/接口
  • 在您的服务中,操作是有状态的:例如,您在请求中存储信息/数据,并在下一个请求中使用该存储的数据。

11
+1非常清楚并说明了方案:)
Rajesh Pantula'5

清晰清晰的答案。
克里希纳

+1为好答案... !!!
Shailesh Saxena

好的答案,您能告诉我什么是无状态/有状态操作吗?
Keerthivasan

我编辑了包括那些概念的答案。
卡洛斯·加维迪亚·卡尔德隆

13

Q1)以下是一些需要阅读或在Google上找到的信息:

Java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest中的SOAP和RESTful Web服务之间的主要区别

您要先学什么,这取决于您。我建议您看一下CXF框架。您可以同时构建休息/肥皂服务。

Q2)这是一些关于肥皂的很好的教程(我把它们加为书签):

http://united-coders.com/phillip-steffensen/developing-a-simple-soap-webservice-using-spring-301-and-apache-cxf-226

http://www.benmccann.com/blog/web-services-tutorial-with-apache-cxf/

http://www.mastertheboss.com/web-interfaces/337-apache-cxf-interceptors.html

最好的学习方法不仅仅是阅读教程。但是,您首先要通过基础教程来获得基本概念,以便可以看到自己能够产生(或不产生)某些东西,这会激发您的动力。

因此,SO是学习特定技术(或更多技术)的好方法,人们会提出很多奇怪的问题,而且答案总是很奇怪。但是总的来说,您将学习以其他方式解决问题的方式。也许您不知道那样,也许您自己也没有想到过。

订阅几个对您来说有趣且持久的标签,提出一些好的问题并尝试给出正确的答案,我保证您会随着时间的流逝而学习(如果您坚持的话)。

Q3)您将不得不自己回答这个问题。首先,要确定要构建的内容,毕竟,您需要考虑一些小型项目或其他东西,然后从那里开始。

如果您决定使用CXF作为构建REST / SOAP服务的框架,建议您查阅本书Apache CXF Web Service Development。这太棒了,不难阅读,也不会太大(双赢)。


7

SOAP WS支持远程过程调用(即RPC)和面向消息的中间件(MOM)集成样式。Restful Web Service仅支持RPC集成样式。

SOAP WS与传输协议无关。支持多种协议,例如HTTP(S),消息,TCP,UDP SMTP等。REST是特定于传输协议的。仅支持HTTP或HTTPS协议。

SOAP WS仅允许XML数据格式。您可以定义通过POST隧道传输的操作。重点是访问命名的操作并将应用程序逻辑作为服务公开。REST允许多种数据格式,例如XML,JSON数据,文本,HTML等。可以使用任何浏览器,因为REST方法使用标准的GET,PUT,POST和DELETE Web操作。重点是访问命名资源并将数据作为服务公开。REST具有AJAX支持。它可以使用XMLHttpRequest对象。适用于无状态CRUD(创建,读取,更新和删除)操作。GET-代表()POST-acceptRepresention()放置-storeRepresention()删除-removeRepresention()

无法缓存基于SOAP的读取。可以缓存基于REST的读取。执行和扩展更好。SOAP WS同时支持SSL安全性和WS-security,这增加了一些企业安全性功能,例如将安全性保持到需要的高度,通过中介维护身份,而不仅仅是点对点SSL,使用以下方法保护消息的不同部分: REST安全性仅支持点对点SSL安全性。SSL会加密整个消息,无论所有消息是否敏感。SOAP全面支持短期交易的基于ACID的交易管理和长期交易的基于补偿的交易管理。它还支持跨分布式资源的两阶段提交。REST支持事务,

SOAP内置了成功或重试逻辑,即使通过SOAP中介,也提供了端到端的可靠性。REST没有标准的消息传递系统,并且期望调用该服务的客户端通过重试来处理通信失败。

来源 http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html


> Restful Web Service仅支持RPC集成样式。RPC说,REST不是RPC,“定义一些可以做某事的方法”,而REST说,“定义一些资源,它们将拥有这些方法”。peej.co.uk/articles/rest.html
urmalp 2014年

0

如果您的应用程序经常使用http协议,那么REST最好,因为它的重量轻,并且知道您的应用程序仅使用http协议选择SOAP并不是很好,因为它很繁琐,最好根据我们使用的协议来选择Web服务在我们的应用程序中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.