Crea y utiliza tu “Manejador de configuración” en 3 pequeños pasitos.

10 Dic

El archivo de configuración de la aplicación vb.Net es el web.config, dónde tenemos almacenadas todas las rutas a las distintas bases de datos, los usuarios y claves, perfiles específicos, etc…

Para acceder a esta información se suele acceder con churros del estilo a; System.Configuration.ConfigurationManager.AppSettings(“CONSULTA_MENU_USUARIO”) o bien, y es lo que os voy a tratar de explicar hoy, utilizar un “Manejador de Configuración” o clase en el que volcar toda la información definida en el web.config y acceder a ella desde cualquier lugar de la aplicación. 

El “Manejador de Configuración” nos va a permitir tener un punto de acceso único al web.config y así nos resultará más fácil el mantener la relación entre el fichero de configuración y la aplicación.

Para crear y utilizar el “Manejador de Configuración” desde cualquier lugar de la aplicación hay que seguir 3 pequeños pasitos:

  1. Modificación del fichero de configuración (web.config).
    Hay que modificar el fichero de configuración de la aplicación para indicarle, quien va a ser la sección que almacene las especificaciones a volcar en la clase y que clase va a ser.

    En el siguiente ejemplo vemos como quedaría el web.config desnudo, solo lo que nos interesa:

    <configuration xmlns=”http://schemas.microsoft.com/.NetConfiguration/v2.0″&gt;

    <configSections>

    <section name =”LectorConfiguracion” type=”EspacioDeNombres.LectorConfig”/>

    </configSections>

    <LectorConfiguracion>

    <add key=”Version_SQL_Server” value=”2005″/>

    </ LectorConfiguracion>

    Dentro de la sección “configSections” he creado una nueva sección “LectorConfiguracion” en un alarde de originalidad y le indico que es del tipo EspacioDeNombres.LectorConfig, que es la clase que me he creado.

    La otra modificación que hay que hacer en el web.config es la de añadir toda la configuración que vamos a leer desde nuestra clase LectorConfig y para ello creamos un nuevo nodo, “LectorConfiguración”, se tiene que llamar igual que la sección definida en el configSections.

    Yo sólo he añadido la versión de SQL que voy a usar y le he dado un valor, pero puedes añadir todo lo que quieras. Podrías añadir toda la antigua configuración del web.config…

    Hecho esto, ya está el web.config modificado, guardamos los datos y listo.

  2. Creación del “Manejador de Configuración”.
    La clase manejadora se crea como una clase Public NotInheritable, dentro de nuestro espacio de nombres e implementando IConfigurationSectionHandler, interfaz que controla el acceso a determinadas secciones de configuración.

    Variables privadas y compartidas a declarar:

    Con la fórmula siguiente se declararán todas las propiedades a recuperar del web.config.

    Private Shared _DSNSQL as String

    Este ejemplo es con el DSN declarado como string, pero puede ser declarado con cualquier tipo de dato, string, Boolean, entero, etc… tendrás que convertir al tipo deseado lo que recibas del web.config.

    Nuestro “Manejador de Configuración” no puede ser instanciado desde ninguna parte de la aplicación, así que declaramos las propiedades de tipo shared

    Public Shared ReadOnly Property DSNSQL() As string, Declaramos el Get, ya que no tiene sentido que cambie los valores de configuración.

    La chicha está en los métodos Inicializar y Create que son los métodos que vamos a emplear para leer la configuración del web.config y para cargar dicha información a nuestros miembros, respectivamente.

    En nuestro Manejador de configuración creamos los métodos:

    Public Shared Sub Inicializar()

    System.Configuration.ConfigurationManager.GetSection(“LectorConfiguracion”)

    End Sub

    Método encargado de leer la sección de configuración dentro de nuestro web.config, al leer esta sección se dispara un determinado evento haciendo que el compilador ejecute el contrato especificado por nuestra interface implementada. Me refiero a la función “Create”

    Private Function Create(ByVal parent As Object, _
    ByVal configContext As Object, _
    ByVal section As System.Xml.XmlNode) As Object _
    Implements System.Configuration.IConfigurationSectionHandler.Create

    Dim sh As NameValueSectionHandler
    Dim nv As NameValueCollection
    sh = New NameValueSectionHandler
    nv = CType(sh.Create(parent, configContext, section), NameValueCollection)

    If Not nv Is Nothing Then
    _DSNSQL = nv.Item(“DSNSQL”) ‘Aquí recupero sólo el DNSQL, pero vosotros recuperaríais todos los valores.
    End if
    sh = Nothing
    nv = Nothing

    Return Me ‘Devuelvo la clase cargada con los valores de configuración.

    End Function

  3. Invocar la carga del Manejador de Configuración con los datos del web.config.

    Parece lo más lógico que si en esta clase vamos a recuperar todos los datos de configuración de la aplicación, que los recuperemos antes de realizar cualquier operación en la aplicación.

    Abre el archivo global.asa y en el start de la aplicación recupera la configuracion del web.config, de la siguiente manera.

    LectorConfig.Inicializar()

    Al recuperar la configuración, se lanza el evento create que declaramos en nuestra clase.

    Si esto no te ha producido ningún error, ya puedes usar tu Manejador de congiguración, desde cualquier parte de tu solución.

Hasta aquí, los 3 pasitos para realizar un “Manejador de Configuración”, espero os sea útil…

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

La que has liado

Fotografiar con palabras, nuestro momento, nuestra época. Del 1.1 al 2.0

TERZERO

Pio Baroja

El árbol inútil

Blog de cuentos, libros y mala poesía

Lo que de verdad importa

somos dueños de nuestro destino, inventores de nuestro futuro y nuestra felicidad...

Frikstation

Pasión por el mundo de la televisión, el cine, los videojuegos y su merchandising.

A %d blogueros les gusta esto: