0

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

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

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

4

1 回答 1

1

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

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

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

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

于 2013-02-08T15:16:58.847 回答