我现在在WPF中有点过时,并且有兴趣听到人们对最新版本的Prism(我之前使用过几个版本)与MVVM Light + Unity方法(我是从来没有做过 - 体面的例子网址会很好。
我的项目将是一个很大的项目,包括由几个开发人员编写的多个模块。还有资金引入第三方控制套件,以便使用其中一个漂亮的Docking / Workspace布局管理器建立一个漂亮的工作区(我知道Prism区域的一些比其他区域更好)。
如果你现在从头开始一个项目,你会选择什么?为什么? 有关特定推荐体系结构模式的详细信息将非常有用(例如,模块dll的自动发现?注入日志记录服务?)。 基本上,任何想法和建议都会很好。我想进行一次很好的讨论。也许完全有另一个方向你建议进去?我非常喜欢研究阶段,并希望尽可能多地投入。
我把它放在这里因为我认为它会比Prism / MVVM Light论坛获得更少的偏见,但是,如果这个问题有更合适的地方,请指出我的方向。
答案 0 :(得分:55)
如果你需要模块化,你需要看看Prism。 Prism有一些元素可以帮助你使用MVVM(例如DelegateCommand和CompositeCommand),但我认为它更完整的另一个MVVM框架。
几天前有一个关于如何塑造棱镜的问题。检查一下如何详细解释如何考虑Prism的功能。 High Level Modelling Advice for Prism MVVM
Unity是一个控制容器反转的实现,它绝对是好的,但Prism有能力使用其他容器。它内置了对MEF的支持(反过来,它是内置于.NET 4.0),但它不是你唯一的选择。查看Prism中包含的一些示例,并确定您更喜欢哪种方法。在我看来,Unity本身并不完整用于UI合成。如果您想尝试使用MVVM Framework + IoC Framework方法组合UI,MEF可能是更接近的选择。
MVVM Light实际上是Prism的一个免费框架。要考虑的其他MVVM框架:
如果我要开始一个新项目:我会选择Prism和ReactiveUI。
Prism,因为你必须具有大型项目的模块性,我喜欢通过删除或添加DLL来删除和添加大量功能到应用程序的能力(并且你不必像你一样实现DLL嗅探功能仅采用IoC + MVVM方法)。更易于测试,更易于调试,更易于单独开发。周围很好。
ReactiveUI因为现在使用UI编程,大部分时间都花在管理UI线程上的时间上。阻止是禁止的......用户不希望看到UI冻结;他们希望看到动画GIF等待符号旋转,这样他们就知道在加载数据时他们可以处理其他内容。此外,如今许多有价值的应用程序提供的是从不同系统获取数据并将它们放在UI中......不仅需要一个好的合成系统(Prism),而且还需要一个好的MVVM框架将异步操作视为面包和黄油...... ReactiveUI就是它。