3层架构的好处是什么?

时间:2009-12-25 21:18:39

标签: linq data-access-layer

我并不完全相信3层架构的好处。那么,为什么LINQ出现了,这是一种更轻便的数据访问方法?任何输入将不胜感激。

3 个答案:

答案 0 :(得分:6)

n层应用程序的主要好处之一(当然比我在这里提到的要多得多)是它带来的关注点分离。如果你构建你的应用程序,那么数据访问的责任是在数据访问层中保存(LINQ2SQL是一个非常好的例子),验证和一个或多个其他层中的其他业务逻辑,在还有另外一个,您可以更改任何一个层中的细节,甚至替换它,而无需重新编写其余的应用程序。

另一方面,如果您选择 not 来实现n层方法,您会很快注意到,例如更改单个数据库表的名称将需要您通过整个应用程序 - 每一行代码 - 用于搜索需要更新的SQL语句。在n层应用程序中(如果您已完成任务),您只需在代码中更改一次的表名。

答案 1 :(得分:5)

在你意识到这些框架和模式解决的问题之前,你需要以天真的方式做到并失败。

许多事情发生在我身上。 SVN分支看起来像一个无组织的做事方式,直到有一天我希望我在最近的5次提交之前分支。在我开悟之前,C ++模板似乎毫无用处且令人困惑;现在我经常使用它们。对于任何人来说,每个J2EE功能看起来都会毫无用处,直到你真正构建一个足够大且有问题的应用程序为止;那么它们可能就是你所需要的。 (因此,“要求”使用它们是一个缺陷)

答案 2 :(得分:4)

与大多数工程领域一样,从来没有一个完美的“一刀切”的开发或架构解决方案。所以它采用n层架构。

例如,相当多的应用程序作为单层或双层体系结构运行良好。例如,Microsoft Word作为一个单层系统,非常好,谢谢你。

大多数业务应用程序已经开始使用(与层不同:层是虚拟的,层是物理的)因为它使生活更容易在一个地方具有表示逻辑,在另一个地方具有业务逻辑,和其他地方的持久性逻辑。根据应用程序来说,它还可以有更多层次:我最近在UI客户端和SQL数据库之间完成了一个大约16层的项目。 (我们有REST服务,协调层,混合数据库,你可以为它命名。专门针对部署挑战。)

所有这些图层的好处是

  • 测试变得相当容易,因为每个层只做一件事
  • 扩展是可行的,特别是如果您将图层设计为无状态:那么您可以将它们组合在一起并轻松部署到单独的框中
  • 让大量开发人员同时工作是可行的,只要你们彼此保持联系
  • 更改(通常)仅限于代码中的一个层

语言集成查询LINQ也非常有用,因为它可以抽象出使用持久层的大部分难点。例如

  • 类似SQL的语法直接映射到SQL数据库表或视图
  • 使用更复杂的非关系数据(如XML文件)非常简单

如果没有LINQ开发,持久层总是重复的,从来都不是一件好事。