【问题标题】:MVVM Light + Unity or Prism?MVVM Light + Unity 还是 Prism?
【发布时间】:2011-01-20 17:09:57
【问题描述】:

我现在在 WPF 中有点过时了,我很想听听人们对 Prism 最新版本(我以前使用过几个版本)与 MVVM Light + Unity 方法(我从来没有做过 - 像样的示例 URL 会很好)。

我的项目将是一个大型项目,由多个开发人员编写的多个模块组成。还有资金引入 3rd 方控制套件,以便使用其中一个花哨的对接/工作区布局管理器来设置一个漂亮的工作区(我知道有些人在 Prism 区域中比其他人玩得更好)。

如果您现在从头开始一个项目,您会选择什么?为什么? 有关特定推荐架构模式的详细信息将很有用(例如,模块 dll 的自动发现?注入日志服务?)。 基本上,任何想法和建议都是好的。我想好好讨论一下。也许您会建议完全进入另一个方向?我正处于研究阶段,希望尽可能多地提供意见。

我把它放在这里是因为我认为它会比 Prism/MVVM Light 论坛获得更少的偏见,但是,如果有更适合这个问题的地方,请指出我的方向。

【问题讨论】:

    标签: c# .net unity-container prism mvvm-light


    【解决方案1】:

    如果您需要模块化,您可以考虑 Prism。 Prism 有 一些 元素可以帮助您使用 MVVM(例如,DelegateCommand 和 CompositeCommand),但我认为它与另一个 MVVM 框架更完整。

    前几天有一个关于如何为 Prism 建模的问题。查看有关如何考虑 Prism 功能的详细说明。 High Level Modelling Advice for Prism MVVM

    Unity 是一种控制反转容器的实现,它绝对不错,但 Prism 可以使用其他容器。它具有对 MEF 的内置支持(反过来,它内置于 .NET 4.0),但它不是您唯一的选择。查看 Prism 中包含的一些示例,然后确定您更喜欢哪种方法。在我看来,Unity 本身对于 UI 合成并不完整。如果您想尝试使用 MVVM 框架 + IoC 框架方法组合 UI,MEF 可能是一个更合适的选择。

    MVVM Light 实际上是 Prism 的一个补充框架。其他需要考虑的 MVVM 框架:

    • MVVM Foundation(非常轻量级...适合小型项目)
    • Caliburn(非常强大的框架)
    • Caliburn Micro(与 Ca​​liburn 共享一个名称和作者,但它类似于 MVVM Light,但有一些不错的约定)
    • ReactiveUI(以前称为“ReactiveXAML”。这有点像大脑融化器,但如果您学习 .NET (Rx) 的反应式扩展,这个框架简直太棒了……在我看来很神奇。)

    如果我要开始一个新项目:我会选择 Prism 和 ReactiveUI。

    Prism,因为您必须对大型项目进行模块化,而且我喜欢通过删除或添加 DLL 来删除和添加大型功能单元到应用程序的能力(而且您不必像您一样实现 DLL 嗅探功能将仅使用 IoC + MVVM 方法)。更容易测试,更容易调试,更容易单独开发。周围都很好。

    ReactiveUI,因为如今使用 UI 编程,您的大部分时间都花在了管理 UI 线程上的时间上。阻止是不行的……用户不希望看到 UI 冻结;他们希望看到动画 GIF 等待符号旋转,以便他们知道在加载数据时可以处理其他事情。此外,如今应用程序提供的很多价值是从不同的系统中获取数据并将它们放在 UI 中……您不仅需要一个好的合成系统(Prism),而且还需要一个好的 MVVM 框架将异步操作视为其生计... ReactiveUI 就是它。

    【讨论】:

    • 抱歉延迟回复,突然有另一个项目优先,这被推到了我的脑海。非常有帮助的回复,我会看看你指出的其他线程和框架。
    • 我建议查看 MEF 的 silverlight 作为 Prism 组成方面的附加组件或替换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2011-11-14
    • 1970-01-01
    • 2012-05-20
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多