Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMS与Webservices_Java_Web Services_Jms - Fatal编程技术网

Java JMS与Webservices

Java JMS与Webservices,java,web-services,jms,Java,Web Services,Jms,与Web服务相比,JMS的最大优势是什么?反之亦然 (Web服务是否臃肿?JMS是否更适合提供接口?经erickson更正后编辑: JMS要求您拥有一个JMS提供程序、一个实现MessageListener接口以处理消息的Java类,以及一个知道如何连接到JMS队列的客户机。JMS意味着异步处理——客户端发送消息,而不必等待响应。JMS可以点到点队列方式或发布/订阅方式使用 “服务”是一个流动的术语。我将服务视为一个存在于网络上的组件,并宣传一份合同:“如果您发送X,我将为您执行此任务并返回Y。

与Web服务相比,JMS的最大优势是什么?反之亦然


(Web服务是否臃肿?JMS是否更适合提供接口?

经erickson更正后编辑:

JMS要求您拥有一个JMS提供程序、一个实现MessageListener接口以处理消息的Java类,以及一个知道如何连接到JMS队列的客户机。JMS意味着异步处理——客户端发送消息,而不必等待响应。JMS可以点到点队列方式或发布/订阅方式使用

“服务”是一个流动的术语。我将服务视为一个存在于网络上的组件,并宣传一份合同:“如果您发送X,我将为您执行此任务并返回Y。”

分布式组件已经存在很长时间了。每个人都使用不同的协议(例如COM、Corba、RMI等)进行通信,并以不同的方式公开其契约

Web服务是分布式服务的最新趋势。他们使用HTTP作为协议,可以与任何可以通过TCP/IP连接并发出HTTP请求的客户端进行互操作

您可以使用SOAP或RPC-XML或REST或“契约优先”样式,但分布式组件使用HTTP作为其协议的基本思想仍然存在

如果您接受所有这些,web服务通常是同步调用。它们不必过于臃肿,但您可以用任何样式或语言编写糟糕的组件


您可以通过首先设计请求和响应来开始设计任何分布式组件。考虑到这些,您可以根据希望拥有的客户机类型以及通信是同步还是异步来选择JMS或web服务。

与我所做的不同之处在于: JMS—我与JMS提供者绑定—但是我可以选择实现类型(发布/订阅,点对点) Web服务-更易于处理/构建-但是它更多的是框之间的直接通信。有很多工具可以用来进行开发,还有一个干净的接口(WSDL),所以实现者和调用者可以是独立的


用哪一个?取决于问题是什么。

我认为最大的区别在于JMS是面向消息的,而不是面向RPC的。开箱即用,大多数JMS提供程序支持执行重试、防止重复和支持事务的高级协议


许多应用程序不需要这些功能。但是在需要它们的地方,在RPC机制之上自己构建它们是复杂、昂贵且容易出错的。

基于消息的系统,包括JMS,提供了与另一端“按时间顺序解耦”的能力。可以在另一端不可用的情况下发送消息


所有其他常见的A2A方法都要求合作伙伴能够立即做出响应,要求他们能够处理峰值负载,几乎没有能力分散处理。

会将此作为评论添加到dyffymo的帖子中,但还没有代表

引用你的回答:

“Web服务是分布式服务的最新趋势。它们使用HTTP作为协议,可以与任何可以通过TCP/IP连接并发出HTTP请求的客户端进行互操作

您可以使用SOAP或RPC-XML或REST或“契约优先”样式,但使用HTTP作为其协议的分布式组件的基本思想仍然存在。”


我假设web服务指的是WS-*协议集、WSDL和SOAP。如果是这样,那么所有这些都不需要使用HTTP作为“传输”协议。SOA协议集被设计为与所使用的任务协议无关,因此您可以使用HTTP、NamedPipes、原始TCP甚至JMS作为向web服务发送消息和从web服务发送消息的手段


因此,在直接使用JMS与使用“web服务”的情况下,我认为这主要归结为工具、舒适度,以及您是否真的需要直接访问特定于JMS的功能(使用WS-*会隐藏这些功能)。在这一点上,我认为只有相当特定的应用程序才需要原始的JMS访问。

让我谈谈web服务的w.r.t SOAP协议实现……哪一种JMS比web服务更好……JMS提供传输协议,它是底层消息传递提供程序,描述了您的JMS提供程序对例如MQ的好坏一个强大可靠的JMS提供程序,其中作为SOAP协议既可以被视为应用程序级协议,也可以被视为传输协议(在SOAP/HTTP的意义上)。SOAP的beenfit支持基于XML的标准…作为应用程序级协议,我们认为SOAP是一种消息,它可以通过任何传输协议从一个系统传递到另一个系统,作为传输协议,SOAP可以被看作是传输有效负载(消息数据)的容器。SOAP/HTTP也可以被看作JMS MeaSead提供程序……但在后一种形式中,HTTP具有可靠性问题。因为它会导致与网络、套接字连接、带宽等相关的错误…所以长话短说,JMS和可靠的消息提供程序使其成为与良好的传输协议交互的良好标准,其中webservice作为应用程序级协议使不同的应用程序使用类似于SOAP协议的XML进行通信…希望这能澄清…

这一切都取决于您的需求,您将使用什么框架以及您的应用程序环境和行为。如果你能给出一个关于这方面的概述,那么你可以得到一个严格的答案


现在,这就像比较一辆卡车和一辆轿车,你必须知道你将使用它做什么,在哪条路上使用它才能决定哪一条更好。

Web服务是面向服务的体系结构(SOA)的实现。SOA有三方:提供者、代理和请求者,它们是松散耦合的。提供者提供了表示特定实现的业务服务