Enterprise Library简介
Enterprise Library 4.0 – May 2008是Microsoft patterns & practices Enterprise Library的新的版本,Enterprise Library有一系列的应用程序块及一个核心的特性(诸如对象创建、配置文件机制)组成,所有的这些都是可重用的组件,他们被设计来帮助开发人员应对常见的企业开发所面临的挑战,4.0这个版本还添加了一个新的应用程序块- Unity Application Block,这个新的应用程序块为对象产生和依赖注入提供了容器,除此以外4.0还添加了一些其他的新特性。
Enterprise Library的优势
应用程序块帮助开发者解决从一个解决方案到另一个解决方案迁移时所面临的各种通用问题,他们与微软推荐使用的.NET平台能够很好的结合,开发人员可以快速和容易的将他们加入到.NET的应用程序中去,例如:数据访问应用程序块提供了快速使用ADO.NET特性的方法。在某些情况下,应用程序块也通过支持基础类库间接的添加了描述性的功能。
Enterprise Library的目标
Enterprise Library是一系列应用程序块和特定服务的集合,它为开发人员开发综合运用和企业级应用程序提供了有效的解决方案,这些应用程序需要大量的配置和与其他的应用程序或系统相互依赖,另外,这些应用程序通常需要高效、安全、稳定的运行,此时Enterprise Library就是你的应用程序的一个不错的选择。
具体来说,Enterprise Library的目标如下:
一致性:所有的Enterprise Library应用程序块都采用一致的设计模式和执行方式
扩展性:所有的应用程序块都包含了可扩展的接口,它允许开发人员通过添加他们自己的代码来自定义行为。
易用性:Enterprise Library提供了许多易用性的改进,包括了图形化的配置工具,更加简单的安装过程和更加清楚和完整的文档与源代码。
良好的结合:Enterprise Library的各种应用程序块可以很好的在一起工作,当然也允许使用单个的应用程序块。
关于这个版本的Enterprise Library
这个版本的Enterprise Library包含了一个新的应用程序块(The Unity Application Block).Unity是一个轻量级的、可扩展的依赖注入容器,容器靠使用构造器、属性和方法的方式来实现注入,你可以单独的使用Unity而不需要安装Enterprise Library,Unity为Enterprise Library的对象产生提供了一种新的方式。
在已有的应用程序块中也添加进了一些新的功能,下面的部分将讨论这些功能和就早期版本的改变,另外,这个版本也很好的与VS2008、WMI2.0、.NET3.5兼容。
这个话题包含了下面的一些内容:
这个版本的内容
Unity Application Block的集成
改变对应用程序块的影响
缓存应用程序块的改进
加密应用程序块的改进
数据访问应用程序块的改进
异常处理应用程序块的改进
日志应用程序块的改进
策略注入应用程序块的改进
安全应用程序块的改进
验证应用程序块的改进
这个Enterprise Library4.0版本的内容如下:
二进制:Enterprise Library4.0对所有的代码进行了预编译和强命名,更多信息参见:Using the Signed Binary Assemblies
源代码:Enterprise Library4.0包含了所有应用程序块的源代码、配置工具、单元测试和快速入门的实例
单元测试:Enterprise Library4.0可以在应用程序块被开发的时候建立单元测试,更多信息参见:Unit Tests
快速入门实例:快速入门实例是简单的容易理解的说明了应用程序块的特性,每一个应用程序块都包含了一个或者多个快速使用实例。
文档:Enterprise Library包含了可以被Visual Studio Help系统查看的文档,这个文档包含了怎样去使用Enterprise Library的指南。
下面的两个部分已经从Enterprise Library4.0中被移除:
软件工厂应用程序块
强命名指南
上面的两者适用于Enterprise Library以外的许多情况,因此,它可以从Enterprise Library以外的地方被下载和安装,要下载他们可参见:patterns & practices community site on CodePlex.
要获得Enterprise Library的应用程序块、配置和其他工具、核心特性,可以参见Contents of Enterprise Library in the Getting Started section of this guidance.
在Enterprise Library4.0中,你能够使用Unity Application Block去创建Enterprise Library的对象,和注入对象到其他的其他的对象当中,Enterprise Library包含了一个设置类,它允许你获取定义在Enterprise Library configuration中的对象,诸如SqlDatabase或者CacheManager的实例。
使用Unity依赖注入的容器可以简化你的代码,更多信息参见: Creating Objects Using the Unity Application Block
3.改进对应用程序块带来的影响
Enterprise Library4.0优化了对.NET WMI2.0API的支持,它优化了性能,使代码更易于管理,Enterprise Library内置的类,诸如databases, trace listeners, and cache backing stores很容易的被曝露与WMI,你能够很容易的请求和更新它,如果你有权限去更新WMI的值,那么你就能使这些类反射回易于管理的配置代码中以更新配置信息来更新你的应用程序,版本的改变没有对原有的配置文件内容有影响,但一些可能采用组策略的方式被重写了。
Enterprise Library4.0允许在所有assemblies上使用APTCA,这意味你能够在部分授权的情况下从一个正在运行的应用程序中调用Enterprise Library的方法和应用程序块。
应用程序块已经被托管,如果需要的话,开发人员可以使用他们自己方法去替换CacheManager类,这对应用程序块的API和现有的CacheManager不会有影响,开发人员可以使用配置工具去安装和配置一个自定义的cache管理器,这个自定义的类需要实现ICacheManager接口,并且在类定义上添加下面所示的属性:[ConfigurationElementType(typeof(CustomCacheManagerData))]
应用程序块添加了几个新的应用程序块性能计数器,你可以使用它去监视执行和操作
应用程序块添加了几个新的应用程序块性能计数器,你可以使用它去监视执行和操作
应用程序块添加了几个新的应用程序块性能计数器,你可以使用它去监视执行和操作
日志管理器有了一个新的Boolean类型的属性UserDefaultLogger,当被设置为True时,日志管理器会将每一个日志事件与异常写入同一个文件当中,当被设置为False时,日志事件和异常会被写入到不同的文件中去。
应用程序块添加了几个新的应用程序块性能计数器,你可以使用它去监视执行和操作
- 应用程序块现在运行你去获取每一个监听器的过滤器属性的值,这个属性可以将它所监听到的消息分级处理,这个属性的有效的值有:All、Off、Critical(危急的)、Error、Warning、Information、Verbose、Activity Tracing。
- 应用程序块现在运行你去获取RollingFlatFileTraceListener,它可以在每天半夜的时候启动一个新的文件,为了实现这个行为,你可以设置RollingFlatFileTraceListener的属性RollInterval的值为Midnight。
- 日志文件现在可以支持使用环境变量的的命名,the Flat File Trace Listener, Rolling Flat File Trace Listener, 和 XML Trace Listener的Filename属性值,你可以使用环境变量来赋值,例如:%WINDIR%, %TEMP%, 和 %USERPROFILE%
- 应用程序块添加了几个新的应用程序块性能计数器,你可以使用它去监视执行和操作
当你使用验证处理的时候,你可以使用Object Validator去验证方法里面的单个参数,代码如下所示:
[ValidationCallHandler]
public void SomeMethod(
[RegexValidator("...")] String x,
[ObjectValidator("RulesetName")] String y)
{
...
}
现在所有的应用程序块都提供了一个叫Order的属性,你可以使用它去获取在一系列策略处理过程中的处理顺序,默认情况下为0,这意味着没有在一系列策略处理过程中的各个处理过程没有先后顺序,要指定顺序,你可以为每一个处理设置Order属性,属性值从1开始,如果你为在同一个策略中的不容处理设置了同样的Order属性值,应用程序块将添加他们到策略处理系列中。
- 应用程序块添加了几个新的应用程序块性能计数器,你可以使用它去监视执行和操作
11. Changes to the Validation Application Block
验证应用程序块的改进
可以使用多种方式来设置验证对象,Validation的验证方法现在接受多种规则设置名称:这意味着你可以设置不止一种的验证方式,例如,如果你有两个验证规则RuleSetA和RuleSetB在应用程序块的配置文件中被定义,那么你可以使用下面的方式来接受两种验证规则:
ValidationResults results = customerValidator.Validate(myCustomer, "RuleSetA", "RuleSetB");
Object Validator将验证规则作为一个参数接收,在你需要接受一个参数来验证的时候,这往往是非常有用的。代码如下所示:
public void SomeMethod(
[RegexValidator("...")] String x,
[ObjectValidator("RulesetName")] String y)
{
...
}
目标对象
This guidance is intended for software architects and software developers. To get the most benefit from this guidance, you should have an understanding of the following technologies:
- Microsoft Visual C# or Microsoft Visual Basic .NET
- Microsoft .NET Framework
这些文章提供给软件设计书和开发人员,为了更好的理解,你需要对一下的知识有一定的了解:
- Microsoft Visual C# or Microsoft Visual Basic .NET
-
Microsoft .NET Framework
系统要求
除了Unity应用程序块、Enterprise Library核心特性和配置工具以外,最低的系统要求如下:
- Microsoft Windows XP Professional, Windows Server 2003, Windows Server 2008, or Windows Vista操作系统
- Microsoft .NET Framework 3.5或更高版本
-
Microsoft Visual Studio 2008 development system (any of the following editions):
- Standard Edition版本
- Professional Edition版本
- Team Edition for Software Developers版本
- Team Edition for Software Testers版本
- Team Edition for Software Architects版本
- Team Suite版本