我目前正在开发一个已经开发和结构化的大型WPF项目,而且预计会有所增长。但是它没有任何MVVM模式体系结构组件。
我们现在的目标之一是重构包含的UI以支持MVVM模式组件。
由于MVVM视图层开发分离的设计,几乎删除了所有UI“代码隐藏”,我们提出了上述想法。
上述想法利用了重组到未来发展的优势,因此我们考虑将当前项目分为两个:
UI项目 - 包含和管理当前和未来的UI代码(视图和ViewModel)。
逻辑项目 - 包含并管理当前和未来的逻辑代码(模型)。
应用这种分裂是否正确?对于未来的开发,调试和测试是否会过度?
答案 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中。