繁体   English   中英

学习Java Web服务需要学习什么?

[英]What to learn to do Java web services?

我最后一次使用Java Servlets和JSP进行Java Web开发。 我从未真正使用过EJB。 我记得我在开发Web服务\\动态网站方面的经验,这些网站的速度很慢(在开发时间方面)和痛苦(在易于部署方面)。

如今大多数企业使用什么来开发基于Java的网站? 您是否使用AXIS或其他框架来进行Web服务? 您是否使用JSP或其他技术作为前端?

当前的标准是使用JAX-WS(用于SOAP Web服务)和JAX-RS(用于RESTful Web服务)。

这些是具有多个实现的标准。 JAX-WS有Metro,CXF等.JAX-RS有Jersey,RESTEasy等。

我会按顺序学习这些

  • 休息
  • XSD
  • WSDL
  • JAX- *
  • 备择方案? (Thrift,Avro,协议缓冲区等)

从2004年开始,工具支持以及易于开发也已经走过了漫长的道路。随着对轻量级框架的关注越来越多(部分归功于Spring),在Java中实现Web服务变得更加容易。

在决定实施Web服务之前,您需要回答一个简单的问题。 肥皂或REST.I建议你形成自己的观点,但这是我能想到的,在我的头顶。

SOAP的优点:

  1. 出色的工具支持。
  2. 最流行的技术。
  3. JAX-WS标准非常成熟。
  4. 易于开发。 (将POJO转换为Web服务的注释支持)。
  5. 示例METRO,Axis ......

肥皂的缺点。 (问罗伊菲尔丁......)

  1. 膨胀的协议。
  2. 协议的定制是可能的,但很复杂。 (使用wsdl绑定等..)
  3. 客户端需要复杂的库来序列化和反序列化soap消息。
  4. 像Android这样的平台本身不支持SOAP。

在臃肿的Web服务协议罗伊Fieldings咆哮后, web服务 ,他长出了常识的说法使用互联网的SOA的背部骨,有对REST一个平缓的动作。 谷歌和亚马逊等更敏捷的公司采用了REST,并且正在支持基于REST的Web服务。

REST的优点:

  1. 非常轻量级的协议
  2. 主要基于HTTP,因此大多数客户都知道如何使用。 (但REST不必是HTTP)。
  3. 错误管理和像Cache这样的想法基于成熟的Internet技术。
  4. Java具有出色的REST库。 Sun自己的Jersey是一个优秀的Jax-RS参考实现,有Restlet,Jboss Rest Framework和Spring REST(虽然不符合JAX-RS)。

REST的缺点:

  1. 相对较差的工具支持。
  2. REST中的安全性实现有点困难。
  3. 面向资源的设计和实现对于一些传统的程序员和架构师来说可能是新的。

我喜欢泽西岛的REST。 它具有惊人的框架,出色的支持,出色的文档,良好的测试支持库。

无论哪种方式,我都会下载Netbeans IDE并使用它来开发基于REST或SOAP的Web服务的骨架代码。 Netbeans让它很容易上手。 一旦熟悉了代码,就可以切换到自己喜欢的IDE。 (顺便说一句,除了原型设计之外我不会使用Netbeans,它会尝试做很多事情并且大部分都做得很糟糕......无论如何我的意见)

我的偏好是Apache Avro(在@ rodrigoap的回答中提到)。 我现在工作的地方,我们有一个面向服务的架构,并使用Avro进行内部服务。 我们之所以选择它,是因为它快速,稳定,可以运行http(很容易通过Tomcat服务),可以自动生成客户端类,并可以使用多种语言。 客户端类的生成对我们来说是一个很大的特性,因为它意味着我们只处理Java对象并让Avro处理序列化并通过网络发送内容。 不必处理许多不同的网址也很好。 Avro Web服务由单个servlet托管,Avro负责如何将每个请求映射到实现类中的相应方法。

为了再次参考@ rodrigoap的答案,他在Avro的列表中放置了其他几个选项,对于外部访问的Web服务,我同意这些是更好的选择,因为您的外部服务用户可能对使用不感兴趣Avro只是因为你可能已经选择了它。

如果您对一个示例感兴趣,这里有一个示例Avro Web服务项目,可以查看它是如何工作的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM