2010-09-17 104 views
2

我正在考虑WPF应用程序的高级体系结构。WPF /分层体系结构问题 -

通常我会觉得在这个

  • 方面的数据库服务器
  • 自己的服务器上的数据访问层
  • 它自己的服务器
  • WCF包装轮上的一个商业逻辑层业务层
  • 用于客户端的UI层。

例如,在远程服务器上发生所有魔法的瘦客户机。

但有人对球队提出了质疑业务逻辑层是否需要一个远程服务器上。为什么不把它推到客户端上呢,这使得它不再是瘦客户端,而是更多的胖客户端服务器应用程序。

我们目前不需要WCF并假设我们仍然建筑师业务逻辑,所以它是一个单独的层上,这使得一些意义,我在简化基础设施方面。

我的问题是...有没有什么好的arhcitectural原因,而不需要Web服务时,将业务逻辑层连同UI层一起推出到客户端机器上?

我能想到drwabacks,但没有这些似乎大

  • 有关客户端更新的需求减少(但肯定的ClickOnce缓解此)客户机上
  • 更多的负荷。
  • 需要确保数据库服务器是足够矮胖连接到它足够

回答

3

大我通常会从用户界面分离出业务逻辑。为什么?因为您的用户界面可能只有该服务的一个客户端

此刻你的客户是服务的唯一消费者,但在后一阶段可能还会有其他客户(包括其他服务)使用它的愿望。通过分离业务逻辑,您可以将其提供给其他消费者。

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

+0

我和你在一起。但是,从实用的角度来看,并且最初要减少开发工作(没有WCF)。如果我们在BLL体系结构中遵守纪律,那么有没有其他理由可以避免上述方法。 – AJM 2010-09-17 11:09:06

+0

请参阅我上面关于组件化和不同技术的评论。 – 2010-09-17 11:12:14

1

完全同意布莱恩。我通常构建它的方式是将Web服务从客户端转移到单独的服务器上的业务逻辑,这使得它成为可扩展的,但这一切都取决于系统的稳健性。

想想也是部署,它会更容易比推出的所有客户机部署到一台服务器。不同客户端运行不同版本业务逻辑的机会有多大?

+0

不同版本的逻辑是一个有趣的观点。 – AJM 2010-09-17 11:18:18

1

嗯,我也完全符合布赖恩和伯特同意。“运行不同版本业务逻辑的不同客户”是非常有意义的。

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

今天的大多数应用程序不是单一的,并且不会保持不变。业务需求变化非常迅速,因此它们也需要在应用程序中进行更改。

将可变的东西从不可改变的东西中分离出来很重要,因为设计应用程序时可以轻松地扩展它们。

HTH