通过servicebus等模块在应用程序内部进行通信

时间:2013-02-08 09:57:46

标签: c# wpf design-patterns architecture

我们需要构建一个destop应用程序 运营商使用商店列表。他有一个主窗口,他过滤商店,他有一些额外的窗口:地图(显示商店的位置,从列表中选择的商店标记为地图上的粗体),库存表格(查询所选商店的库存的外部服务)。 表单可以同时打开,也可以隐藏其中一些表单,主表单除外。

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

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

1 个答案:

答案 0 :(得分:1)

首先,您需要保持模块分离。否则,它将导致模块之间存在一连串的依赖关系 为实现这一目标,最好的方法是使用EventAggregator结构。虽然名称似乎是事件,但事实上,它是一个管理pub / sub的总线结构。

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

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

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