lunes, 12 de noviembre de 2007

Archivos de configuración externos

Como siempre mis experiencias en este blog surgen de las cosas que ocurren a diario, preguntas de listas de correo, comentarios en el trabajo y sobre todo cosas que me pasan directamente a mi. Lo que sigue a continuación lo encontré en el blog de Tom Hollander

Archivos de configuración

Si alguno trabaja con aplicaciones más o menos grandes, ó utiliza EntLib seguramente se ha encontrado con archivos de configuración gigantes, de más está decir que son complicados de manejar, bien, existe una solución (es un feature en realidad poco conocido) para evitar esto, simplemente se pueden definir las secciones de nuestro archivo e indicar a través del mismo que la información de esta sección la tome desde otro archivo del siguiente modo:

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" />
  </configSections>
  <exceptionHandling configSource="exceptions.config" />
</configuration>
 

Interesante, en este caso la configuración del exceptionHandling se toma desde el archivo exceptions.config, y listo, el manejo es totalmente transparente, mágico.

exceptions.config

<?xml version="1.0" encoding="utf-8"?>
  <exceptionHandling>
    <exceptionPolicies>
      <add name="Tom's Policy">
        <exceptionTypes>
          <add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            postHandlingAction="ThrowNewException" name="Exception">
            <exceptionHandlers>
              <add exceptionMessage="Crikey!" 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>

2 comentarios:

Esteban dijo...

Sabes que justo estaba buscando algo similar...
Muy bueno, gracias!

Saludos

Leonardo Micheloni dijo...

Gracias a vos por dejar tu comentario.