用Enterprise Library开发应用程序 --- Enterprise Library - January 2006 翻译 第二部分

 

编译企业类库:

当你安装了企业类库,安装目录会包涵以下源码:应用程序模块,Core项目,企业类库配置控制台,和QuickStarts。在第一次运行QuickStarts或者企业类库配置控制台之前你必须先编译企业类库的源码。

企业类库的VisualStudio解决方案文件

企业类库源代码包含几个VisualStudio项目,企业类库包含多种VisualStudio2005的解决方案文件。其中,有三个解决方案文件包含了企业类库的Core项目和所有的企业类库模块(见表1)。你可以使用这些解决方案文件来编译整个企业类库或者创建只包含你想编译的项目。当你编译企业类库时,core项目和配置控制台会自动编译。

1:解决方案文件

配置

描述

EnterpriseLibrarysln

包含了整个企业类库模块项目,core项目和配置控制台,不包含单元测试项目。

EnterpriseLibraryVSTSsln

包含了整个企业类库模块项目,core项目和配置控制台。包涵所有VSTS(VisualStudioTeamSystem)的单元测试项目。

EnterpriseLibraryNunitsln

包含了整个企业类库模块项目,core项目和配置控制台。包涵所有的NUnit的单元测试项目。

另外,每一个企业类库模块都有两个解决方案文件。一个包含NUnit单元测试,另一个包含VSTS(VisualStudioTeamSystem)单元测试。这些解决方案文件包含所有企业类库模块项目。它们也包含设计时项目的配置。对于运行配置控制台来说程序集是必须的,但是对于部署或者运行应用程序来说没有这个限制。

更多的信息请参考TheEnterpriseLibraryConfigurationConsole

注意:

安全模块包含一个授权管理器(AzMan)的授权提供者。该提供者要求安装AzMan以及Interop程序集,MicrosoftInteropSecurityAzRolesdll。企业类库解决方案文件没有包含AzMan授权提供者的运行时和设计时项目。如果你想编译AzMan提供者项目你可以修改企业类库解决方案文件或者你可以使用安全模块解决方案文件。

编译配置文件

企业类库解决方案文件包含两种编译配置文件的方法:Release和Debug。在每个解决方案文件中的所有项目包括单元测试项目都用这两种方法来编译配置文件。

编译企业类库模块和配置工具

有两种方法来编译企业类库模块和配置工具,你可以使用批处理文件或者VisualStudio解决方案文件。

用批处理文件编译企业类库

当你安装企业类库,安装程序会在开始菜单创建一个编译企业类库的菜单项。单击这个菜单项来编译一个Debug版本的企业类库模块和配置工具,安装程序也创建一个菜单项来把程序集复制到bin目录。单击这个菜单项拷贝已经存在的程序集到bin目录下。通过这些批处理文件可以很简单地进行操作,在企业类库安装目录的src子目录下可以找到这些批处理文件。

你还可以手工地执行批处理文件,这样你就可以重写默认的操作来提供参数。批处理文件有:

·                 Buildlibrarybat该文件编译所有的企业类库模块和配置工具。当运行的时候没有参数,它接受单一参数来选择不同的编译类型,比如Release编译。

·                 CopyAssembliesbat该文件把程序集复制到bin目录下。当没有带参数运行时,它会把已编译的程序集复制到INSTALLDIR\ProgramFiles\MicrosoftEnterpriseLibrary\bin目录。它接受两个参数。第一个参数表明可选择的编译类型,第二个参数表明将要复制的目标目录。

用VisualStudio解决方案文件编译企业类库

你也可以使用VisualStudio编译企业类库模块和配置工具。在VisualStudioNET2005,打开EnterpriseLibraryvstssln或者EnterpriseLibrarynunitsln解决方案文件。在编译菜单,单击编译解决方案。解决方案文件包括整个项目的企业类库模块、可选择提供者、通用程序集和配置工具。

解决方案文件没有提供复制功能,你可以执行CopyAssembliesbat来拷贝程序集。开始菜单有Copyassembliestobinfolder的快捷方式。

使用注意

这是一些关于编译企业类库的补充点:

·                 配置控制台要求模块程序集与配置控制台(EntLibConfigexe)在同一目录下面。它需要运行时程序集和设计时程序集。每一个应用程序封装了与运行时程序集分离的设计时程序集,对于一个使用企业类库模块的应用程序来说这些程序集不是必须的。然而,当你使用配置控制台来改变应用程序模块的配置时它们是必须的。所有必须的程序集都引用了suffixconfigurationdesigndll。使用CopyAssemblies批处理文件可以把程序集拷贝到bin目录下。

