我目前正在使用 MVVM 设计模式开发企业 WPF LOB 桌面应用程序。我的开发机器中当前的解决方案结构如下:
- 主项目- 包含所有视图(XAML)的 WPF 应用程序
- 视图模型- 包含在主项目中备份视图的所有视图模型
- BLL - 业务逻辑层
- DAL - 数据访问层 - 连接到 MS-SQL 服务器并调用存储过程
- 模型- 包含所有业务实体
我目前没有使用 WCF,因为此时所有内容都驻留在同一台机器上,除了位于自己服务器中的数据库。但是,将来我们计划将代码库分成 3 层。
我遇到的问题是,一位同事坚持认为我们应该将我们的应用程序拆分为 3 个单独的服务器/机器,如下所示:
- 表示层- 用户计算机中的客户端 WPF 应用程序 ( View )。这也可能是一个 Web 客户端应用程序
- 逻辑层服务器- 视图模型 + 模型 + 业务逻辑层 + 数据访问层
- 数据层服务器- 数据库服务器
我无法想象视图模型与视图分开(不同的服务器),他声称这应该是可能的。
编辑:我的同事声称,在服务器端拥有视图模型将简化任何未来的部署,并将使其更易于维护,因为更改只会在服务器端进行。但是,我已经使用 ClickOnce 部署了 .NET 应用程序,这并不是什么大问题。
根据我的阅读,您可以在包含 View 和 ViewModel 的用户计算机上安装 WPF 客户端应用程序,然后通过 WCF 等通信层在较低层公开服务。
这个答案在另一篇文章中指出: “在 MVVM 中,UI 层分为两层。负责应用程序逻辑的 ViewModel 和仅负责演示的 View。” 基于此,我的基本问题是,View 和 ViewModel UI 层可以驻留在不同的层(服务器)中吗?如果是这样,是否推荐?那怎么能做到呢?
谢谢!