【发布时间】:2019-08-25 20:15:43
【问题描述】:
谁能解释一下 rpc、rmi、jms 和 webservices 之间的区别。我所知道的 Web 服务是肥皂和休息。我不明白 jms 是如何在使用 web 服务时出现的,以及 esb 的用途是什么?
【问题讨论】:
标签: jms
谁能解释一下 rpc、rmi、jms 和 webservices 之间的区别。我所知道的 Web 服务是肥皂和休息。我不明白 jms 是如何在使用 web 服务时出现的,以及 esb 的用途是什么?
【问题讨论】:
标签: jms
RPC 和 RMI 是在删除服务器应用程序上调用方法的紧密耦合方式。
RCP是C/C++版本,RMI是Java版本,见What is the difference between Java RMI and RPC?
了解更多信息。
但是您可以放心地忘记 RPC 和 RMI,因为它们具有这种紧密耦合,并且它们现在被认为是“不现代的”。例如,要从服务器获取“Pete”的地址,客户端会调用类似:address = server.getAddress("Pete")
这里的问题是,当您对服务器的 API 进行一点更改时,您还需要升级所有客户端。如果您在一台服务器上拥有多个客户端,则会导致“升级地狱”。
JMS 更好,因为您通过消息而不是方法调用进行通信。您将信息包(=消息)从一个组件发送到另一个组件。通知对方事件。例如,client1 可以发送一条消息:msg.setJMSReplyTo("client1"); producer.send( "ADDRESS-SERVER", msg ); response = consumer.receive()(伪代码)并获取该消息。服务器可以添加新的响应字段(街道/邮政编码),例如对于client2,到该地址而不中断与client1的通信。
JMS 可以是请求/回复,但也可以是发布-订阅(企业集成的最佳方法)。 JMS 提供者很多,其中一些像 ActiveMQ 一样免费,并且在每秒消息数方面通常非常有效。
WebServices 是基于 HTTP 的。 REST 或 SOAP。 SOAP 有点过时了。 REST 利用特殊的 URL 向/从网络服务器获取或发布信息。如果高性能很重要(每秒 100k 请求或更多),您应该考虑 JMS,但如果您有使用 WebServer 等的经验,那么 REST 也可能有利于集成。 WebServices 的一个优点是您可以使用标准浏览器来调试此服务,而且通常防火墙更容易在端口 8080 上打开。
我的建议,如果您没有偏好:了解 JMS 主题 并开始思考如何使用“事件驱动/推送计算”解决问题 - 特别是在后端,这是一个良好的架构。对于更多与前端相关的集成,REST WebServices 是可行的方法。
【讨论】: