我正在考虑WPF应用程序的高级架构。
通常我会考虑这个
E.g。瘦客户端,远程服务器上发生了所有魔法。
但团队中有人质疑业务逻辑层是否需要在远程服务器上。为什么不直接将它转移到客户端上,使其不再是瘦客户端和更多胖客户端服务器应用程序。
我们目前不需要WCF,并且假设我们仍然构建业务逻辑,因此它处于一个单独的层,这对我来说在简化基础架构方面是有意义的。
我的问题是......在不需要网络服务的情况下,是否有任何良好的建设理由不将业务逻辑层与UI层一起推广到客户端机器?
我能想到drwabacks,但这些看起来都不是那么大。
答案 0 :(得分:3)
我通常会从UI中分离出业务逻辑。为什么?因为您的UI可能只是该服务的一个客户端。
目前您的客户是该服务的唯一消费者,但在稍后阶段您可能希望有其他客户(包括其他服务)使用它。通过分离出业务逻辑,您可以将其提供给其他消费者。
我通常会将业务逻辑作为一个组件,然后我可以选择如何部署它(在客户端或服务器中)。然而,在许多情况下,我无法做到这一点。例如如果客户端和服务器是使用不同的技术实现的(C#/ Java是一种常见的组合)。
答案 1 :(得分:1)
完全赞同布莱恩。我通常设计它的方式是将Web服务从客户端提供到单独服务器上的业务逻辑,这使得它可以扩展,但这一切都取决于系统需要多么强大。
另外考虑部署,部署到1台服务器比部署到所有客户端更容易。不同客户运行不同版本的业务逻辑的可能性有多大?
答案 2 :(得分:1)
嗯,我也非常同意Brian和Burt。 “运行不同版本的业务逻辑的不同客户端”确实很有意义。
基本上,关注点分离(SoC)是最重要的一点,允许任何应用程序扩展到足以扩展它以满足未来需求。作为一种建筑,你至少应该感知这一点,并建立一些基础工作。
今天的大多数应用程序都不是单一的,并且不会保持不变。业务需求变化如此之快,因此他们也需要对应用程序进行更改。
将可更改的内容与不可更改的东西分开是很重要的,同时设计应用程序以便轻松扩展它们。
HTH