JMS/JAXM/JAX RPC/Web服务/ JAX-WS有什么区别?

Nit*_*hin 5 rpc web-services jms jaxm

我正在尝试学习不同的Web服务以了解它们的用途.但是,我很困惑,因为这些术语经常重叠.如果有人能简单地告诉我这些术语之间的区别,我将不胜感激.我遇到了一些来源,例如http://java.sun.com/developer/Books/j2ee/jws/ch07.pdf,但我无法明确区分它们.

djn*_*jna 6

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等标准.