将一个项目拆分为两个独立的 MVVM 子项目是否正确

Is it correct splitting one project into two independent MVVM sub-project

我目前正在开发一个大型 WPF 项目,该项目已经开发和构建,而且预计会增长。但是它没有任何 MVVM 模式架构组件。

我们现在的目标之一是重构包含的 UI 以支持 MVVM 模式组件。

由于MVVM视图层开发分离的设计,去掉了几乎所有UI"code-behind",我们提出了上面的想法。

以上想法是为了以后的发展利用重构,所以我们考虑把现在的项目拆分成两个:

应用这样的拆分是否正确?对以后的开发调试测试会不会太过分了?

将业务逻辑拆分到另一个项目中是一个很好的主意,将其构建为一个DLL。在此之后,您可以在另一个前端应用程序(例如 Web 项目)中重用所有业务逻辑。之后就可以利用MVVM模式来替换Frontend部分,复用逻辑部分。

未来发展

为了以后的开发最好拆分项目,因为可以在不触及UI项目的情况下更改业务逻辑。

调试

今天的调试工具可以毫无限制地处理这个问题。

测试

通常你可以做同样的分割来测试。如果您对逻辑项目中的所有功能进行单元测试,除了 UI 之外的所有内容都被覆盖。

This means, splitting the projects is always the better choice.

我认为您的提议没有任何问题。如果您遵循 MVVM 模式 'correctly',那么它应该在您的视图和视图模型之间提供完全分离。因此,将您的所有视图放在一个单独的项目中到您的 ViewModels 也可能是有意义的。您的 ViewModels 应该 在没有视图的情况下都能完美运行,让您真正清楚地分离 UI 生产任务和逻辑生产任务。您的视图可以利用设计时数据来模拟 ViewModel 的行为,而无需实际存在任何逻辑。

我们使用 Prism,我们将视图和视图模型分成 5 个独立的项目,更不用说其他项目(基础设施、数据层等)。我们使用 prism 来管理这 5 个(其中 4 个是 prism 模块 - wpf class 库),其中一个是主 wpf 项目,它将其他项目加载到 shell.