c# - 3(物理)层架构效率低下吗?

标签 c# sql-server architecture

注意:当我提到层时,我指的是物理层。此站点上与“层”相关的许多问题都指的是逻辑层,这不是我要问的。

我正在设计一个使用标准“3 层”架构的应用程序,包括表示层、业务逻辑 (BLL) 层和数据访问层 (DAL)。该技术是 WPF、C#、LINQ 和 SQL Server 2008。我的问题与此应用程序的物理架构有关。

我可以将 BLL/DAL 放在一个标准的 DLL 中,该 DLL 在用户机器上加载并运行,从而形成一个 2 层架构 - 客户端机器和数据库服务器。但是将 BLL/DAL 转换为位于应用程序服务器上并从用户计算机调用的 WCF 服务并不难。这将给我一个 3 层架构 - 客户端计算机、应用程序服务器和数据库服务器。

我的问题是 - 使用 3 层架构的优势是什么?我经常被告知 3 层增加了可伸缩性,但我并不清楚为什么会这样。并且您肯定会受到性能影响,因为相同的数据必须通过网络进行两跳 - 从数据库服务器到应用程序服务器,然后从应用程序服务器到客户端机器。

我非常感谢经验丰富的架构师和开发人员的建议。

最佳答案

这取决于您的应用程序的用途和您对安全性的要求。如果您的应用程序正在 Internet 上使用,并且您正在以任何方式存储任何可能敏感的内容,强烈建议为数据库添加物理删除。永远,永远不要让任何人从外部进入任何可以直接访问您的数据库的机器。人们可以并且会出于没有更好的理由而试图破坏您的安全。

可扩展性也是一个因素,无论是在表示层前面(在 Web 服务器前面)还是在数据库中。在表示层之前放置一个负载均衡器允许将传入的请求路由到一组可以独立管理的机器。机器可以在需要时添加到池中,也可以移除以进行维护。在其他层之间放置负载平衡器可以产生相同的影响。这个想法是提供一个灵活、动态的后端环境,可以根据需要进行调整。

关于c# - 3(物理)层架构效率低下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1997288/

相关文章:

c# - 包含字符串的结构与包含字符串的类的性能

c# - 设置锁时线程关闭时锁会发生什么

c# - 您的代码优先类是您的域类吗?

python - 如何在水平缩放的游戏服务器中管理元信息?

sql-server - 在sql函数中使用表名作为参数

rest - CQRS - 通过具有即时一致性的命令发送响应

c# - 计算字符串的校验和

c# - 如何在固定时间内更改按钮的 backColor?

sql - 如何使用 SQL 在单个表中更新多行?

sql - SQL Server中如何写客户订单依据