·                 企业类库配置控制台在配置文件里保存了fullyqualifiedtype的信息,当你的控制台使用了未签名的企业类库模块版本fullyqualifiedtypes的PublicKeyToken值会为null。如果你重新编译企业类库模块和程序集,你就必须更新已经存在的配置文件来得到正确的PublicKeyToken值。如果你没有这样做你的应用程序将使用错误版本的模块程序集。你可以通过使用配置控制台来更新配置文件,配置控制台将使用相应版本的企业类库模块。选择性的,你可以手工编辑配置文件和更新PublicKeyToken值。

·                 如果你安装企业类库的一部分,当你执行BuildLibrarybat文件或者在VisualStudio打开一个解决方案文件你将会看到错误信息,该信息指出找不到某些项目文件。这种情况发生在使用了一个没有安装的应用程序模块。例如,在一个不包含缓存模块的企业类库,如果你运行BuildLibrarybat将会显示以下错误信息:

系统找不到'Cachingcsproj'文件。Thesystemcannotfindthepathspecified

只有当你安装企业类库的一个子集时才会出现这些信息,你可以忽略他们。你安装的那一部分企业类库模块也会被成功编译。

·                 安全模块包含一个授权管理器(AzMan)的授权提供者。该提供者需要安装AzMan并且需要引用interop程序集,MicrosoftInteropSecurityAzRolesdll。如果你没有引用interop程序集,当你编译安全模块解决方案时将会看到一个错误信息。该错误信息表明“Interop”类型或命名空间在“Microsoft”命名空间不存在,这错误会在没有安装AzMan时出现,并且你可以忽略它。安全模块将会通过编译,但是AzMan提供者将不可用。

编译QuickStarts

QuickStart项目没有包涵在企业类库解决方案内,每一个QuickStart都有一个包含QuickStart项目和所有必需的企业类库模块项目。

给企业类库添加强命名程序集:

当你使用企业类库解决方案来编译企业类库程序集时,这些程序集并不是强命名的。如果你想使用强命名,你必须创建一个公钥/私钥对并修改企业类库项目文件。

强命名的好处

一个强命名程序集包涵了文件名(没有拓展名)、版本号,语言文化标识(如果提供的话)——加上一个公钥和一个数字签名,它是从一个使用互通的私钥的程序集文件(该文件包含了名/值对)产生的。给一个程序集加上强命名可以确保程序集的名称在全球是唯一的,使用同一强命名的程序集将会达到预期的效果(译注:避免DLLhell、版本冲突)。

例如,如果你在几个应用程序中共享企业类库程序集,你可以把它们安装到一个全局程序集缓存中,其中的每一个程序集必须有一个单一的名称。你可以使用一个强命名来保证这样即使你只在单一应用程序使用这些程序集,你可以给程序集加上强命名以保证你的应用程序使用了正确版本的程序集。

强命名将满足以下需求:

·                 强命名通过使用单一的键值对来防止名称的不唯一。你可以产生相同的程序集而别人却不可以,因为程序集用一个私钥来产生。

·                 强命名可保护一个程序集的系列版本。一个强命名可以保证没有人可以伪造一个你的程序集的后续版本。用户可以确信它们载入的程序集版本是来自创建该应用程序的同一公司。

·                 强命名提供一个有力的完整性检验,通过NETFramework安全检查可以保证程序集自从创建后就不会被篡改。然而,请注意强命名并没有包含一个信任水平的等级,例如,数字签名和证书。

更多的关于在全局程序集缓存使用程序集的信息请查看WorkingwithAssembliesandtheGlobalAssemblyCache

为企业类库程序集添加强命名

以下过程显示了怎样使用VisualStudio2005来为程序集分配强命名。为了给程序集分配强命名你必须拥有一个公钥/私钥键对。

当要创建一个强命名的程序集时必须使用到公钥和私钥密码对。如果开发者使用企业类库,他们使用的强命名程序集都是相同的。这意谓着每个人应该使用单一的键值对来标记程序集,这个键值对应该被安全的存储。

第一个过程说明如何创建一个键值对(你也可以使用一个已经存在的键对如果你有一个存在的键值对你可以跳过这个过程。)第二过程说明如何获取和显示公有的键值。第三个过程说明如何为一个程序集分配公有的键值。最后一个过程说明如何更新InternalsVisibleTo属性。

创建一个键值对

1.       打开VisualStudio命令窗口,并定位到要创建键值对的目录。

2.       输入sn-kkeyfilesnk来创建键值对。

注意:

你还可以在VisualStudio2005使用创建强命名对话框来创建键值对。在解决方案管理器选择一个项目,在Project菜单单击Properties弹出项目设计窗口,单击Signing标签,在Signing页面选择Signtheassembly,然后在Chooseastrongnamekeyfile下拉列表框选择New。

