Linq 三层体系结构的好处是什么?

Linq 三层体系结构的好处是什么?,linq,data-access-layer,Linq,Data Access Layer,我并不完全相信三层体系结构的好处。那么,为什么会出现LINQ这种更轻的数据访问方法呢?如有任何意见,将不胜感激 在你意识到那些框架和模式所解决的问题之前,你需要以一种天真的方式去做,然后失败 发生在我身上的事情很多。SVN分支看起来像是一种杂乱无章的做事方式,直到有一天我希望我在最后5次提交之前就已经分支了。在我开悟之前,C++模板似乎是无用的和令人困惑的;现在我经常使用它们。每个J2EE特性在任何人看来都是无用的膨胀,除非你真的构建了一个足够大的应用程序并且出现了问题;那么它们可能正是你所需要

我并不完全相信三层体系结构的好处。那么,为什么会出现LINQ这种更轻的数据访问方法呢?如有任何意见,将不胜感激

在你意识到那些框架和模式所解决的问题之前,你需要以一种天真的方式去做,然后失败


发生在我身上的事情很多。SVN分支看起来像是一种杂乱无章的做事方式,直到有一天我希望我在最后5次提交之前就已经分支了。在我开悟之前,C++模板似乎是无用的和令人困惑的;现在我经常使用它们。每个J2EE特性在任何人看来都是无用的膨胀,除非你真的构建了一个足够大的应用程序并且出现了问题;那么它们可能正是你所需要的。(因此,“要求”您使用它们是一个缺陷)

您需要以天真的方式进行操作,并在意识到这些框架和模式解决的问题之前失败


发生在我身上的事情很多。SVN分支看起来像是一种杂乱无章的做事方式,直到有一天我希望我在最后5次提交之前就已经分支了。在我开悟之前,C++模板似乎是无用的和令人困惑的;现在我经常使用它们。每个J2EE特性在任何人看来都是无用的膨胀,除非你真的构建了一个足够大的应用程序并且出现了问题;那么它们可能正是你所需要的。(因此,“要求”您使用它们是一个缺陷)

n层应用程序的主要好处之一(当然比我在这里提到的要多得多)是它带来的关注点分离。如果应用程序的结构使数据访问的责任由数据访问层承担(
LINQ2SQL
就是一个很好的例子),验证和其他业务逻辑在一个或多个其他层中,表示在另一个层中,等等,那么您可以在中更改详细信息,甚至替换,无需重新写入应用程序的其余部分,即可创建任意一层


另一方面,如果您选择不实现n层方法,您会很快注意到,例如,更改一个数据库表的名称将要求您遍历整个应用程序(每行代码),以搜索需要更新的SQL语句。在n层应用程序中(如果您做得很好),您只需在代码中更改一次表名。

n层应用程序的主要好处之一(当然比我在这里提到的要多得多)是它带来的关注点分离。如果应用程序的结构使数据访问的责任由数据访问层承担(
LINQ2SQL
就是一个很好的例子),验证和其他业务逻辑在一个或多个其他层中,表示在另一个层中,等等,那么您可以在中更改详细信息,甚至替换,无需重新写入应用程序的其余部分,即可创建任意一层


另一方面,如果您选择不实现n层方法,您会很快注意到,例如,更改一个数据库表的名称将要求您遍历整个应用程序(每行代码),以搜索需要更新的SQL语句。在n层应用程序中(如果您做得很好),您只需在代码中更改一次表名。

与大多数工程领域一样,对于开发或体系结构,从来没有一个完美的一刀切的解决方案。n层体系结构也是如此

例如,相当多的应用程序可以作为一层或两层体系结构很好地运行。例如,作为一个单层系统,Microsoft Word做得很好,谢谢

大多数业务应用程序已经开始使用层(与层不同:层是虚拟的,层是物理的),因为它使在一个地方拥有表示逻辑、在另一个地方拥有业务逻辑和在其他地方拥有持久性逻辑变得更加容易。取决于应用程序是否有更多的层也是有意义的:我最近完成了一个项目,在UI客户端和SQL数据库之间有大约16层。(我们有REST服务、协调层、混合数据库等等,这是一个相当大的部署挑战。)

所有这些图层的优点是

  • 测试变得相当容易,因为每个层只做一件事
  • 扩展是可行的,特别是如果您将层设计为无状态:那么您可以将它们组合在一起,并非常轻松地部署到单独的框中
  • 有很多开发人员同时工作是可行的,只要你们彼此保持沟通
  • 更改(通常)限于代码中的一个层
LINQ,语言集成查询,也确实有帮助,因为它可以抽象出处理持久层的许多困难部分。比如说

  • 类似SQL的语法相当直接地映射到SQL数据库表或视图
  • 处理更复杂的非关系数据(如XML文件)变得非常简单

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

与大多数工程领域一样,对于开发或架构,从来没有一个完美的一刀切的解决方案。n层体系结构也是如此

例如,相当多的应用程序可以作为一层或两层体系结构很好地运行。例如,作为一个单层系统,Microsoft Word做得很好,谢谢

大多数业务应用程序已经开始使用层(与层不同:层是虚拟的,层是物理的),因为它使在一个地方拥有表示逻辑、在另一个地方拥有业务逻辑和在其他地方拥有持久性逻辑变得更加容易。取决于应用程序是否有更多的层也是有意义的:我最近完成了一个项目,在UI客户端和SQL数据库之间有大约16层。(我们有