在Enterprise Library for .NET Framework 2.0中使用外部的配置元数据的文件(my.config)

down.gif示例代码下载

一般情况下,包含配置元数据的文件为Windows应用程序的App.Config或Web应用程序的Web.Config文件.这里介绍如何使用外部的置元数据的文件.

通常的方法
首先下面的一段代码是通常的做法,在App.config中写入配置信息,程序中用到了两个Block: Data Access Application Block和Exception Application Block.
AppService.vb

ExpandedBlockStart.gif ContractedBlock.gif Public   Class AppService Class AppService
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Sub ProcessA()Sub ProcessA()
InBlock.gif        
Try
InBlock.gif            
'生成Database
InBlock.gif
            Dim db As Database = DatabaseFactory.CreateDatabase("rippleyong's ConnectionString")
InBlock.gif            
'产生一个异常
InBlock.gif
            db.ExecuteNonQuery("Get a Exception")
InBlock.gif        
Catch ex As Exception
InBlock.gif            
If ExceptionPolicy.HandleException(ex, "rippleyong's Policy"Then Throw
InBlock.gif
InBlock.gif        
End Try
ExpandedSubBlockEnd.gif    
End Sub

ExpandedBlockEnd.gif
End Class

App.config

None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
< configuration >
None.gif  
< configSections >
None.gif    
< section  name ="exceptionHandling"  type ="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif    
< section  name ="dataConfiguration"  type ="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif  
</ configSections >
None.gif  
< exceptionHandling >
None.gif    
< exceptionPolicies >
None.gif      
< add  name ="rippleyong's Policy" >
None.gif        
< exceptionTypes >
None.gif          
< add  type ="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
None.gif            postHandlingAction
="NotifyRethrow"  name ="Exception" >
None.gif            
< exceptionHandlers >
None.gif              
< add  exceptionMessage ="Replace ExceptionMessage,Haha !!!"  replaceExceptionType ="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
None.gif                type
="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ReplaceHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
None.gif                name
="Replace Handler"   />
None.gif            
</ exceptionHandlers >
None.gif          
</ add >
None.gif        
</ exceptionTypes >
None.gif      
</ add >
None.gif    
</ exceptionPolicies >
None.gif  
</ exceptionHandling >
None.gif  
< connectionStrings >
None.gif    
< add  name ="rippleyong's ConnectionString"  connectionString ="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|ripple.mdf;User Instance=true;"
None.gif      providerName
="System.Data.SqlClient"   />
None.gif  
</ connectionStrings >
None.gif
</ configuration >

 
调用外部的配置元数据文件(结合程序配置文件)
如何使用外部的扩展配置元数据文件呢,这里需要通过配置工具(Enterprise Library Configuration)添加一个Configuration Sources 节点在App.config(web.config)中.添加一个选择File Configuration Source,在File中选择外部的配置元数据文件(在这里是ExternalApp.config)
Configuration Source结构图


Enterprise Library Configuration


App.config 

None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
< configuration >
None.gif  
< configSections >
None.gif    
< section  name ="enterpriseLibrary.ConfigurationSource"  type ="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif  
</ configSections >
None.gif  
< enterpriseLibrary .ConfigurationSource selectedSource ="System Configuration Source" >
None.gif    
< sources >
None.gif      
< add  name ="File Configuration Source"  type ="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
None.gif        filePath
="C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\EnterpriseLibraryTest\EnterpriseLibraryTest\ExternalConfiguration\ExternalApp.config"   />
None.gif     
< add  name ="System Configuration Source"  type ="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.SystemConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif    
</ sources >
None.gif  
</ enterpriseLibrary.ConfigurationSource >
None.gif
</ configuration >

 ExternalApp.config

None.gif < configuration >
None.gif  
< configSections >
None.gif    
< section  name ="exceptionHandling"  type ="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif    
< section  name ="dataConfiguration"  type ="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif  
</ configSections >
None.gif  
< exceptionHandling >
None.gif    
< exceptionPolicies >
None.gif      
< add  name ="rippleyong's Policy" >
None.gif        
< exceptionTypes >
None.gif          
< add  type ="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
None.gif            postHandlingAction
="NotifyRethrow"  name ="Exception" >
None.gif            
< exceptionHandlers >
None.gif              
< add  exceptionMessage ="Rplace ExceptionMessage HaHa."  replaceExceptionType ="System.ApplicationException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
None.gif                type
="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ReplaceHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
None.gif                name
="Replace Handler"   />
None.gif            
</ exceptionHandlers >
None.gif          
</ add >
None.gif        
</ exceptionTypes >
None.gif      
</ add >
None.gif    
</ exceptionPolicies >
None.gif  
</ exceptionHandling >
None.gif  
< connectionStrings >
None.gif    
< add  name ="rippleyong's connetionString"  connectionString ="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|ripple.mdf;User Instance=true;"
None.gif     providerName
="System.Data.SqlClient"   />
None.gif  
</ connectionStrings >
None.gif
</ configuration >
None.gif

 

使用单独的ConfigurationSources
从上面的例子中我们可以看到,还是不是完全独立的,因为你必须在App.Config(Web.Config)中告诉Enterprise Library外部配置元数据文件的位置.
下面的代码演示了直接在程序中找到外部配置元数据文件.

ExpandedBlockStart.gif ContractedBlock.gif      Sub ProcessB() Sub ProcessB()
InBlock.gif        
Try
InBlock.gif            
Dim dataSource As New FileConfigurationSource("data-filesource.config")
InBlock.gif            
Dim dbFactory As DatabaseProviderFactory = New DatabaseProviderFactory(dataSource)
InBlock.gif            
Dim db As Database = dbFactory.Create("rippleyong's ConnectionString")
InBlock.gif            db.ExecuteNonQuery(
"Get a Exception")
InBlock.gif
InBlock.gif        
Catch ex As Exception
InBlock.gif
InBlock.gif            
Dim dataSource As New FileConfigurationSource("exceprion-filesource.config")
InBlock.gif            
Dim exceptionFactory As ExceptionPolicyFactory = New ExceptionPolicyFactory(dataSource)
InBlock.gif            
Dim exceptionPolicy As ExceptionPolicyImpl = exceptionFactory.Create("rippleyong's Policy")
InBlock.gif            
If exceptionPolicy.HandleException(ex) Then Throw
InBlock.gif        
End Try
ExpandedBlockEnd.gif    
End Sub

None.gif

data-filesource.config

None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
< configuration >
None.gif  
< configSections >
None.gif    
< section  name ="dataConfiguration"  type ="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif  
</ configSections >
None.gif  
< connectionStrings >
None.gif    
< add  name ="rippleyng's Connection"  connectionString ="Database=ripple;Server=(local)\SQLEXPRESS;Integrated Security=SSPI;"
None.gif      providerName
="System.Data.SqlClient"   />
None.gif  
</ connectionStrings >
None.gif
</ configuration >

exception-filesource.config

None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
< configuration >
None.gif  
< configSections >
None.gif    
< section  name ="exceptionHandling"  type ="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif    
< section  name ="dataConfiguration"  type ="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif  
</ configSections >
None.gif  
< exceptionHandling >
None.gif    
< exceptionPolicies >
None.gif      
< add  name ="rippleyong's Policy" >
None.gif        
< exceptionTypes >
None.gif          
< add  type ="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
None.gif            postHandlingAction
="ThrowNewException"  name ="Exception" >
None.gif            
< exceptionHandlers >
None.gif              
< add  exceptionMessage ="Rplace ExceptionMessage HaHa."  replaceExceptionType ="System.ApplicationException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
None.gif                type
="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ReplaceHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
None.gif                name
="Replace Handler"   />
None.gif            
</ exceptionHandlers >
None.gif          
</ add >
None.gif        
</ exceptionTypes >
None.gif      
</ add >
None.gif    
</ exceptionPolicies >
None.gif  
</ exceptionHandling >
None.gif
</ configuration >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值