你必须从键值对提取公钥(在更新InternalsVisibleTo属性时公钥是必须的)。以下过程显示如何提取和显示公钥。

提取和显示公钥

1.       在命令提示符下输入sn-pkeyfilesnk从键值对提取公钥。

2.       输入sn–tppublickeypk来显示十六进制的公钥。保持配置控制台窗口打开(或者复制输出到一个文本文件)。

下一个过程说明如何为企业类库程序集分配公钥。打开EnterpriseLibraryVSTSsln或者EnterpriseLibraryNUnitsln解决方案。(这取决于你安装了哪一个版本的VisualStudio。)每一个项目都要遵循这些步骤包括单元测试项目和设计项目。

为项目程序集分配公钥

1.       在VisualStudio的解决方案管理器选择项目,选择Project菜单然后单击Properties(或者右击项目再单击Properties)。

2.       在项目设计器单击Signing标签。

3.       选择Signtheassembly复选框。

4.       在Chooseastrongnamekeyfile下拉列表框单击Browse。

5.       在SelectFile对话框选择已经创建的key文件或者在文件名输入框引入文件路径,单击Open。

6.       关闭属性窗口并保存更改。

企业类库模块单元测试的程序集与企业类库模块的程序集是分开的,为了让单元测试程序集访问企业类库模块程序集的internal类型和成员,企业类库模块使用InternalsVisibleToAttribute定制属性。你必须更新该属性来包含强命名程序集的公钥。

更新InternalsVisibleTo属性

1.       在VisualStudio单击Edit,指向FindandReplace,然后单击FindinFiles。

2.       在整个解决方案下搜索InternalsVisibleTo属性。

3.       对于每一个InternalsVisibleTo属性执行下列步骤:

a.                 复制你从键值对提取的完整公钥(不是token)。

b.                 给属性增加公钥,如下所示:

 

CopyCode

