我需要学习Java中的Web服务。 它有哪些不同的类型?

最近,我决定开始学习java web服务,当我开始在google中搜索java web服务的教程时,我发现有很多类型的基于XML的Web服务,基于SOAP,还有RESTful webservices。

此外,我发现有一个基于xml的Web服务的JAX-WS规范,以及用于创建RESTful Web服务的JAX-RS规范。

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

Q2)另外,我想深入学习如何在java中创建不同类型的Web服务。 是否有任何教程或资源可以提供对每种Web服务的洞察以及它们之间的比较。

Q3)根据我应该决定创建基于XML的Web服务而不是SOAP服务的场景和条件,或者我应该使用RESTful服务。

Rajesh Pantula asked 2019-08-13T16:31:08Z
4个解决方案
141 votes
  1. SOAP Web服务是基于标准的,几乎每个软件平台都支持它们:它们严重依赖XML并支持事务,安全性,异步消息和许多其他问题。 这是一个非常大而复杂的标准,但几乎涵盖了每种消息传递情况。 另一方面,RESTful服务依赖HTTP协议和动词(GET,POST,PUT,DELETE)来交换任何格式的消息,最好是JSON和XML。 这是一种非常简单和优雅的建筑方法。
  2. 与Java World中的每个主题一样,有几个库可用于构建/使用Web服务。 在SOAP方面,您拥有JAX-WS标准和Apache Axis,在REST中,您可以在其他库中使用Restlets或Spring REST Facilities。

对于问题3,本文指出RESTful服务在这种情况下是合适的:

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

虽然SOAP是以下方式:

  • 如果需要异步处理
  • 如果您需要正式的合同/接口
  • 在您的服务操作中是有状态的:例如,您将信息/数据存储在请求中,并在下一个请求中使用该存储的数据。
Carlos Gavidia answered 2019-08-13T16:32:33Z
13 votes

Q1)以下是几个要阅读或谷歌更多的东西:

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

它取决于你首先想要学习什么。 我建议你看一下CXF框架。 您可以构建rest / soap服务。

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]

最好的学习方法不仅仅是阅读教程。 但是你首先要通过教程来获得一个基本的想法,这样你就可以看到你能够产生某种东西(或者不能产生某种东西),这会激发你的积极性。

这是学习特定技术(或更多)的好方法,人们会提出许多奇怪的问题,而且有更奇怪的答案。 但总体而言,您将了解以其他方式解决问题的方法。 也许你不知道那种方式,也许你自己也无法想到它。

订阅几个你感兴趣的标签并坚持不懈,提出好问题并尝试给出好的答案,我向你保证,随着时间的推移,你会学到这一点(如果你坚持不懈)。

Q3)你必须自己回答这个问题。 首先,通过决定你要构建什么,毕竟你需要考虑一些迷你项目或其他东西并从那里开始。

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

ant answered 2019-08-13T16:34:20Z
7 votes

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()          PUT - storeRepresention()          DELETE - removeRepresention()

无法缓存基于SOAP的读取。 可以缓存基于REST的读取。 更好地执行和扩展。SOAP WS支持SSL安全性和WS安全性,它增加了一些企业安全功能,例如维护安全性直到需要它,通过中介维护身份,而不仅仅是点对点SSL,保护消息的不同部分 不同的安全算法等REST只支持点对点SSL安全性。 SSL加密整个消息,无论是否所有消息都是敏感的。SOAP为短期事务的基于ACID的事务管理和长期事务的基于补偿的事务管理提供全面支持。 它还支持跨分布式资源的两阶段提交。 REST支持事务,但它既不符合ACID,也不能跨分布式事务资源提供两阶段提交,因为它受HTTP协议的限制。

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

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

murali answered 2019-08-13T16:35:28Z
0 votes

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

feel good and programming answered 2019-08-13T16:35:54Z
translate from https://stackoverflow.com:/questions/10557514/i-need-to-learn-web-services-in-java-what-are-the-different-types-in-it