Program,Life,Society.....

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

示例代码下载

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

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

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

        
End Try
    
End Sub

End Class

App.config

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

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


Enterprise Library Configuration


App.config 

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

 ExternalApp.config

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

 

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

    Sub ProcessB()
        
Try
            
Dim dataSource As New FileConfigurationSource("data-filesource.config")
            
Dim dbFactory As DatabaseProviderFactory = New DatabaseProviderFactory(dataSource)
            
Dim db As Database = dbFactory.Create("rippleyong's ConnectionString")
            db.ExecuteNonQuery(
"Get a Exception")

        
Catch ex As Exception

            
Dim dataSource As New FileConfigurationSource("exceprion-filesource.config")
            
Dim exceptionFactory As ExceptionPolicyFactory = New ExceptionPolicyFactory(dataSource)
            
Dim exceptionPolicy As ExceptionPolicyImpl = exceptionFactory.Create("rippleyong's Policy")
            
If exceptionPolicy.HandleException(ex) Then Throw
        
End Try
    
End Sub

data-filesource.config

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

exception-filesource.config

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

posted on 2006-04-11 17:18  vuejs3  阅读(3623)  评论(3)    收藏  举报