[assembly:InternalsVisibleTo("MicrosoftPracticesEnterpriseLibraryExceptionHandlingTests,

PublicKey=00240000048000009400000006020000002400005253413100040000010001008B3B735C

2738A3A3518083C40A3AF8518DBA6D299F0DB7883A9BE2BFF1343B72A65A04EE8DEACF3A2A5B240126

C1E803D14FEEDAC508DE566251756E0EAD6323D1C2B121B24904FEE55086CF1ACBD1146194603421DC

0E13D9DC486422180ED756CCDADF31C0B7E4F58FAC82C867F26D8D886A45FF503D7B62BCB24A160C64

F8")]

注意:

公钥必须是在单一行上。当你从命令提示符窗口复制时它是多行的(正如该例子所示)。当你更新theInternalsVisibleTo属性确保它是单行的。

4.       保存更改。

5.       重新编译整个解决方案。

 

应用示例:

企业类库包含每个模块的源代码,你可以在你的应用程序包含该源代码或者编译并使用编译后的程序集。更多的关于如何编译企业类库模块的说明请查看BuildingtheEnterpriseLibrary。在你使用企业类库程序集以前,你必须在你的应用程序增加相关的程序集引用。在编写应用程序代码时你必须知道企业类库的命名空间和对象创建模式。

引用企业类库程序集

在编译实现企业类库模块的应用程序之前,必须添加对企业类库模块程序集的引用和Common与ObjectBuilder程序集。

定制应用程序

1.       添加对企业类库模块程序集的引用。在visualstudio,在解决方案管理器右击项目,单击AddReferences,单击Browse标签选中企业类库模块程序集(CopyAssembliesbat可以把所有的企业类库模块程序集复制到bin目录),然后单击OK。例如,要引用CachingApplicationBlock程序集,浏览bin目录,选择MicrosoftPracticesEnterpriseLibraryCachingdll,然后单击OK。

2.       使用相同的过程来配置对Common程序集的引用:MicrosoftPracticesEnterpriseLibraryCommondll与ObjectBuilder程序集:MicrosoftPracticesEnterpriseLibraryObjectBuilderdll。

企业类库命名空间

所有的企业类库模块遵守相同的命名空间约定,所有的企业类库代码包含了根命名空间:MicrosoftPracticesEnterpriseLibrary。

每一个企业类库模块都在这个根命名空间下包涵自己的命名空间。例如,安全模块使用MicrosoftPracticesEnterpriseLibrarySecurity命名空间。

复杂的应用程序模块可以包含子命名空间,但是这只是有了提高可读性。例如,数据访问模块的SQLServer部分使用了MicrosoftPracticesEnterpriseLibraryDataSql命名空间。

可以在源码文件的最前面使用using关键字(C#)或者Imports关键字(VisualBasic)来引用命名空间,而不用在源文件部分引用整个命名空间。例如,为了使用缓存模块的功能可以使用以下方式:

C#

CopyCode

usingMicrosoftPracticesEnterpriseLibraryCaching;

usingMicrosoftPracticesEnterpriseLibraryCachingExpirations;

VisualBasic

CopyCode

ImportsMicrosoftPracticesEnterpriseLibraryCaching

ImportsMicrosoftPracticesEnterpriseLibraryCachingExpirations

 

注意:

对于VisualBasic项目你可以使用项目设计器的引用页来设置引用并导入命名空间。可以这样来打开引用页:在解决方案管理器中选择项目,在项目菜单单击属性,出现项目设计器,再单击引用标签。

创建企业类库模块对象

企业类库的core项目提供对创建需要配置信息的对象的支持。图表1说明如何利用企业类库的core项目创建对象。

图表1使用工厂模式的企业类库模块

使用静态工厂方法

企业类库模块包含静态工厂方法,使用这些方法你可以创建模块对象。这些静态方法实现了工厂模式以创建提供者。这意谓着如果你的应用程序使用这些静态工厂方法,就没有必要知道任何有关提供者的实现信息。以下代码显示一个使用数据访问模块的DatabaseFactory类来创建Database对象的应用程序。

C#

CopyCode

Databasedb=DatabaseFactoryCreateDatabase("Northwind");

VisualBasic

CopyCode

DimdbAsDatabase=DatabaseFactoryCreateDatabase("Northwind")

Database类是一个抽象类,它为提供者实例定义了公用接口。静态方法CreateDatabase返回一个特殊的实现object类型的提供者(例如一个SqlDatabase对象。)对象的返回类型取决于应用程序的配置信息。

静态工厂方法使用默认的配置文件,你可以使用配置控制台来定义你的应用程序的默认配置。如果你没有定义一个配置文件静态工厂方法,应用程序将会调用系统的配置文件。这意谓着你的配置信息必须存储在应用程序的配置文件(Appconfig或者Webconfig)。

配置控制台可以修改并存储应用程序的配置文件。以下的XML显示了定义两个配置节。

 

CopyCode

<enterpriseLibraryConfigurationSourceselectedSource="systemSource">

<sources>

<addname="fileSource"type="MicrosoftPracticesEnterpriseLibraryCommonConfigurationFileConfigurationSource,MicrosoftPracticesEnterpriseLibraryCommon"filePath="testexeconfig"/>

<addname="systemSource"type="MicrosoftPracticesEnterpriseLibraryCommonConfigurationSystemConfigurationSource,MicrosoftPracticesEnterpriseLibraryCommon"/>

</sources>

</enterpriseLibraryConfigurationSource>

使用注意事项

下面是一些关于配置文件的补充点。

·                 静态工厂方法使用配置文件来决定默认的配置信息,这意谓着当你使用静态工厂方法时必须拥有一个配置文件。

·                 如果你的配置文件不包含〈EnterpriseLibraryConfigurationSource〉配置节,企业类库将使用系统的配置文件。这意谓着企业类库模块配置数据必须存储在应用程序的配置文件当中。

·                 所有的静态工厂方法使用默认配置文件,这意谓着你用静态工厂方法创建对象的配置信息会存储在同样的文件当中。

使用提供者的工厂方法

一个静态工厂方法创建相应的配置文件对象然后构造一个提供者工厂对象。你还可以在应用程序代码中使用提供者工厂的对象。

使用提供者工厂创建提供者

1.       创建一个配置文件对象。

2.       通过配置文件对象创建提供者工厂对象。

3.       使用提供者工厂对象创建提供者。

以下部分详细地说明这些步骤。

创建配置文件

你可以使用ConfigurationSourceFactory类来创建一个配置源对象,create方法接受一个标识配置文件名称的字符串参数。这个配置源必须是定义在应用程序的配置文件内(如果没有定义配置源将会产生一个异常),这意谓着为了使用ConfigurationSourceFactory你必须有一个应用程序的配置文件。以下代码显示如何使用ConfigurationSourceFactory创建配置源。

C#

CopyCode

IConfigurationSourcesource=ConfigurationSourceFactoryCreate("fileSource");

VisualBasic

CopyCode

DimfileSourceAsIConfigurationSource=ConfigurationSourceFactoryCreate("fileSource")

你还可以直接构造配置源对象,配置源的构造器接受配置源所需的信息。以下代码显示如何直接构造配置源。

C#

CopyCode

FileConfigurationSourcefileSource=newFileConfigurationSource(@"ProductApplicationconfig");

 

SystemConfigurationSourcesystemSource=newSystemConfigurationSource();

VisualBasic

CopyCode

DimfileSourceAsFileConfigurationSource=NewFileConfigurationSource("ProductApplicationconfig")

 

DimsystemSourceAsSystemConfigurationSource=NewSystemConfigurationSource()

 

 

注意:

企业类库包含一个配置源提供者SqlConfigurationSource的示例,该提供者使用数据访问模块从一个SQL数据库读取配置节信息,该提供者的配置节必须派生自SerializableConfigurationSection类。

配置源的相关注意事项

所有的配置源类都实现了IConfigurationSource接口,该接口允许你的应用程序接收配置变化的通知。在企业类库,只有日志模块通过注册来接受配置文件改变的通知。

创建提供者工厂模式

提供者工厂对象的构造器接受一个配置源对象,该对象使用这个配置源为提供者对象读取配置信息。

C#

CopyCode

SystemConfigurationSourcesystemSource=newSystemConfigurationSource();

 

DatabaseProviderFactoryfactory=newDatabaseProviderFactory(systemSource);

 

VisualBasic

CopyCode

DimsystemSourceAsSystemConfigurationSource=NewSystemConfigurationSource()

 

DimfactoryAsDatabaseProviderFactory=NewDatabaseProviderFactory(systemSource)

 

使用提供者工厂来创建提供者

你可以使用单一提供者工厂实例来创建多种提供者实例,你还可以使用多种提供者工厂对象从多种配置源来创建模块对象。

以下代码显示如何使用不同的配置源创建两个DatabaseProviderFactory对象。DatabaseProviderFactory对象factory1从ProductApplicationconfig文件读取配置信息,DatabaseProviderFactory对象factory2从应用程序配置文件读取配置信息。

C#

CopyCode

FileConfigurationSourcefileSource=newFileConfigurationSource(@"ProductApplicationconfig");

 

DatabaseProviderFactoryfactory1=newDatabaseProviderFactory(fileSource);

Databasedb1=factory1CreateDefault();

 

SystemConfigurationSourcesystemSource=newSystemConfigurationSource();

DatabaseProviderFactoryfactory2=newDatabaseProviderFactory(systemSource);

Databasedb2=factory2Create("Northwind");

VisualBasic

CopyCode

DimfileSourceAsFileConfigurationSource=NewFileConfigurationSource("ProductApplicationconfig")

 

Dimfactory1AsDatabaseProviderFactory=NewDatabaseProviderFactory(fileSource)

Dimdb1AsDatabase=factory1CreateDefault()

 

DimsystemSourceAsSystemConfigurationSource=NewSystemConfigurationSource()

 

Dimfactory2AsDatabaseProviderFactory=NewDatabaseProviderFactory(systemSource)

Dimdb2AsDatabase=factory2Create("Northwind")

使用注意

下面是关于提供者工厂的一些补充点:

·                 一个提供者工厂实例绑定着单一配置的文件,当你构造了一个提供者工厂对象你就不能更改相关的配置源。这意谓着每一个提供者对象的配置节是从相同配置源读取的。

·                 以下企业类库模块提供者工厂总是返回相同的实例:

·                                 CacheManagerFactory

·                                 SecurityCacheProviderFactory

·                                 ExceptionPolicyFactory

直接构造企业类库模块对象

有些时侯你的应用程序配置信息并不存在于配置源里,例如,你的系统可以通过用户输入来动态创建配置信息。对于这些情况,你可以通过为构造器指定所需的配置信息来直接构造企业类库模块对象。

工厂方法返回一个通用的提供者接口。当你构造一个企业类库模块对象你必须通过使用相应的构造器参数来构造一个特殊的提供者类型。这些参数可以调用一个工厂来创建或者通过调用它们的构造器。以下代码显示了如何构造数据访问模块SqlDatabase对象。

C#

CopyCode

SqlDatabasedb=newSqlDatabase(@"server=(local)\SQLEXPRESS;database=EntLibQuickStarts;IntegratedSecurity=true");

VisualBasic

CopyCode

DimdbAsSqlDatabase=NewSqlDatabase("server=(local)\SQLEXPRESS;database=EntLibQuickStarts;IntegratedSecurity=true")

 

注意:

企业类库工厂模式包含启用instrumentation的代码。如果你直接构造企业类库模块对象,instrumentation将不会被这些对象启用。然而,在大多数场合下,你可以为应用程序提供者绑定相应的instrumentation。更多的信息请参考Instrumentation。

 

配置模块:

企业类库模块的配置信息是以XML格式存储的。一般的,配置信息都存储在一个XML文件当中。默认地,包含配置信息的XML文件就是应用程序的配置文件。

你可以手工地编辑XML数据,但是企业类库提供一个配置工具---企业类库配置控制台---大大地简化了该任务。如果你选择手工地编辑XML文件,可以参考相应的企业类库模块文档的资料。

使用配置控制台

企业类库配置控制台是一个允许你创建、修改和验证而不用手工地编辑XML文件的可视化工具。配置控制台显示了可用的配置节,可以更改的缺省值和每一个配置的信息。

在第一次使用配置控制台之前,你必须编译它。更多的信息请查看TheEnterpriseLibraryConfigurationConsole。

使用配置控制台

1.       在任务栏单击开始,指向AllPrograms,Microsoftpatterns&practices,EnterpriseLibrary–January2006,然后单击EnterpriseLibraryConfiguration。

2.       在File菜单,单击NewApplication(如果你要配置一个新的应用程序)或者打开应用程序(如果你要配置一个已经存在的应用程序)。

注意:

当你打开一个存在的配置文件,如果你的Machineconfig文件包含任何连接字符串,配置控制台会显示数据访问模块。更多信息请查看UsageNotes

3.       右击ApplicationConfigurationNode,单击New,然后从列表单击一个企业类库模块。例如,单击LoggingApplicationBlock

4.       配置控制台显示了默认的配置值,右击可以更改该值。例如,如果你在配置配置日志模块并且想增加一个flatfiletracelistener,可以这样做:

a.                 右击TraceListeners。

b.                 单击New,然后单击FlatFileTraceListener。

c.                  在右边面板的Filename属性后面单击省略号按钮(),,然后输入文件名和跟踪监听器文件的路径。

5.       配置完成之后,单击File,然后单击SaveApplication。

每一个企业类库模块的文档都包含了配置过程。

使用注意

下面是关于配置控制台的一些补充点:

·                 配置控制台不支持编辑或存储Machineconfig的配置节,Machineconfig文件可以在运行时被访问但在设计时不能被修改。因此,不应该把配置信息储存在Machineconfig文件中。

·                 配置控制台显示了存储在Machineconfig文件中的连接字符串,但是它只保存应用程序配置文件的连接字符串。如果你使用配置控制台来修改存储在Machineconfig文件的连接字符串,这样的更改将失效。

·                 在运行时,数据访问模块可以使用定义在Machineconfig文件的连接字符串。

·                 配置控制台显示了数据访问模块配置信息的连接字符串,这意谓着如果有连接字符串被定义在Machineconfig文件下,当你打开任何应用程序的配置文件不管你是否添加了连接字符串你都可以看到数据访问模块结点。

·                 如果你的应用程序配置包含一个自定义提供者,你必须确保自定义的提供者程序集对现有的配置控制台是可用的。为了实现可用,你可以把程序集复制到跟配置控制台在相同的目录或者把安装它在全局程序集缓存。你也可以使用DEVPATH环境变量来使配置控制台正确地调用提供者程序集。

使用备用的配置文件

你可以使用其它数据源—比如SQL数据库,来导出你的配置信息。应用程序配置文件包含一个定义配置源的配置节。如果该配置节丢失,应用程序配置文件将用作配置源。然而,即使你使用一个备用文件,企业类库都以XML格式保存你的配置信息。支持读取配置信息的核心配置类首先会尝试从配置文件读取配置节,如果找不到配置节core项目类就又尝试从系统的配置文件读取配置节。

使用备用配置源

1.       单击Start,指向AllPrograms,Microsoftpatternspractices,EnterpriseLibrary–January2006,然后单击EnterpriseLibraryConfiguration打开企业类库配置控制台。

2.       在File菜单,单击NewApplication(如果你要配置一个新的应用程序)或者打开应用程序(如果你要配置一个存在的应用程序)。

3.       右击ApplicationConfigurationNode,单击New,然后单击ConfigurationSources。

4.       展开SelectedSource结点。

5.       单击靠近SystemConfigurationSource的箭头,然后单击你想使用的配置源。

6.       配置完成之后,单击File,然后单击SaveApplication。

加密配置信息

对于存储在配置文件的灵敏信息是需要注意的,实际上有几个配置节可能会出现敏感信息。例如,〈connectionstrings〉部分可能包含数据库用户名和密码,如果你需要公共语言运行时监视一个固定的身份,<identity>部分将会包含一个用户名和密码。你可以把密码储存在<appSettings>或者一个自定义部分。如果你的配置文件包含敏感信息你应该考虑加密这些信息。

10和11版的NETFramework对于配置文件加密的支持有限制。然而,NETFramework20允许你使用一个命令行工具来加密配置文件的灵敏数据。

由于NETFramework20提供了该加密功能,配置控制台不再包含配置数据加密/解密的功能。然而,你可以使用相关的platform(注:这里可以译为“第三方”吧?不确定,保留)工具来加密数据。

当需要处理这些加密数据的时候NETFramework20会自动的解密。因此,你不必编写任何解密的辅助代码。这意谓着配置控制台可以显示已经加密的配置信息,因为它使用platform来读取加密文件。它也可以写入加密信息因为它使用platform来写入信息。

编译企业类库:

你可以使用在SystemConfiguration命名空间下的受保护配置类来加密webconfig或者可执行文件的配置文件或者机器水平和应用水平的配置文件。

更多的信息请查看SectionInformation类的ProtectSection方法

配置配置文件:

应用程序使用配置文件来获得关于企业类库模块配置的信息。默认地,应用程序使用一个SystemConfigurationSource类的实例,这意谓着应用程序从配置文件检索配置信息。你可以使用企业类库配置控制台来指定应用程序使用配置文件或者使用一个不同的配置源。

使用应用程序配置文件

默认地,企业类库配置控制台自动检测存放在配置文件(应用程序默认的配置位置)的配置信息。

使用应用程序配置文件

1.       单击Start,指向AllPrograms,Microsoftpatternspractices,EnterpriseLibrary–January2006,然后单击EnterpriseLibraryConfiguration来打开企业类库配置控制台。

2.       单击NewApplication图标或者OpenExistingApplication图标。

3.       右击ApplicationConfigurationNode,指向New,然后单击ConfigurationSources。

4.       控制台添加默认的SystemConfigurationSource节点。如果你想修改它的属性,单击该节点。

5.       为SystemConfigurationSource结点指定一个新的名称(可选的)。默认的是SystemConfigurationSource。

使用备用配置源

你可以使用配置源而不是应用程序的配置文件。以下过程显示了做法

使用备用的配置源

1.       如果你想使用一个配置源而不是系统配置文件,右击ConfigurationSources,指向New,然后单击Fileconfigurationsource。

2.       设置文件属性。输入文件名或者单击省略号按钮(…),然后单击你想使用的文件。

3.       (可选择的)设置Name属性。给FileConfigurationSource结点输入一个新的名字,默认是FileConfigurationSource。

设置默认配置源

你也可以选择默认配置源。以下过程显示如何这样做。

设置默认配置源

1.       单击ConfigurationSources结点

2.       更改SelectedSource属性。输入另一个配置源的名称或者在下拉列表框选择一项。

企业类库core项目的文件结构

企业类库core项目提供了一些服务,比如检测和配置,并且所有的企业类库模块都是依赖于core项目。企业类库的核心功能被封装在MicrosoftPracticesEnterpriseLibraryCommondll程序集。

有两个配置节与企业类库core项目相关,它们是instrumentationConfiguration配置节和enterpriseLibraryConfigurationSource配置节。这些配置节定义了在应用程序中哪些类型的检测功能可用以及哪些配置节是被用来访问配置文件的。以下XML代码显示了定义类型的配置节。这些声明应该定义在应用程序配置文件的<configSections>节。

XML

CopyCode

<configSections>

<sectionname="instrumentationConfiguration"type="MicrosoftPracticesEnterpriseLibraryCommonInstrumentationConfigurationInstrumentationConfigurationSection,MicrosoftPracticesEnterpriseLibraryCommon,Version=2000,Culture=neutral,PublicKeyToken=null"/>

 

<sectionname="enterpriseLibraryConfigurationSource"type="MicrosoftPracticesEnterpriseLibraryCommonConfigurationConfigurationSourceSection,MicrosoftPracticesEnterpriseLibraryCommon,Version=2000,Culture=neutral,PublicKeyToken=null"/>

</configSections>

如果配置文件里没有enterpriseLibraryConfigurationSource配置节,一个SystemConfigurationSource类的实例将会成为应用程序的配置源。这意谓着当应用程序使用静态工厂时它是从配置文件检索配置信息的。

EnterpriseLibraryConfigurationSource元素

EnterpriseLibraryConfigurationSource元素指定应用程序应该使用的配置源,该元素不是必需的。如果它被省略,应用程序将使用一个SystemConfigurationSource实例的实例。

以下部分说明enterpriseLibraryConfigurationSource元素的属性和子元素。

属性

表1列出了enterpriseLibraryConfigurationSource元素的属性。

1:enterpriselibraryconfigurationsource属性

属性

描述

SelectedSource

Theconfigurationsourcetouseforthisapplication它必须是<sources>节的一个名称。T该属性是必须的。

sources元素

Sources元素是enterpriseLibraryConfigurationSource元素的一个子元素,它列出了应用程序可以使用的配置源。该元素是所需。

Add元素

Add元素是sources元素的一个子元素,它添加配置源的名字。该元素不是必需的。可以有多个add元素。表2列出了add元素的属性。

2:增加元素属性

属性

描述

name

配置源的名称。T在一个配置节里name属性必须是唯一的。T该属性是所需的。

type

一个实现了IConfigurationSource接口类的属性。

filePath

配置文件的路径。T如果配置源是一个文件该属性是必需的。

connectionstring

SQLServer数据库的连接字符串。T如果配置源是一个SQLServer数据库该属性是必需的。

getStoredProcedure

获取数据库的存储过程。T当应用程序请求一个配置节时该存储过程会被调用。T如果应用程序使用SQLServer数据库的存储过程来读取配置节该属性是必需的。

setStoredProcedure

设置数据库的一个存储过程。T设置数据库的一个存储过程。T当应用程序请求一个配置节时该存储过程会被调用。T如果应用程序使用SQLServer数据库的存储过程来设置配置节该属性是必需的。

refreshStoredProcedure

刷新数据库的一个存储过程。Thenameofastoredprocedureinthedatabasethathastheconfigurationinformation当应用程序刷新一个配置节时该存储过程会被调用。T如果应用程序使用SQLServer数据库的存储过程来刷新配置节该属性是必需的。

removeStoredProcedure

删除数据库的一个存储过程。T当应用程序删除一个配置节时该存储过程会被调用。T如果应用程序使用SQLServer数据库的存储过程来删除配置节该属性是必需的。h如果应用程序使用SQLServer数据库的存储过程来删除配置节该属性是必需的。

instrumentationConfiguration子元素

InstrumentationConfiguration元素可以打开或关闭不同类型的检测功能。该元素不是必需的。如果在配置源没有包含该元素,所有的检测功能都是不可用的。表3列出了instrumentationConfiguration元素的属性。

3列出了instrumentationConfiguration属性

属性

描述

PerformanceCountersEnabled

指定企业类库模块是否使用性能计数器。S指定企业类库模块是否使用性能计数器。P该值为true或false。T默认为false。T该属性不是必需的。

EventLoggingEnabled

指定企业类库模块是否使用日志。P该值为true或false。T默认为false。T该属性不是必需的。

WmiEnabled

指定企业类库模块是否使用WMI事件。P该值为true或false。T默认为false。T该属性不是必需的。

使用检测功能

Instrumentation(检测功能)是为了监视或者测量系统的性能和诊断错误。更多的信息请参考MonitoringinNETDistributedApplicationDesign

企业类库有以下几个检测功能:

·                 事件日志。企业类库模块通知用户的关键事件,比如错误或者警告。

·                 性能计数器。企业类库模块记录主要的性能信息---比如每秒或者一断时间内发生的关键事件的数量,该信息写入Windows系统性能计数器。

·                 Windows管理规范(WMI)企业类库模块通过WMI报告在模块内的有效事件。

使用和禁用检测功能

默认地,检测功能是禁用的。你可以安装检测功能并配置你的应用程序来启用检测功能。

安装和卸载检测功能

要安装检测功能,你可以执行InstallServicesbat批处理文件或者使用Start菜单的installinstrumentation快捷方式。在任务栏单击开始,指向AllPrograms,Microsoftpatterns&practices,EnterpriseLibrary–January2006,然后单击InstallInstrumentation。

要卸载检测功能,你可以执行InstallServicesbat批量批处理文件或者使用Start菜单的uninstallinstrumentation快捷方式。在任务栏单击开始,指向AllPrograms,Microsoftpatterns&practices,EnterpriseLibrary–January2006,然后单击UninstallInstrumentation。

配置检测功能

检测功能是定义于配置文件的<instrumentationConfiguration>配置节,该节确定整个应用程序的检测行为。

默认地,每一种检测功能都是禁用的,你可以使用企业类库配置控制台来启用或者停用。所有的检测功能属性出现在右边面板。当一个属性设置为True时检测功能启用;当一个属性设置为False,检测功能禁用。

1.       单击Start,指向AllPrograms,Microsoftpatterns&practices,EnterpriseLibrary–January2006,然后单击EnterpriseLibraryConfiguration来打开企业类库配置控制台。

2.       单击NewApplication图标或者OpenExistingApplication图标。

3.       右击ApplicationConfigurationNode,指向New,然后单击Instrumentation。

4.       设置EventLoggingEnabled属性。输入True或False,或者在下拉列表框选择。缺省值为False。

5.       设置PerformanceCountersEnabled属性。输入True或False,或者在下拉列表框选择。缺省值为False。

6.       设置WmiEnabled属性。输入True或False,或者在下拉列表框选择。缺省值为False。

上一篇:Enterprise Library简介

下一篇:Enterprise Library设计

 

转载于:https://www.cnblogs.com/Doho/archive/2006/11/11/558010.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值