18

尽管这可能与Java Web Services重复出现,但我想知道从哪里开始并继续。过去,我投入了大量时间来寻找从哪里开始,但我无法做到。在阅读有关 Web 服务的页面时,有很多行话和混乱(至少对我而言!)。有很多术语——比如JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB'sWeb Service 和其他我不知道的术语。该用户组能否整合并提供易于理解和遵循的 Java Web 服务的高级概述?我感谢您的好意,并感谢您的帮助。

4

2 回答 2

34

这确实有点像理解 Web 服务的丛林。维基百科页面不错,但仍然缺少一些元素。

我已将此答案标记为社区 wiki,因此请随时更新或更正它。这只是一个基础。

一个臃肿的术语:

首先,Web 服务一词用于指代许多事物。虽然许多人用它来指代基于 SOAP 的 Web 服务,但该术语可用于表示通过 Web 界面提供的任何服务;这是混乱的根源。

实现和设计风格:

  • 基于SOAP —— SOAP 仍然是 Web 服务的事实标准。SOAP 是 HTTP 之上的协议,描述了消息和异常的交换。SOAP 从简单的事物发展到后来添加的所有WS-* 标准的复杂事物。最重要的是:WS-Policy、WS-Security、WS-Addressing、WS-Transaction。另一个重要的规范是大型消息的 MTOM。
  • RESTful——术语RESTful涉及到服务是无状态的并且所有相关信息都作为参数传递的事实。也不是使用像 SOAP 这样的协议,而是使用普通的 HTTP动词,例如Get, Put, Delete, Update
  • 无状态——WS 通常是无状态的。处理的业务有时依赖于用于将请求和响应匹配在一起的所谓的相关标识符(使用 WS-Addressing);这与将会话标识符存储在 cookie 中的想法相同,因为 HTTP 是无状态的。
  • 有状态的——有一些关于有状态 WS 的建议,但我对此了解不多。

实现和技术栈:

  • Servlet -- 实现 WS 的最低级别的方法:您基本上自己解析请求并吐出 HTTP 响应。
  • EJB——从 EJB3 开始,EJB 可以很容易地公开为 Web 服务。当然,需要一个 EJB 容器。
  • Apache Axis——曾经是一个流行的技术栈,现在正在下降。
  • Apache CXF——另一个流行的选择。
  • JBossWS——又一个流行的选择。
  • JAX-WS——来自 Sun 的官方 Web 服务栈,非常好。到目前为止,我知道,它取代了简单地重命名为 JAX-WS 的 JAX-RPC。

相关概念和术语:

  • WSDL——在基于 SOAP 的 WS 的情况下,定义 Web 服务的契约/接口。
  • 契约优先——指技术能够支持预先提供的任何 WSDL 的事实。与将基于 Web 服务的实现生成 WSDL 的实现技术相反,在这种情况下,WSDL 不能总是根据需要进行定制
  • Profile -- To simplify this mess, they've introduced profiles which are groups of related specifications/capabilities that need to be supported for interoperability. The main one is WS-I Basic Profile.
  • UDDI and discovery -- It seems like some people thought the web service would be published in a public register so as to be discoverable by potential consumer. I don't think this vision gained much momentum.
于 2010-05-11T12:41:58.967 回答
0

我所知道的“契约优先”Web 服务的最佳解释是Spring Web 服务模块

于 2010-05-11T12:21:28.587 回答