我目前正在使用MVVM设计模式开发企业级WPF LOB桌面应用程序。我的开发机上当前的解决方案结构如下:
我遇到的问题是,一位同事坚持认为我们应该按照以下方式将应用程序拆分为3个独立的服务器/机器:
- 主项目 - 包含所有视图(XAML)的WPF应用程序
- 视图模型 - 包含支持主项目中视图的所有视图模型
- BLL - 业务逻辑层
- DAL - 数据访问层 - 连接到MS-SQL服务器并调用存储过程
- 模型 - 包含所有业务实体
我遇到的问题是,一位同事坚持认为我们应该按照以下方式将应用程序拆分为3个独立的服务器/机器:
- 展示层 - 用户机器上的客户端WPF应用程序(视图)。这也可以是Web客户端应用程序。
- 逻辑层服务器 - 视图模型+模型+业务逻辑层+数据访问层
- 数据层服务器 - 数据库服务器
我无法想象视图模型与视图分开(不同的服务器),但他声称可能会这样。
编辑:我的同事声称,在服务器端拥有视图模型将使任何未来的部署更加容易,并且会使其更可维护,因为更改只会发生在服务器端。然而,我使用ClickOnce部署了.NET应用程序,这并不是一个大问题。
根据我所阅读的内容, 您可以在用户计算机上安装WPF客户端应用程序,其中包含视图和视图模型,然后通过通信层(如WCF)公开较低层的服务。
另一篇帖子中的答案如下所述: "在MVVM中,UI层被分成两个层。ViewModel负责应用程序逻辑,而View仅负责表示。" 基于此,我的根本问题是,View和ViewModel UI层是否可以存在于不同的层(服务器)中?如果可以,是否建议这样做?如何实现?
谢谢!