WPF /分层架构问题 -

时间:2010-09-17 10:56:33

标签: .net wpf wcf architecture

我正在考虑WPF应用程序的高级架构。

通常我会考虑这个

  • 数据库服务器
  • 自己服务器上的数据访问层
  • 自己服务器上的业务逻辑层
  • 围绕业务层的WCF包装器
  • 用于客户端的UI层。

E.g。瘦客户端,远程服务器上发生了所有魔法。

但团队中有人质疑业务逻辑层是否需要在远程服务器上。为什么不直接将它转移到客户端上,使其不再是瘦客户端和更多胖客户端服务器应用程序。

我们目前不需要WCF,并且假设我们仍然构建业务逻辑,因此它处于一个单独的层,这对我来说在简化基础架构方面是有意义的。

我的问题是......在不需要网络服务的情况下,是否有任何良好的建设理由不将业务逻辑层与UI层一起推广到客户端机器?

我能想到drwabacks,但这些看起来都不是那么大。

  • 在客户端上更少需要更新(但肯定会点击这一点)
  • 在客户端计算机上加载更多。
  • 需要确保数据库服务器足够大并且连接足够大

3 个答案:

答案 0 :(得分:3)

我通常会从UI中分离出业务逻辑。为什么?因为您的UI可能只是该服务的一个客户端

目前您的客户是该服务的唯一消费者,但在稍后阶段您可能希望有其他客户(包括其他服务)使用它。通过分离出业务逻辑,您可以将其提供给其他消费者。

我通常会将业务逻辑作为一个组件,然后我可以选择如何部署它(在客户端或服务器中)。然而,在许多情况下,我无法做到这一点。例如如果客户端和服务器是使用不同的技术实现的(C#/ Java是一种常见的组合)。

答案 1 :(得分:1)

完全赞同布莱恩。我通常设计它的方式是将Web服务从客户端提供到单独服务器上的业务逻辑,这使得它可以扩展,但这一切都取决于系统需要多么强大。

另外考虑部署,部署到1台服务器比部署到所有客户端更容易。不同客户运行不同版本的业务逻辑的可能性有多大?

答案 2 :(得分:1)

嗯,我也非常同意Brian和Burt。 “运行不同版本的业务逻辑的不同客户端”确实很有意义。

基本上,关注点分离(SoC)是最重要的一点,允许任何应用程序扩展到足以扩展它以满足未来需求。作为一种建筑,你至少应该感知这一点,并建立一些基础工作。

今天的大多数应用程序都不是单一的,并且不会保持不变。业务需求变化如此之快,因此他们也需要对应用程序进行更改。

将可更改的内容与不可更改的东西分开是很重要的,同时设计应用程序以便轻松扩展它们。

HTH