【问题标题】:Modules communication inside application by something like servicebus通过 servicebus 之类的东西在应用程序内部进行模块通信
【发布时间】:2013-02-17 21:49:09
【问题描述】:

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

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

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

【问题讨论】:

标签: c# wpf design-patterns architecture


【解决方案1】:

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

您可以在here 中找到有关 EventAggregator 模式的信息。

.NET 世界有一个提供此功能的开源 API(名为 Prism)。我强烈建议您阅读来自here 的 Prism 文档的 Event Aggregation 部分并挖掘源代码。

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

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2021-04-07
    相关资源
    最近更新 更多