我正在思考 WPF 应用程序的高级架构。
通常我会考虑这个
- 数据库服务器
- 位于自己服务器上的数据访问层
- 位于自己服务器上的业务逻辑层
- 业务层的 WCF 包装器
- 用于客户端的 UI 层。
例如一个瘦客户端,所有的魔力都发生在远程服务器上。
但团队中有人质疑业务逻辑层是否需要位于远程服务器上。为什么不将其也滚动到客户端上,使其不再是瘦客户端,而更像是胖客户端服务器应用程序。
我们目前不需要 WCF,并且假设我们仍然构建业务逻辑,因此它位于单独的层上,这对我来说在简化基础设施方面具有一定意义。
我的问题是...当不需要 Web 服务时,是否有任何好的架构理由不将业务逻辑层与 UI 层一起部署到客户端计算机?
我可以想到drwabacks,但这些看起来都没有那么大
- 客户端更新的需求减少(但 clickonce 肯定会缓解这种情况)
- 客户端计算机负载增加。
- 需要确保数据库服务器足够大并且与其连接足够大
最佳答案
我通常会将业务逻辑与 UI 分开。为什么 ?因为您的 UI 可能只是该服务的一个客户端。
目前,您的客户是该服务的唯一使用者,但在稍后阶段,您可能希望有其他客户(包括其他服务)使用该服务。通过分离业务逻辑,您可以将其提供给其他消费者。
我通常会将业务逻辑作为一个组件,然后我可以选择如何部署它(在客户端或服务器中)。然而,在很多情况下我无法做到这一点。例如如果客户端和服务器使用不同的技术实现(C#/Java 是常见的组合)。
关于.net - WPF/分层架构问题 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734713/