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

时间:2015-04-02 07:34:32

标签: wpf mvvm architecture structure

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

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

由于MVVM视图层开发分离的设计,几乎删除了所有UI“代码隐藏”,我们提出了上述想法。

上述想法利用了重组到未来发展的优势,因此我们考虑将当前项目分为两个:

  • UI项目 - 包含和管理当前和未来的UI代码(视图和ViewModel)。

  • 逻辑项目 - 包含并管理当前和未来的逻辑代码(模型)。

应用这种分裂是否正确?对于未来的开发,调试和测试是否会过度?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

未来发展

对于未来的开发来说,拆分项目会更好,因为可以在不触及UI项目的情况下对业务逻辑进行更改。

<强>调试

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

<强>测试

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

  

这意味着,拆分项目总是更好的选择。

答案 2 :(得分:2)

我们使用棱镜,我们将视图和视图模型拆分为5个独立的项目,更不用说其他项目(基础架构,数据层等)。我们使用prism来管理那些5个(其中4个是prism模块 - wpf类库),其中一个是主要的wpf项目,它将其他的加载到shell中。