企业库5.0是最新的企业库,最主要的变化之一是实例化和管理对象生命周期的全依赖注入的实现,它是企业库对象的创建在整个库中保持一致。能够使用不同的依赖注入容器。Unity是默认的依赖注入容器。这个版本还增加了应用模块数,另外这个版本能够使用vs2008和vs2010,以及.net框架4.0和包含sp1的3.5。
     主要变化:
Unity和对象生成器的整合
     在这个版本中,用于创建对象的基本技术是一个单一的依赖注入容器,默认的是Unity。你可以使用容器生成企业库对象的实例并注入到其他的对象。 企业库提供一个标准的接口从Unity容器中来获得定义在企业库配置中的对象的实例,如SqlDatabase或LogWriter.另外,注入友好的实例门面处理静态门面之外是有效的,因为静态门面不能用注入,但是为了向后兼容以前的版本而存在。在本版本中的示例中都是用依赖注入,但是以前版本中是用的静态工厂类和静态门面在这个版本中还是支持的。对象生成器,一个低版本的依赖注入机制在这个版本中被归入Unity中,在项目中不再需要单独引用对象生成器集。
      支持Unity容器,必须引用一个被包含在企业库中的Microsoft.Practices.ServiceLocation程序集。如果要使用一个第3方的依赖注入容器,必须直接实现IServiceLocator接口或者通过适配器实现。
               

影响所有模块的变化:
1.在企业库中主要修正是使用依赖注入机制。所用的应用模块以及核心系统都是用依赖注入机制,并使用Unity作为默认的依赖注入容器,来创建和管理企业库对象。
2,自主容器的实现通过实现Common Service Locator项目提供的 IServiceLocator 接口来完成。
3,由于错误配置引发的错误将提供更多有用的错误信息。
4.配置系统公开了一个 fluent接口,用来为单个对象或整个应用创建和填充配置源。fluent API使得为各种情景创建配置源更加容易。
5.ConfigurationView类被删除.
6.一些配置元素有默认值,可能不同于以前版本的隐式默认值.
7.企业库现在允许你通过另一个配置文件合成一个混合配置文件.
8.可以可通过不同的配置文件读取不同的配置信息.
9.企业库不支持XAML浏览器应用程序(XBAP).
10.WmiEnabled标志为了像前兼容仍然存在企业库中,但是在5.0中是被忽略的,而且将来会被删除.
11.改进式的安装允许你只安装部分应用模块及配置工具.
12.在以前版本中要做统一集成,必须添加核心企业库的扩展和每个模块的扩展。现在如果你只需要直接访问容器,那么只有核心扩展是必须的。单独模块将自动支持。
旧的功能为了保持像前兼容仍然保留,但已经不起作用。
13.FileConfigurationSource.Save 的签名已经改变,参数由3个变为2个。
14.快速入门不再包含在主安装程序中。

Breaking变化:
1.企业库现在抛出了一个配置错误ActivationException,之前是System.Configuration.ConfigurationErrorsException。这包括试着解决没有配置信息错误的一个实例提供者。
2.以前版本在获取应用模块错误时抛出BuildFailedException错误,现在对于所有的应用模块都抛出ActivationException
3 .之前的版本,在讲一个空源传到容器来调用容器的时候,会抛出ArgumentNullException,现在抛出NullReferenceException
4.ObjectBuilder2不再是一个单独的程序集,而是集成到了Unity集合中,在项目中也不需要引用ObjectBuilder2.dll。

5。WMI支持已经从企业库中删除,除了在logging模块中的WMI跟踪监听器。
6,如果你没有关闭DbDataReader,可能会导致随机的、很难在您的代码中找到的错误,尤其是当你正在一个由TransactionScope上下文创建的隐式事务下操作时。
你必须始终确保您的应用程序及时关闭DbDataReader,无论是明确的DbDataReader.Close方法关闭或是逼迫DbDataReader释放。
7。如果你使用 validator 特性必须引用 System.ComponentModel.DataAnnotations程序集。
8。为FileConfigurationSource.Save方法签名已更改。该方法有两个参数,而不是3个参数
9, Microsoft.Practices.EnterpriseLibrary.Configuration.Design.dll集合的功能和其他设计时集合被一个新的集合Microsoft.Practices.EnterpriseLibrary.Configuration.DesignTime.dll代替。
10,性能计数器异常从PolicyInjection.CallHandlers移到 PolicyInjection 程序集。
11。包含在Policy Injection Application Block中的CachingCallHandler有未处理的安全漏洞,已经从Policy Injection Application Block中移除。

配置工具的改变:
1.新的企业拥有一个新的GUI库和一个元数据驱动的可扩展性模。
2.支持向导
3。新的类型选择。
4.不支持对依赖策略的Environmental Overrides 。日志模块处理Categories。
缓存模块变化:
1.缓存清除已被完全重写的性能优化
数据库访问模块:
1。ExecuteReader, ExecuteXmlReader, ExecuteScalar, and ExecuteNonQuery方法具有异步版本。
2.包含了很多新的方法和类允许你提取数据作为对象序列。例如在合适的时候使用客户端查询技术,如LINQ.
3.存在的方法ExecuteReader和新的方法BeginExecuteReader不接收CommandBehavior 参数。默认的当调用这些方法的时候这些方法
会自动设置CommandBehavior 属性到reder中用来关闭连接直到指定一个事务。

异常处理模块:
1.日志异常处理重新使用日志模块的Log Writer and Trace Listeners 。这在之前版本中不是默认设置。
2.增加一个功能,通过ExceptionManager.Process 方法接收一个默认值并返回一个值。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