【问题标题】:Advantages and disadvantages of using Enterprise Library使用企业库的优缺点
【发布时间】:2018-10-16 16:03:14
【问题描述】:

我刚刚开始一个项目,由于这个项目是个人的,我想知道使用 Enterprise Library 有什么好处?我们在办公室的几个项目中使用版本 2,但我不太确定(除了良好实践之外)它的优势,尤其是在数据库组件中。有什么建议吗?谢谢

【问题讨论】:

标签: c# .net enterprise-library


【解决方案1】:

对于数据库应用程序块,主要优点是它可以更轻松地生成与数据库无关的代码。开发人员主要与通用数据库和 DbCommand 对象交互,而不是 SqlConnection、SqlCommand 等。因此,切换到不同的数据库(即 Oracle)变得更加可行。根据您的业务需求,这可能是一个明显的优势。 EntLib 还温和地鼓励开发人员将 DbParameter 用于查询参数,从而降低 SQL 注入攻击的风险。

正如另一张海报提到的那样,数据应用程序块比直接的 ADO.NET 类更高级别,因此它往往需要更少的代码行来执行相同的操作。

在我看来,数据、异常和日志记录块是最有用的。 Exception 和 Logging 一起使得将异常(duh)记录到许多地方和以多种格式变得非常容易。例如,他们可以将整个异常日志条目(包括堆栈跟踪)放在 Windows 事件日志中,从而相对容易诊断问题。

EntLib 的一个缺点是一些应用程序块将相当多的逻辑放入配置文件中。所以你的逻辑更加分散;其中一些在代码中,一些在配置文件中。好处是可以在构建后甚至部署后修改配置。

【讨论】:

  • 只是出于好奇,您花了多长时间才启动并运行异常块? MS的老医生说“半天”的学习曲线,你的经验是什么?
  • M$ 的说法并非没有道理,如果您的目标是对如何设置异常块有一个基本的了解(配置控制台在这里非常宝贵)。使用这个应用程序块(实际上,所有应用程序块)确实需要更改代码,所以 YMMV。
  • 是否可以通过数据块(例如 MySql)或框架中包含的内容(Oracle/SQL Server)使用不同的提供程序?
  • Gustavo,可以使用不同的提供者。我自己也使用 Firebird 和 EntLib。
  • “数据库无关代码”是一个基于 FUD 的论点,我很想看到一个改变了数据库提供者的项目。
【解决方案2】:

大约 2 年前,作为我们产品线重新设计的一部分,我的团队对 Microsoft Patterns and Practices Enterprise Library 进行了评估。我们最终使用的唯一部分是数据库块。我们甚至将它封装在一些我们可以实例化的类中,这样我们就可以模拟 DAL 进行单元测试; Microsoft 代码块使用静态调用进行数据库工作。我不确定微软是否已将任何 LINQtoSQL 或实体框架的东西集成到 db 块中。如果它不利用其中之一,我现在会犹豫是否使用 db 块。

就日志记录而言,我们发现Log4Net 是一种比 Microsoft 日志记录更强大、更灵活的解决方案。我们使用它来满足我们的日志记录需求。

对于异常处理,我们推出了自己的。 Microsoft 代码没有处理我们想要处理的远程处理案例,并且由于我们使用的是第 3 方日志记录框架,因此编写我们自己的异常库并与之集成更有意义。我发现将日志框架某种程度的集成到异常框架中是非常有用的。我们围绕 Log4Net 编写了一些轻量级包装类,并从异常日志中调用它们,因此我们没有引入对 Log4Net 的依赖。

【讨论】:

    【解决方案3】:

    除了 Paul 提到的有关数据应用程序块的项目之外,我还想指出,根据我的经验,数据应用程序块还提供了一种更快的方法来编写所需的数据库代码,并使用现有的帮助程序。我使用它是因为它具有一致的外观/感觉和开发速度。

    【讨论】:

    • MS 设计 ADO.NET,然后他们在其上设计应用程序数据块并说“使用它”,这对我来说似乎很奇怪,这就是成功的项目所做的,而无需说 ADO.NET 是太麻烦了。
    【解决方案4】:

    无法为我使用 EF 的选择取决于我的环境中的约束条件,这些约束要求应用程序每小时处理数百万个事务。这是电信环境中的处理量。

    是否使用 EF 完全取决于您的环境和选择(只要您知道所选技术的局限性)。如果您的系统不需要如此高的负载,我预计您在使用 EF 时不会遇到任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 2010-12-25
      • 2012-09-28
      • 1970-01-01
      相关资源
      最近更新 更多