我刚开始一个项目,因为这个项目是个人的,我想知道使用企业库有什么好处?我们在办公室的几个项目中使用版本2,但我不太确定(除了好的做法)它的优点,特别是在数据库组件中。有什么建议?感谢
答案 0 :(得分:13)
对于数据库应用程序块,主要优点是可以更轻松地生成与数据库无关的代码。开发人员主要与通用数据库和DbCommand对象进行交互,而不是例如SqlConnection,SqlCommand等。因此,切换到不同的数据库(即Oracle)变得更加可行。根据您的业务需求,这可能是一个明确的优势。 EntLib还向开发人员提出了使用DbParameter查询参数的方法,这降低了SQL注入攻击的风险。
正如另一张海报所提到的,数据应用程序块比直接的ADO.NET类更高级,因此它往往需要更少的代码行来完成同样的事情。
从我的角度来看,数据,异常和日志记录块是最有用的。异常和日志记录使得很容易将异常(duh)记录到多个地方和多种格式。例如,他们可以将整个异常日志条目(包括堆栈跟踪)放在Windows事件日志中,从而使诊断问题变得相对容易。
EntLib的一个缺点是某些应用程序块会在配置文件中放置相当多的逻辑。所以你的逻辑更加分散;其中一些是代码,一些是配置文件。好处是可以在构建后甚至部署后修改配置。
答案 1 :(得分:12)
我的团队在约2年前对Microsoft Patterns and Practices Enterprise Library进行了评估,作为我们产品线重新设计的一部分。我们最终使用的唯一部分是数据库块。我们甚至在一些我们可以实例化的类中包装它,所以我们可以模拟DAL进行单元测试; Microsoft代码块使用静态调用进行数据库工作。我不确定Microsoft是否已将任何LINQtoSQL或Entity Framework内容集成到db块中。如果它没有利用其中一个,我现在会犹豫是否使用db块。
就日志记录而言,我们发现Log4Net是Microsoft日志记录中更强大,更灵活的解决方案。为了满足我们的日志需求,我们选择了它。
对于异常处理,我们推出了自己的。 Microsoft代码没有处理我们想要处理的远程处理案例,而且由于我们使用的是第三方日志记录框架,因此编写我们自己的异常库并与之集成更有意义。我发现将日志框架集成到异常框架中的某种程度非常有用。我们围绕Log4Net编写了一些轻量级的包装类,并从异常日志记录中调用了这些类,因此我们没有在Log4Net上引入依赖项。
答案 2 :(得分:3)
除了Paul提到的关于数据应用程序块的项目之外,我还想指出,根据我的经验,数据应用程序块aslo提供了一种更快速的方法来编写所需的数据库代码,并且存在帮助程序。我用它来保持一致的外观/感觉和发展速度。
答案 3 :(得分:0)
我无法使用EF的选择受我在环境中的约束所约束,该约束要求应用程序每小时处理数百万个事务。这是电信环境下的处理量。
是否使用EF完全取决于您的环境和选择(只要您知道所选技术的局限性)。如果您的系统不需要如此高的负载,那么我不认为您在使用EF时会遇到任何问题。