我需要学习Java中的Web服务。 它有什么不同的types?

最近,我决定开始学习关于java web服务的知识,当我开始在googlesearch一个关于java web服务的教程时,我发现有很多types的基于XML的Web服务,基于SOAP和REST风格的Web服务。

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

Q1)我感到困惑,如果有人能帮助我理解这些不同types的Web服务之间的区别,那么这将是非常好的,所以我可以决定先学哪一个。

Q2)另外,我想深入学习在java中创build不同types的web服务。 有任何教程或资源,可以给每种Web服务的洞察力和他们之间的比较。

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

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

在问题3中, 本文指出RESTful服务适用于这种情况:

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

尽pipe在以下情况下SOAP是一种方式:

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

Q1)这里有几件事要阅读或谷歌更多:

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

这取决于你想要先学什么。 我build议你看看CXF框架。 你可以build立rest/肥皂服务。

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)你将不得不自己回答这个问题。 首先,通过决定要构build什么,毕竟你需要考虑一些小型项目或者其他的东西,然后从那里拿走。

如果您决定使用CXF作为构buildREST / SOAP服务的框架,我build议您查阅本书“ Apache CXF Web Service Development 。 这是太棒了,不难看出,也不是太大(双赢)。

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

SOAP WS是传输协议中立的。 支持HTTP(S),Messaging,TCP,UDP SMTP等多种协议。REST是传输协议特定的。 仅支持HTTP或HTTPS协议。

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

基于SOAP的读取不能被caching。 基于REST的读取可以被caching。 执行和缩放更好。 SOAP WS同时支持SSL安全性和WS安全性,它增加了一些企业安全function,例如将安全性保持在所需的位置,通过中介维护身份,而不仅仅指向点SSL,用消息的不同部分不同的安全algorithm等。REST仅支持点对点SSL安全性。 SSLencryption整个消息,无论是否敏感。 SOAP全面支持短期交易的基于ACID的交易pipe理和长期交易的基于报酬的交易pipe理。 它还支持跨分布式资源的两阶段提交。 REST支持事务,但它既不符合ACID标准,也不能提供跨分布式事务资源的两阶段提交,因为它受HTTP协议的限制。

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

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

如果您的应用程序经常使用http协议,那么REST是最好的,因为它的重量轻,而且知道您的应用程序只使用http协议selectSOAP并不是那么好,因为它很重,根据我们使用的协议在我们的应用程序