【问题标题】:The benefits of a 3-tier architecture?三层架构的好处?
【发布时间】:2010-12-30 00:54:51
【问题描述】:

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

【问题讨论】:

  • 也许一旦您真正编写了一些重要的应用程序,您就会意识到 n 层的好处。
  • 如果您在谷歌上搜索答案,您将获得该问题的 100 万个答案。
  • 我已经编写了许多 3 层应用程序,但由于 LINQ 的紧急情况,您将其颠倒过来。那么为什么它的价值呢? 3 层中的一些代码有时看起来有些乏味和重复。有时我觉得挑战现状比将一切都视为“圣杯”更好,因为事情应该如此。有很多只有 1 层或 2 层的应用程序,它们因此而无用吗?使用层数不会自动使您的应用变好?

标签: linq data-access-layer


【解决方案1】:

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

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

【讨论】:

  • 确实如此。通常,你从失败中学到的东西比从成功中学到的更多。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    与大多数工程领域一样,开发或架构从来没有完美的万能解决方案。 n 层架构也是如此。

    例如,相当多的应用程序在一层或两层架构下运行得非常好。例如,Microsoft Word 作为单层系统就做得很好,谢谢。

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

    所有这些层的好处是

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

    LINQ(语言集成查询)也确实很有帮助,因为它可以抽象出使用持久层的许多困难部分。比如

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2013-06-06
      • 2012-02-27
      相关资源
      最近更新 更多