La fábrica de conexiones es un mecanismo para facilitar la conexión hacia los diferentes repositorios que tenemos, independientemente de que tipo de repositorio sea, la fábrica puede proveernos la conexión que necesitamos.
Cuando una aplicación web se inicia, se ejecuta un método llamado Application_Start el cual se encuentra en la clase Global del archivo global.asax, en este método se realizan las inicializaciones de diferentes componentes como lo son ruteos de mvc, ruteos de webApi, áreas de mvc, entre otros.
Se realiza la inicialización del la webApi por medio de la instrucción:
GlobalConfiguration.Configure(WebApiConfig.Register);
En el método Register de la clase WebApiConfig, se manda a inicializar los contenedores de Unity con la instrucción:
Bootstrapper.Initialise(config);
Dentro del método Initialise de la clase Bootstrapper, se realiza la inicialización de la fábrica con la siguiente instrucción
Utilerias.ContextoSD.Contenedor.Resolve<IConexion>().Inicializar();
De esta manera se inicializa la fábrica de conexiones.
Para determinar que sucede, veamos el siguiente diagrama de secuencia donde:
Unity | U |
ConexionesBE | BE |
ConexionDS | DS |
ConexionesConfigurationSectionHandler | CSH |
Almacen de Certificados | Store |
Diagrama de Secuencia de Fabrica de Conexiones.
El archivo de configuración es un archivo XML el cual contiene la configuración para conectarse al servidor de conexiones, tambien define el ambiente al cual se quiere conectar.
El archivo contiene la siguiente estructura:
<conexiones ambiente="desarrolloUno">Cadena Encriptada</conexiones>
Donde el ambiente define el conjunto de conexiones las cuales podremos utilizar.
La Cadena Encriptada es un texto en Base64 encriptado a travez de un certificado SSL de 2048 bits y lo que contiene es una estructura XML con la siguiente definición:
<?xml version="1.0" encoding="utf-8"?> <conexiones ambiente="desarrolloUno"> <conexion> <Value>Cadena de conexion del Servidor de Conexiones</Value> </conexion> <credencial usuario="nombreUsuario" contrasena="Contraseña" /> </conexiones>
Donde la conexión es la cadena de conexión del servidor que contiene todas las conexiones.
Credencial es un mecanismo para validar que esa conexión puede consumir el ambiente especificado.
Este archivo de conexion utiliza el mecanismo de configuración de .Net, por lo tanto debe especificarse en la sección de configuración de los archivos de configuracion de .Net, y posteriormente definir el elemento haciendo referencia al archivo de configuracion de conexiones, es decir, en el app.config, web.config o machine.config se debe agregar la siguiente línea en la sección configuration/configSections:
<section name="conexiones" type="SD.Conexiones.ConexionesConfigurationSectionHandler, SD"/>
Despues en cualquier parte de la sección configuration agregar la siguiente línea:
<conexiones configSource="conexiones.config"></conexiones>
Para mas información sobre la jerarquía de las configuraciones revisar Módelo de Configuración de DotNet.