¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Modelo de Configuración
¿Que es?
Es un mecanismo que nos ofrece DotNet para realizar configuraciones en nuestras aplicaciones.
¿Como se usa?
Primero tenemos que agregar una referencia al ensamblado System.Configuration, después de agregar dicha referencia existen varias formas de utilizarlos dependiendo de la configuración que deseemos utilizar, por ejemplo:
Para leer una cadena de conexión
System.Configuration.ConfigurationManager.ConnectionStrings["nombreConexion"]
Para leer una llave de aplicación
System.Configuration.ConfigurationManager.AppSettings["nombreLlave"]
Para leer una configuracion personalizada
var cfg = (MiConfiguracion)System.Configuration.ConfigurationManager.GetSection("nombreMiConfiguracion");
¿Como funciona?
Para empezar, la configuración de DotNet funciona como una herencia y todo empieza en el machine.config.
El machine.config es el archivo de mayor jerarquía en las configuraciones, este hereda a los web.config y a los app.config, en entornos web se usa el web.config, en las aplicaciones de escritorio se usa el app.config.
Existen configuraciones que pueden ser sobre-escritas, es decir, que una vez que se definieron pueden ser alteradas en sus herencias, pero existen otras configuraciones que no pueden ser sobre-escritas, es decir, una vez que se definieron su valor se mantiene durante toda la herencia.
Existe una carpeta llamada Config donde está el archivo machine.config y este hereda sus valores al archivo web.config que está en la misma carpeta, este archivo hereda su configuración al archivo web.config que se encuentra en cada sitio, y el archivo web.config de cada sitio hereda su configuración al archivo web.config de cada aplicación web, por último, cada archivo web.config de cada aplicación puede heredar su configuración a los archivos web.config de cada carpeta en la aplicación.
¿Como se define una configuración personalizada?
La configuración personalizada se define en 2 partes.
- En el código
- En el archivo de configuración
En el código
- Se tiene que crear una clase y hacer que esta clase implemente la interface IConfigurationSectionHandler.
- En el método create escribir el código necesario para leer el contenido XML de la configuración y pasarla a la entidad o entidades necesarias.
public class MiConfiguracion : IConfigurationSectionHandler { public object Create(object parent, object configContext, XmlNode section) { //Leer XmlNode section para obtener los valores de la configuracion } }
En el archivo de configuración
- Agregar en la sección configuration/configSections la referencia a nuestra clase de configuración.
- Agregar en la sección configuration el contenido xml que define la configuración de nuestra clase de configuración
- Podemos trasladar el contenido a un archivo por medio del atributo configSource.
Opción 1
<configSections> <section name="nombreSeccion" type="Full Qualified Name" /> </configSections> <nombreSeccion> <elementosDeConfiguracion atributosDeConfiguracion="" /> </nombreSeccion>
Opción 2
<configSections> <section name="nombreSeccion" type="Full Qualified Name" /> </configSections> <nombreSeccion configSource="nombreArchivoConfiguracion" />