wpf – MVVM框架:性能

我目前正在搜索将用于我们的nexts应用程序的框架.目前我们有运行winform的应用程序,我们计划慢慢切换到WPF(使用新的应用程序,然后重构GUI).我们是由9人组成的团队,致力于此解决方案.

我们有一个很大的解决方案(目前有300个VS项目,大约1,500’000行代码),因此在选择框架时,我们正在寻找能够促进清晰代码,良好基础架构以及框架的框架.不会减慢(太多)应用程序.

目前,我主要是在Prism(完全理解它似乎有点复杂)和Caliburn.Micro.

Caliburn.Micro似乎更容易使用,但我有点担心所有那些面向常规的东西意味着很多事情将在运行时使用Reflection完成.

我对么?或者这是在编译时完成的?

另外我不确定我应该考虑MVVM Light,因为它缺乏文档/目标应用程序大小.

最佳答案
首先,Prism不是MVVM框架.有Prism.MVVM,它是一个非常轻量级的MVVM库,它独立于Prism.

第二,这< ListBox x:Name =“Products”/>自动数据绑定到viewmodel不应该是Caliburn.Micro中的性能问题,因为WPF中的普通绑定无论如何都使用refelection.不确定Caliburn是否也在内部使用反射,但即使它确实如此,如果你不在迭代场景中这样做,那么在运行时几乎不会发现它,例如在ItemsScontrol中有1000个项目.如果您遇到性能问题,没有什么能阻止您以标准方式编写它.但是,这个的附加值值得怀疑. IMO带来的问题比它解决的问题多

如果我可以给你我的建议,不要使用任何MVVM框架.您只需要INotifyPropertyChanged实现和DelegateCommand(ICommand实现).在某些特殊情况下,您可能需要EventAggregator.现在告诉我,这三个类是否值得一个框架?不,不是.为什么要将依赖引入第三方库?

如果要开始这么大的解决方案,编写自己的基类库的投资可以忽略不计.您始终可以从Prism获取一两个类的源代码,并在您自己的库中使用它们.

这些框架的问题在于开发人员倾向于过度设计简单的场景,例如使用EventAggregator,其中普通事件甚至直接引用更合适.或者以Prism为例,他们使用区域和视图注入,可以使用简单的ItemsControl.

在使用WPF 6年后,我成为ViewModel-First方法的重要支持者.然后MVVM变得更加简单.但是大多数框架使用View-First方法更好.

所以,我的投票是不使用任何MVVM框架.如果必须使用,请选择Prism.MVVM.看看源代码,它们写得很好.

转载注明原文:wpf – MVVM框架:性能 - 代码日志