【问题标题】:Which is the best for a 3-tier architecture; Linq to SQL or Nhibernate?哪一个最适合 3 层架构; Linq to SQL 还是 Nhibernate?
【发布时间】:2009-11-14 13:38:42
【问题描述】:

这是 3 层拱门的最佳解决方案。 Linq to SQL 还是 Nhibernate? 具体来说,我会将 2 层架构的系统升级为 3 层架构?

编辑:我在哪里可以找到两者的好教程或视频?

【问题讨论】:

标签: asp.net linq nhibernate linq-to-sql


【解决方案1】:

如果您只需要支持一个数据库平台并且已经拥有您的数据库模型,那么 LINQ-to-SQL 很有意义。

不过,您也可以使用 FluentNHibernate 为您生成映射。

如果支持多个数据库以及对映射的精细和灵活控制很重要,请使用 NHibernate。否则,LINQ-to-SQL 就可以了。至少现在避免像瘟疫这样的 LINQ-to-Entities(v4.0 可能会有所改善)。

【讨论】:

【解决方案2】:

如果数据库已经存在,我将使用 linq 到 sql(只需通过拖放从数据库生成映射)我会选择 Nhibernate 的其他方式(帮助您根据您的模型生成数据库)

【讨论】:

    【解决方案3】:

    我不知道 .NET 是否同样如此,但如果我用 Java 和 Spring 解决这个问题,我会从一个隐藏实现选择的接口开始。客户不需要知道是 LINQ 还是 NHibernate 在做这项工作。只要两者都实现了商定的接口,Spring 将允许我随意注入一个实现或另一个,而不会打扰客户端。

    【讨论】:

      【解决方案4】:

      如果您的应用程序只需要基本功能,我会说使用 LINQ to SQL,否则使用 NHibernate。我知道一些 LINQ,我正在考虑学习 NHibernate,据我所知,NHibernate 是一个更好的长期解决方案,因为它比 L2S(与数据库紧密耦合)更抽象,但 L2S 更容易选择并提供更快的解决方案。

      在不了解您的具体问题的情况下,我会说使用 NHibernate,因为它比 Linq to Sql 更灵活,更容易响应变化,尽管它的“企业”学习曲线稍微多一些。对于一个好的 NHibernate 资源,我建议查看Steve Bohlen's "Summer of NHibernate" series

      【讨论】:

        【解决方案5】:

        什么是 3tier 的最佳解决方案,我不会说。没有千篇一律的响应,您选择的每个框架/库都会有所取舍。要做出此 ORM 决策,您需要查看您的业务需求并确定众多可能性中的哪一种最能帮助您以及时和可维护的方式实现我们的目标。您的域模型有多复杂,可以通过 linq to sql 充分描述它们。

        【讨论】:

          【解决方案6】:

          我没有使用过 Nhibernate,但我知道微软已经确认,虽然它会在未来支持 LINQ to SQL,但他们不会在该特定技术上进行更多开发。

          【讨论】:

          • 您可能想为“不再开发”声明添加一个链接,我还没有看到任何这样的说法。例如,这里所有的微软链接都说 Linq to SQL 将被进化stackoverflow.com/questions/252683/is-linq-to-sql-doa
          • 马克,我找不到链接,但看到另一个帖子,其中一个 MS 家伙出来直截了当地说。与此同时,这里有来自 David Hayden 的一个很好的分析:codebetter.com/blogs/david.hayden/archive/2008/10/31/… 这是最近的一些 - 观察他如何在 cmets 部分中不断回避这个问题:damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40 重点是 EF,时期。
          • @MarkJ,除了明确他们对 LinqToSql 的未来计划和承诺外,微软一直都在做。我最好的理解是,只要 LinqToSql 是交付的 .NET 框架的一部分,他们将继续支持它,但未来真正的 ORM 功能开发将集中在 EntityFramework 上。然而,微软没有一条明确的信息可以传达这一点。
          猜你喜欢
          • 2011-10-02
          • 1970-01-01
          • 1970-01-01
          • 2010-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-22
          • 2016-05-19
          相关资源
          最近更新 更多