MVVM Light + Unity还是Prism?

我现在已经有些过时了,现在有兴趣听听人们对Prism最新版本的看法(我之前使用过几个版本),还是MVVM Light + Unity方法(我从来没有这样做过 – 体面的例子url会很好)。

我的项目将是由多个开发人员编写的包含多个模块的大型项目。 也有资金来引入第三方控制套件,以build立一个漂亮的工作空间使用一个漂亮的Docking / Workspace布局pipe理器(我知道一些比其他人更好地发挥Prism区域)。

如果你现在从头开始一个项目,你会怎么做,为什么? 有关具体build议的体系结构模式的详细信息将会很有用(例如,自动发现模块DLL?注入日志logging服务?)。 基本上,任何想法和build议都会很好。 我想讨论一下。 也许你会build议进入另一个方向吗? 我非常在研究阶段,并希望尽可能多的input。

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

如果你需要模块化,你会想看看棱镜。 棱镜有一些可以帮助你使用MVVM(例如DelegateCommand和CompositeCommand)的元素,但是我认为MVVM框架更完整。

前几天有一个关于如何塑造棱镜的问题。 检查一下如何考虑棱镜function的详细说明。 Prism MVVM的高级build模build议

Unity是一个控制容器的反转实现,它绝对是好的,但是Prism有能力使用其他的容器。 它已经内build了对MEF的支持(反过来,它也是.NET 4.0的内置),但它不是唯一的select。 看看Prism中包含的一些样本,并决定你更喜欢什么样的方法。 在我看来,Unity并不是完整的UI合成。 如果您想尝试使用MVVM框架+ IoC框架方法来组合UI,MEF可能是一个更接近的select。

MVVM Light实际上是Prism的一个免费框架。 其他MVVM框架要考虑:

  • MVVM基金会(非常轻量级…适合小项目)
  • Caliburn(非常强大的框架)
  • Caliburn Micro(与Caliburn共享一个名字和一个作者,但是它与MVVM Light有着相似的约定)
  • ReactiveUI (以前称为“ReactiveXAML”,这是一个大脑的变化,但是如果你学习了.NET的Reactive Extensions(Rx),这个框架简直太神奇了。

如果我要开始一个新的项目:我会去与Prism和ReactiveUI。

棱镜,因为你必须具有大型项目的模块化,我喜欢能够删除和添加大的单位function的应用程序,只需删除或添加DLL(你不必像你只是实现DLL嗅探function一个IoC + MVVM方法)。 更容易testing,更易于debugging,更易于单独开发。 周围好。

ReactiveUI,因为现在用户界面编程,大部分时间都花在UI线程上。 拦截是一个不行…用户不希望看到一个用户界面冻结; 他们希望看到animationGIF等待符号旋转,以便他们知道他们可以在加载数据时处理其他事情。 另外,如今很多价值应用程序正在从不同的系统获取数据并将它们放在UI中…不仅需要一个好的合成系统(Prism),还需要一个好的MVVM框架把asynchronous操作视为面包和黄油… ReactiveUI就是这样。