事件总线可以用于不同项目或应用程序之间的通信吗



我正在创建一个gwt小部件库供内部使用。每当我的gwt小部件中的任何控件上发生任何事件时,我都会被要求触发一个事件,然后使用我的小部件的应用程序或项目会监听该事件。这个概念似乎类似于我之前在其他gwt项目中使用的事件总线,用于在同一页面上不同区域显示的不同视图之间进行通信。这很好,因为我在整个应用程序中使用了相同的事件总线实例。但现在我将在我的项目中使用事件总线的特定实例,但使用它的应用程序将不会使用相同的实例。我是继续使用它,还是有其他方法在不同的应用程序之间触发事件。请帮助

首先,您称什么为"不同的应用程序"?它们会在同一个浏览器中运行吗?它们会部署在同一台服务器上吗?

如果应用程序不共享一个公共EventBus,则不能使用EventBus在应用程序之间进行通信。

如果您的应用程序在同一个选项卡中运行,您可以将EventBus存储在一个静态变量中,并从同一选项卡中的其他应用程序中检索它

如果您的应用程序在同一浏览器中运行(在不同的选项卡上),则可以使用LocalStorage进行通信。你可以看看:

  • 使用本地存储的选项卡间通信
  • 使用HTML5 Web存储进行进程间通信
  • 使用localStorage跨窗口共享数据

GWT在com.google.gwt.storage.client.Storage中提供了LocalStorage(和SessionStorage)的实现。

如果它们不在同一浏览器中运行,则必须往返于服务器,才能从一个应用程序通信到另一个(使用RPC发送消息,使用RPC轮询检查新消息,或者使用服务器推送技术,请参阅GWTEventService和ServerPushFAQ)。

如果它们没有部署在同一台服务器上,您将不得不往返于服务器,并在服务器之间进行通信(使用套接字、RPC、Web服务…)

RabbitMQ去营救。。。这是这类问题的规范解。

http://www.rabbitmq.com/

它被创建为软件总线,就像硬件总线连接计算机系统一样。

我特别喜欢http://manning.com/videla/书它详细介绍了该方法,概述了源代码及其背后的体系结构。非常实用。

最新更新