我正在尝试学习不同的 Web 服务以了解它们的用途。但是,我很困惑,因为这些术语经常重叠。如果有人能简要地告诉我这些术语之间有什么区别,我将不胜感激。我遇到了一些来源,例如http://java.sun.com/developer/Books/j2ee/jws/ch07.pdf,但是我无法清楚地区分它们。
1 回答
Web 服务:一种符合标准的可调用服务,可以用 Java 编写,也可以用其他技术编写,例如.NET
. 关键是有一种描述服务的标准语言 WSDL。WSDL 包含有关传输、协议、服务运行位置、可用操作和来回流动的有效负载的信息。
您将遇到的大多数 Web 服务通过 HTTP 协议使用 SOAP 消息(一种特定的 XML 格式),因此 WSDL 将包含调用服务的 URL。更一般地,其他消息格式和协议是可能的——我们稍后会回到那个点。
假设您拥有希望从 Java 程序调用的服务的 WSDL,那么原则上您可以编写 Java 来格式化合适的 XML 有效负载并将消息发送到 HTTP 连接。完全可行,但非常繁琐,几乎所有代码都是样板代码,可以从 WSDL 生成。
同样,如果您想在 Java 中创建 Web 服务,那么您可以从编写 WSDL 开始,但是再次有很多标准样板代码用于读取 HTTP、解析 XML 等。因此,在这两种情况下,您都可以从标准 Java API 中受益所有这些工作。已经有几个这样的 API,JAX/RPC 和 JAX/WS 就是这样的两个,而 JAX/WS 是更新的和更容易使用的。
另一种集成技术是使用消息传递,有许多供应商提供消息队列产品,因此完全可以将消息从(比如说)Java 发送到(比如说)C++,您只需要就消息格式达成一致(没有标准的 WSDL那里告诉你)。
JMS 是一种 Java 编程 API,它提供了关于特定供应商的消息传递产品的抽象。如果使用 Java,JMS 为您提供跨消息传递产品的可移植性。Java EE 标准要求 Java EE App Server 供应商提供消息传递基础设施——我相信随着业务系统变得越来越大,他们几乎总是需要一些异步消息传递设施。
将类似 WSDL 的方法应用于消息传递有多种可能性。例如,可以使用 SOAP/JMS 而不是 SOAP/HTTP 编写 Web 服务。JAXM 是该领域的新兴 API。坦率地说,我不清楚它与 SOAP/JMS 和 WS-ReliableMessaging 等标准的关系。