【发布时间】:2011-05-20 08:13:42
【问题描述】:
我正在尝试学习不同的网络服务以了解它们的用途。但是,我很困惑,因为这些术语经常重叠。如果有人能简要地告诉我这些术语之间有什么区别,我将不胜感激。我遇到了一些来源,例如http://java.sun.com/developer/Books/j2ee/jws/ch07.pdf,但是我无法清楚地区分它们。
【问题讨论】:
标签: web-services jms rpc jaxm
我正在尝试学习不同的网络服务以了解它们的用途。但是,我很困惑,因为这些术语经常重叠。如果有人能简要地告诉我这些术语之间有什么区别,我将不胜感激。我遇到了一些来源,例如http://java.sun.com/developer/Books/j2ee/jws/ch07.pdf,但是我无法清楚地区分它们。
【问题讨论】:
标签: web-services jms rpc jaxm
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 等标准的关系。
【讨论】: