确实,了解Web服务有点困难。在维基百科页面是体面的,但还缺少一些元素。
我已将此答案标记为社区Wiki,请随时进行更新或更正。这只是一个基础。
term肿的术语:
首先,术语 Web服务
用于指许多事物。尽管许多人使用它来指代基于SOAP的Web服务,但该术语可以用来表示通过Web界面提供的任何服务;这是造成混乱的根源。
实施和设计风格:
- 基于 SOAP的-SOAP仍然是Web服务的实际标准。SOAP是HTTP之上的协议,用于描述消息和异常的交换。通过后来添加的所有WS- *标准,SOAP从简单的东西发展到了非常复杂的东西。最重要的是:WS-策略,WS-安全性,WS-寻址,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-RPC,后者已简单地重命名为JAX-WS。
相关概念和行话:
- WSDL- 如果是基于SOAP的WS,则定义Web服务的协定/接口。
- 合同优先 -指的是一项技术能够支持任何预先提供的WSDL的事实。与将基于Web服务的实现生成WSDL的实现技术相反,在这种情况下,不能总是根据需要自定义WSDL
- 概要文件 -为了简化这种混乱情况,他们引入了概要文件,这些文件是需要互操作性支持的一组相关规范/功能。主要的是WS-I基本概要文件。
- UDDI和发现 -似乎有些人认为Web服务将在公共寄存器中发布,以便潜在的消费者可以发现它。我认为这一愿景没有取得太大进展。



