用于模块化 MVVM 应用程序的 Prism + MEF 替代品 [关闭]

Posted

技术标签:

【中文标题】用于模块化 MVVM 应用程序的 Prism + MEF 替代品 [关闭]【英文标题】:Alternatives to Prism + MEF for modular MVVM apps [closed] 【发布时间】:2011-06-27 16:22:03 【问题描述】:

我和我的团队开始计划开发一个模块化应用程序,该应用程序可能会多目标 WPF 和 Silverlight。

我个人有一些使用旧版本 PRISM 使用 MVVM 模式构建复合 Silverlight 应用程序的经验。当时我们还不熟悉 MEF 来处理各种模块依赖关系,所以我们没有使用它。

我们没有与任何特定框架结婚,但希望使用其中一个更大的参与者。因此,我们已经开始研究 Caliburn/Caliburn Micro、Prism、MVVM Light 和 Reactive UI。

我读过的关于模块化的大部分内容都建议使用 PRISM 和 MEF 来处理这部分流程。由于我仍在思考其中的一些内容,因此我不确定我是否遗漏了一些明显的选项。我在Caliburn Micro and MEF 上找到了这篇文章。

谁能指出我使用其他一些框架来编写复合应用程序的类似文章,类似于 PRSIM 使用区域等的方式?理想情况下,我想限制所需框架的数量,同时提供最大的灵活性。我们不反对采用“同类最佳”的方法,例如使用 MEF/PRISM 来处理合成,并使用 MVVM Light 进行视图管理等;但是为什么在 1 就可以使用 2 呢?

【问题讨论】:

我很想知道你带了什么。 【参考方案1】:

您可能首先应该做的一件事是将它们隔离到适当的存储桶中。我经常看到人们将 MVVM 框架与应用程序组合框架混合在一起。将它们放在适当的存储桶中后,您就可以开始从每个类别中选择一个框架,并将它们组合成您认为的最佳方案。

应用程序组合

Prism(使用任何 IoC 容器:MEF、Unity、Ninject、Autofac 等。使用 Prism 可以使 MVVM 变得更容易,但我不会称其为功能齐全的 MVVM 框架......它主要是一个模块化应用程序组合框架。) MEF(MEF 实际上能够开箱即用地进行应用程序组合。它通常被认为只是一个 IoC 框架而被忽视,但它看似强大。)

MVVM 框架

ReactiveUI(我最喜欢的) 卡利本 Caliburn Micro MVVM 灯

我认为这将帮助您做出决定。您可以选择自己喜欢的应用程序组合技术和您喜欢的 MVVM 框架,然后参加比赛。

关于文章,我没有太多。有很多关于使用 Prism 组合应用程序的好文章(这几乎就是它的工作),但这里有一篇关于使用 MEF 组合应用程序的好文章:

http://blogs.microsoft.co.il/blogs/tomershamam/archive/2009/08/11/wpf-mef-declarative-composite-ui.aspx

您还应该查看 Glenn Block 在他的博客上的系列“构建 HelloMEF”。我找不到一个完整的列表(他与他的标签不一致),但这里是“MEF”标签。这里有很多好东西:

http://blogs.msdn.com/b/gblock/archive/tags/mef/default.aspx?PageIndex=1

【讨论】:

谢谢。我想我大部分时间都在处理这个问题。我需要查看一些帖子。我会带着我的发现和我的选择回来。

以上是关于用于模块化 MVVM 应用程序的 Prism + MEF 替代品 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Prism/MVVM (MEF/WPF):从模块中公开导航 [例如菜单]

C# WPF MVVM模式Prism框架下事件发布与订阅

六从GitHub浏览Prism示例代码的方式入门WPF下的Prism之MVVM中的FilteringEvents

[WPF] 使用 MVVM Toolkit 构建 MVVM 程序

如何在Prism框架中的模块之间正确发送事件消息?

在 WPF PRISM/MVVM 应用程序中避免内存泄漏的最佳方法是啥