Enterprise Library简介 --- Enterprise Library - January 2006 翻译 第一部分
基于.NET Framework 2.0的企业类库2.0版被重新设计,并且与1.0版有所不同。主要的变化是2.0版的企业类库引用了.NET Framework 2.0。例如,2.0版的配置信息是基于.NET框架的System.Configuration命名空间。. 日志模块使用System.Diagnostics命名空间。然而,大多数应用程序模块的变化都是在程序集内的。. 一般来说,公有的API与之前的版本是相同的。2.0版本的任何变化都会在相应的应用程序模块说明。
下一部分显示了新版本的主要变化。
影响所有应用程序模块的变化体现在以下几个方面:
·2.0版的企业类库没有了配置模块。大多数的配置功能已经包涵在.NET Framework 2.0的System.Configuration命名空间,所有的应用程序模块都会直接调用这个命名空间。. 企业类库的Core项目仍然包含一些配置信息的helper类,例如:设计时组件和企业类库配置控制台。
·跟1.0的企业类库一样,所有的应用程序模块都使用性能计数器、Windows管理规范(WMI)和日志等信息监视子系统,2.0版的这些子系统性能都有很大的提高。现在你可以使用企业类库的可视化配置工具来配置应用哪一种监视模式。默认地,这些监视是不可用的,你可以使用xcopy指令在低权限环境(例如ASP.NET)下来部署。
·2.0版的企业类库包含一个叫做ObjectBuilder的新子系统,它位于Microsoft.Practices.ObjectBuilder命名空间下。ObjectBuilder子系统为创建object实例提供了所有的功能,同时也提供了高度的伸缩性。. 企业类库使用ObjectBuilder子系统来注入配置数据到应用程序模块类和连接类。不管有没有配置文件,ObjectBuilder子系统的使用使得应用程序模块的使用变得更加简单。然而,使用企业类库时你不必了解objectbuilder子系统的原理。
个别应用程序模块的变化
在以下部分说明了个别应用程序模块的主要变化,包括:数据访问模块、日志模块和安全模块。
加密模块.
该模块现在把每个key存储在一个单独的文件,可以使用数据保护API(DPAPI)加密key文件。
数据访问模块
企业类库的数据访问模块包含以下变化:
·数据访问模块使得配置连接字符串非常容易,但在2.0版中使用其它方法会变得更加容易。例如,你可以基于业务逻辑动态的创建一个连接字符串,并且使用这个连接字符串来创建Database类。
·数据访问模块使用新的ADO.NET〈connectionStrings〉配置节,这允许连接字符串在应用程序模块及其他使用这部分的.NET类共享。.
·现在通过使用GenericDatabase类,你可以使用任何ADO.NET2.0托管供应者的数据访问模块即使没有为那种数据库专门设计数据库驱动类。你仍然可以在不同的数据库实例之间创建数据库驱动类来提供增强的功能(比如参数的发现)和透明度。这个应用程序模块包含面向SQL Server和Oracle的数据库驱动类,你可以使用GenericDatabase类来访问OLE-DB and ODBC数据库。
日志模块.
该日志模块包含以下变化:
·为了使用System.Diagnostics命名空间的类日志模块已经被重新设计,比如TraceListener类和CorrelationManager类。值得注意的是1.0版的日志接收器已经被替代为监听器。. 日志模块包涵一系列跟踪监听器,你可以使用已经存在的.NET跟踪监听器或者第三方跟踪监听器。.
·日志类已经被一个 LogEntry 类实例取代。在1.0版的企业类库每个LonEntry实例只能有一个category。新的版本支持单一logentry实例是在多种的类别·因为类别用来筛选和布线LogEntry例图来不同的跟踪监听器,能够确定多种的类别重要的改善那伸缩性的那应用程序模块·.
·日志模块使用LogFilter类的实例依照在配置文件里配置的指定规则来阻止某些事件被记录,比如最小优先权或者特殊类别规则。. 现在,这些筛选器是可扩充的和可插入的,这意味着开发商可以编写他们的筛选器。另外,现在可以从应用程序的API来查询筛选器以便开发商可以减少数据收集的代价。
·在削除了distribution strategies的观念后应用程序模块的结构已经变得易懂了。现在跟踪监听器支持distribution strategies 提供的集中式消息队列和异步日志功能。
安全模块
1.0版提供的许多安全模块功能已经被删除因为在.NET Framework 2.0已经提供了相等的功能·. 特别地,为身份鉴定、角色判断和个性配置而提供的工厂模式、接口程序和供应者已经被删除,同样的功能已经被.NET框架的System.Web.Security.Membership和System.Web .Profile命名空间提供。. 相关文档为想使用这些新类的用户提供了移植向导,新的安全模块仍然包含为缓存授权和安全的工厂模式,接口程序和供应者。
企业类库的应用程序模块:
应用程序模块帮助解决开发者经常在不同的项目中遇到的同样问题,它们被用来封装微软公司建议的基于.NET应用程序的类库。另外,它们也可以快速的容易的被添加到基于.NET的应用程序。例如,数据访问模块提供了访问大多数频繁使用的ADO.NET 2.0的功能,使得开发效率提高。它也支持没有被类库直接支持的情况。
不同的应用程序有不同的需求,你不会发现每一个应用程序模块在每一个你建立的应用程序都是有用的。在使用应用程序模块之前你应该对你的应用程序需求和应用程序模块随着你对情况的深入理解如同你的经验的增长,你可以更改应用程序模块的配置而不用修改它的代码、重新编译或者重新部署。有一个很好的了解。
2.0版的企业类库包含以下通用的应用程序模块:
·缓存模块·使用这个模块开发者可以在他的应用程序实现一个局部缓存。
·加密模块·使用这个模块开发者可以在他的应用程序实现散列和对称的密码。
·数据访问模块·使用这个模块开发者可以在他的应用程序实现标准的数据库功能。
·异常处理模块·使用这个模块开发者和决策者可以为在整个应用程序产生的异常创建一个一致的策略。
·日志模块·使用这个模块开发者可以在他的应用程序包含标准的日志功能。
·安全模块·使用这个模块开发者可以在他的应用程序实现授权和安全的缓存功能。
企业类库也包含一组核心功能,包括配置,探测,和对象创建服务。这些功能被用于其它所有的应用程序模块。
企业类库的配置工具:
应用程序模块被设计成用于多种企业应用开发情况,这种设计方法允许你容易的配置一个应用程序模块以满足情况的需要。. 你可以容易的通过使用企业类库配置窗口来配置应用程序,为一个应用程序模块的主要功能和为每一个提供者类型定义配置节。
在一个特殊的情况使用配置节来配置一个应用程序模块有两个优点:
·不同的人可以在应用程序生命周期的不同时间配置一个应用程序模块。例如,一个开发者可以在应用开发期间配置一个提供者来访问一个特殊的数据库,而另一个系统管理员可以加密数据库连接字符串。
·你可以为越来越多的复杂形势更改应用程序模块的配置。例如,你可以使用默认的设置和提供者来初始化一个应用程序的配置。随着你对情况的深入理解如同你的经验的增长,你可以更改应用程序模块的配置而不用修改它的代码、重新编译或者重新部署。
企业类库包含一个称为企业类库配置控制台的可视化配置工具。用配置控制台你可以更改和验证应用程序模块配置而不用手工编辑XML配置文件。例如,有两个缓存模块的配置是为了确定是否使用后备存储和缓存多少数据项。配置控制台显示了这些配置并且提供了可更改的默认值。软件工程和多少数据项那缓存可以挂起。那配置控制显示器这些配置和供应缺省值那你可以更改。由于图形工具提供了可视化的配置,这意谓着你可以很容易的配置应用程序模块。
每一个应用程序模块都是可扩充的,这样开发者就可以实现(象征性的,这些被称作提供者)他们自己的特殊功能。例如,你可以为缓存模块自定义自己的后备存储功能,这些自定义的提供者可以在开发人员之间互用。配置控制台允许你选择自定义的后备存储器并把该信息写入相应的XML配置文件。这意谓着应用程序将使用自定义的后备存储器而不用改变任何代码也不用重新编译。
图表1说明了配置控制台的用户界面。
图表1配置控制台用户界面
编译并运行配置控制台
当你安装了企业类库,配置控制台源编码已经被包含在应用程序模块的源代码中。你必须编译一下配置控制台。执行BuildLibrary.bat的批处理文件来编译配置控制台。
配置控制台要求应用程序模块的程序集必须与配置控制台可执行程序(EntLibConfig.exe)或者全局程序集在同一个目录下,它需要运行时程序集和设计时程序集。每一个应用程序封装了被运行时分离的支持设计时的程序集,这些程序集不是在运行一个使用企业模块的应用程序所必须的然而,当你更改一个应用程序模块的配置时配置控制台需要使用这些程序集,包括suffix.configuration.design.dll。使用CopyAssemblies.bat批处理文件拷贝所需的程序集到bin目录下。
当执行CopyAssemblies.exe的批处理文件时,它会复制所有需要的运行时和设计时程序集到bin 目录下,更多关于运行时配置组件和设计时配置组件的详细资料请参考Design-time Configuration。
注意:<0 |
当配置控制台打开一个配置文件它会试图载入所有引用该文件的程序集,如果你的配置文件包含另一个自定义的提供者,你必须确保自定义程序集能够被配置文件控制台引用。如果你的配置文件包含另一个自定义的提供者,你必须确保自定义程序集能够被配置文件控制台引用。圆形物设备标识符这个,你可以复制的the程序集来一样目录如同the配置控制台可执行或者安装它到the全局程序集缓存。你也可以使用DEVPATH的环境变量让配置文件控制台载入自定义的程序集。 |
要使用配置文件控制台,单击开始,指向所有程序、Microsoft patterns & practices、Enterprise Library –January 2006,然后单击Enterprise Library configuration。
可移植信息:
企业类库2.0版是一个被设计成能够使用.NET Framework 2.0新特性的版本。虽然这是一个新版本,它也遵循1.0版的设计结构和设计原理。许多变化是在程序集内部的——它们反映出实现.NET Framework 2.0的优点,并且不需要你修改已经存在的应用程序。然而,如果你尝试在原应用程序中使用新的版本也会出现一些问题,比如配置数据在2.0版是以不同的方式处理。因此,你必须迁移已经存在的应用程序来使用2.0版的企业类库。. 然而,注意移植是可选择的。企业类库应用程序模块支持side -by -side运行。因此,你可以选择逐渐的迁移你的应用程序,一次一个程序集;只迁移一部分应用程序;或者不改变你的应用程序并且使用你自己添加的新功能。
Side-by-Side 运行
2.0版的企业类库可以同1.0版的企业类库以side-by-side的形式安装,在使用了2.0版企业类库的应用程序中你可以调用使用了1.0版企业类库的应用程序。. 另外,你可以选择移植已经存在应用程序,一次一个程序集。
如果你决定使用side-by-side形式运行,你必须在不同的目录引用不同版本的企业类库。在任何给定目录下,不能同时存在不同版本的企业类库。例如,在同一目录下不能有1.1版的数据访问模块和2.0版的缓存模块。
项目使用AssemblyInfo.cs文件来创建具有不同版本信息的程序集,这就允许你在全局程序集中使用强名和不同的版本。
部分移植
应用程序的每一个程序集只能引用一个版本的企业类库,但是如果应用程序有多个程序集就可以引用多个版本的企业类库。例如,假如你的一个应用程序拥有两个程序集,它们都使用1.1版的企业类库,其中一个程序集可以迁移到.NET Framework 2.0下而另一个保持不变。这意谓着你可以逐渐的迁移你的应用程序,一次一个程序集。
注意: |
企业类库配置控制台对它的版本的要求是严格的,经在它的目录下面必须与它版本匹配的DLL。T因此,当你配置使用不同版本企业类库的程序集时,你必须使用不同版本的配置控制台。 |
当支持部分移植时,某种程度上来说它的实现会变得复杂,因此不建议使用。.
移植应用程序代码
被重新设计的2.0版的企业类库在许多方面和1.0版的企业类库有所不同,2.0版使用了.NET Framework 2.0的新的特性,因此,一些企业类库的功能已经被简单化或者除去。. 然而,API的改变在相关模块的文档里有说明,更多的关于API改变和移植代码需求的信息请查看每个模块的说明。. 是在程序集内部的。在很大程度上,公有的API与1.0版是一样的。
API的改变在相关模块的文档里有说明,更多的关于API改变和移植代码需求的信息请查看每个模块的说明。
移植配置信息
相对于1.0版的企业类库,2.0版在不同的地方存储配置信息。默认的存储位置是应用程序的配置文件。. 2.0版的企业类库在不同的配置文件存储不同的应用程序模块。例如,缓存模块的配置信息是存储在CachingConfiguration.config文件中。
每个应用程序模块的配置模式是相似的,然而并非与2.0版的相同。你需要迁移你的配置数据到新的模式和新的存储单元(应用程序配置文件)。最简单的办法就是使用企业类库配置控制台来重新创建应用程序配置。选择性的,你可以手工地移植配置数据。更多信息请查看应用程序模块文档的XML配置模式。
Patterns&practices的相关链接:
Patterns&practices的网址和相关信息:
Microsoft patterns & practices
Application Architecture for .NET
.NET Data Access Architecture Guide
Building Secure ASP.NET Applications
Improving .NET Application Performance and Scalability
Monitoring in .NET Distributed Application Design
Deploying .NET Framework-based Applications
Security Guidance for .NET Framework 2.0