我并不完全相信3层架构的好处。那么,为什么LINQ出现了,这是一种更轻便的数据访问方法?任何输入将不胜感激。
答案 0 :(得分:6)
n层应用程序的主要好处之一(当然比我在这里提到的要多得多)是它带来的关注点分离。如果你构建你的应用程序,那么数据访问的责任是在数据访问层中保存(LINQ2SQL
是一个非常好的例子),验证和一个或多个其他层中的其他业务逻辑,在还有另外一个,您可以更改任何一个层中的细节,甚至替换它,而无需重新编写其余的应用程序。
另一方面,如果您选择 not 来实现n层方法,您会很快注意到,例如更改单个数据库表的名称将需要您通过整个应用程序 - 每一行代码 - 用于搜索需要更新的SQL语句。在n层应用程序中(如果您已完成任务),您只需在代码中更改一次的表名。
答案 1 :(得分:5)
在你意识到这些框架和模式解决的问题之前,你需要以天真的方式做到并失败。
许多事情发生在我身上。 SVN分支看起来像一个无组织的做事方式,直到有一天我希望我在最近的5次提交之前分支。在我开悟之前,C ++模板似乎毫无用处且令人困惑;现在我经常使用它们。对于任何人来说,每个J2EE功能看起来都会毫无用处,直到你真正构建一个足够大且有问题的应用程序为止;那么它们可能就是你所需要的。 (因此,“要求”使用它们是一个缺陷)
答案 2 :(得分:4)
与大多数工程领域一样,从来没有一个完美的“一刀切”的开发或架构解决方案。所以它采用n层架构。
例如,相当多的应用程序作为单层或双层体系结构运行良好。例如,Microsoft Word作为一个单层系统,非常好,谢谢你。
大多数业务应用程序已经开始使用层(与层不同:层是虚拟的,层是物理的)因为它使生活更容易在一个地方具有表示逻辑,在另一个地方具有业务逻辑,和其他地方的持久性逻辑。根据应用程序来说,它还可以有更多层次:我最近在UI客户端和SQL数据库之间完成了一个大约16层的项目。 (我们有REST服务,协调层,混合数据库,你可以为它命名。专门针对部署挑战。)
所有这些图层的好处是
语言集成查询LINQ也非常有用,因为它可以抽象出使用持久层的大部分难点。例如
如果没有LINQ开发,持久层总是重复的,从来都不是一件好事。