模块通过类似servicebus的方式在应用程序内部进行通信

本文关键字:应用程序 内部 通信 方式 servicebus 模块 | 更新日期: 2023-09-27 17:58:23

我们需要构建一个destop应用程序
操作员处理商店列表。他有一个过滤商店的主窗口,还有许多额外的窗口:地图(显示商店的位置,在地图上用粗体标记列表中选定的商店)、库存表(查询外部服务以获取选定商店的库存)。表单可以同时打开,也可以隐藏其中一些表单,主表单除外

可能的实施
我认为每个表单都是应用程序的独立模块。为什么?我预计表格的数量会增长。例如,商店最新销售的新表格,与商店经理聊天的另一种表格。

问题
如何组织模块之间的通信
目前,我有一个想法,使用共享总线,模块可以通过它发送和接收消息。
有其他选择吗
有没有这种总线的实现,或者我已经足够使用基于发布者/订阅者模式的直接实现了?

模块通过类似servicebus的方式在应用程序内部进行通信

首先,您需要保持模块解耦。否则,它将导致模块之间存在大量依赖关系
为了实现这一点,最好的报价是使用EventAggregator结构。虽然这个名字看起来像是事件,但事实上,它是一个管理pub/sub的总线结构。

您可以在此处找到有关EventAggregator模式表单的信息。

.NET world有一个开源API(名为Prism)提供此功能。我强烈建议您从这里阅读Prism文档的事件聚合部分,并挖掘源代码。

目前,我们正在开发一个Silverlight应用程序,该应用程序包括彼此完全解耦的不同模块(没有模块知道另一个模块的实例/引用),并通过Prism API进行通信。