Capítulo 9 – Instalando y configurando aplicaciones–Parte 1

 
Lección 1 - Opciones de configuración
Con respecto al desarrollo de aplicaciones, siempre hay una mejor manera de hacer las cosas. Un área que se debe evitar es hard-coding (se incrustan datos directamente en el código fuente, en lugar de obtener esos datos de una fuente externa) de variables. El Framework de .Net brinda varias herramientas para evitar este problema.
Antes de .Net Framework, los desarrolladores tenían 2 formas de manejar la configuración.
  1. Setear las propiedades del appSettings (forma muy rígida).
  2. Definir una configuración personalizada y construir las clases correspondientes para administrarlo. Pero se debe de escribir gran cantidad de código para realizar esto.
.Net Framework brinda una herramienta para configurar una aplicación en pocos minutos sin necesidad de escribir mucho código.

 
Configuración en .Net Framework 2.0
El namespace System.Configuration es la librería que sirve como repositorio de todas las clases que se usan para administrar la configuración.
Este namespace contiene las clases Configuration y ConfigurationManager.
Métodos y propiedades más comunes de la clase ConfigurationManager:
Nombre Descripción
AppSettings Devuelve el AppSettingsSection que aplica al objeto Configuration.
ConnectionStrings Devuelve el objeto ConnectionStrings que aplica al objeto Configuration.
FilePath Devuelve el path físico del archivo de configuración.
GetSection Devuelve el especificado ConfigurationSection.
GetSectionGroup Devuelve el especificado ConfigurationSectionGroup.
HasFile Indica si el archivo de configuración existe.
NamespaceDeclared Obtiene o establece un valor que indica si el archivo de configuración tiene un espacio de nombres XML.
Save Este método escribe los settings de configuración contenidos en el objeto Configuration al xml.
SaveAs Lo mismo que en save, solo que se especifica a qué XML.
Pasos para recuperar los valores de configuración:
  • Crear un objeto configuration.
  • Usar los métodos del ConfigurationManager con el prefijo “Open”, para abrir el archivo de configuración de la aplicación a la máquina.
image
El enumerador ConfigurationUserLevel tiene los siguientes valores:
None Obtiene el objeto System.Configuration.Configuration que aplica a todos los usuarios.
PerUserRoaming devuelve el roaming System.Configuration.Configuration que aplica al usuario actual
PerUserRoamingAndLocal Devuelve el local System.Configuration.Configuration que aplica al usuario actual.
Se puede usar un ExeConfigurationFileMap para especificarle al runtime lo que se quiere hacer y dónde encuentra cada archivo de configuración.
image
Cuando llamamos a OpenMappedExeConfiguration o OpenMappedMAchineConfiguration, estamos informando al runtime la intención de utilizar un mapped file. Debemos asegurarnos de que el archivo de configuración exista y de que se tengan los suficientes permisos para acceder a este.
 
Configuraciones comunes (Common Settings)
El termino Common hace referencia a algunas áreas que determinan cómo las aplicaciones se van a ejecutar.
Ejemplo para correr la aplicación en una versión del Framework especificada (lo podemos encontrar en el app.config o web.config dependiendo del tipo de aplicación):
image
 
Hay ciertas restricciones respecto a las versiones:
  • - Si la versión del Framework en que fue construida la aplicación, se encuentra en la máquina, se utiliza esta versión.
  • - Si la versión del Framework no se encuentra en la máquina y nada fue especificado en el supportedRuntime. La aplicación va a correr en la última versión disponible en la máquina. Debería utilizar el Framework 2.0 incluso si la aplicación fue hecha en versiones inferiores.
  • - Si no se encuentra la versión del Framework, se usa lo que se indica en el supportedRuntime
 
Otro escenario común es el de usar un assembly compartido y verificar que este funciona con múltiples aplicaciones. Para acomodar esto se debe:
  • - Añadir una variable de entorno DEVPATH que apunte a donde se encuentra el assembly
  • - Setear el developmentMode en true de esta forma:
 
image
Una tarea común es especificar donde se encuentra una versión de un assembly. Para esto podemos usar el .Net Framework 2.0 Configuration Tool (lo vemos en la lección 3). O configurarlo manualmente de esta forma:
image
Otros valores comunes de configurar son las secciones de AppSettings y ConnectionStrings.
image
Para poder utilizar la variable de AppSettings se puede realizar de la siguiente manera:
image
Pero la manera correcta de acceder (sin producir warnings en el compilador) es a través del ConfigurationManager:
image
 
La clase AppSettings se puede enumerar (implementando la interface IEnumerable) para iterar sobre esta:
image
 
Usando el componente ConnectionStrings se puede realizar de la siguiente forma:
image
Se puede colocar clear al comienzo de la sección ConnectionStrings para eliminar cualquier otra conexión existente y luego especificar para cada ConnectionString:
  • - El nombre descriptivo de la coneccion.
  • - El providerName (el proveedor de datos que vamos a usar), por ej.: System.Data.OracleClient .
  • - El atributo ConnectionString con la cadena de conexión para conectarse a la base de datos deseada.
Para poder utilizarlo en el código de nuestra aplicación:
image
El ejemplo anterior usa la clase ConfigurationManager, que es utilizada en winforms o aplicaciones de consola. Para aplicaciones web (asp.net) se emplea la clase WebConfigurationManager (del namespace System.Web.Configuration) que es muy parecida a ConfigurationManager, salvo por 3 diferencias:
  • - El WebConfigurationManager tiene un método llamado GetWebApplicationSection que la otra clase no tiene, este método devuelve una sección del web.config (equivalente a GetSection).
  • - El método OpenMappedExeConfiguration del ConfigurationManager es reemplazado por OpenMappedWebConfiguration de la otra clase.
  • - El método OpenExeConfiguration del ConfigurationManager es reemplazado por OpenWebconfiguration de la otra clase.
Ejemplo de cómo utilizar el WebConfigurationManager:
image
 
Application settings(configuración de la aplicación)
Son los valores de configuración que se aplican a la aplicación: incluyen cadenas de conexión de base de datos, las direcciones URL de servicios Web, configuración remota, y otros. La forma de utilizar los ApplicationSettings, es la siguiente:
image
Y se utiliza de esta forma:
Ejemplo de una configuración de la aplicación llamada WebServiceURL, con una clase llamada SampleSettings.
image
 
Aclaración: nuevamente estos pasos solo son usados en VS2005, pero como nuestro fin es el de seguir con el contenido del libro… lo muestro igual. Más tarde voy a comentar como se realiza esto en VS 2008 o 2010 (mucho más fácil y corto, por supuesto Guiño)

Hay dos maneras de hacerlo, aunque una es mucho más sencilla que el otro. La primera es escribir esto a mano. Pero un espacio de más o algún error ortográfico puede causar que la aplicación funcione mal. El otro método es utilizar la clase Settings y aprovechar el diseñador. Se debe agregar un nuevo proyecto, y crear elemento del tipo de archivo de configuración (SettingsFile).
En vs2005:
image
Después de crearlo, aparece un cuadro de diálogo Configuración para crear y cambiar el nombre de las configuraciones, fijar su alcance, el valor por defecto:
image
 
Otra forma de almacenar y devolver valores es ApplicationSettingsBase que posee una colección de Key/Value. Lo único que se necesita para usar esta clase es heredar de ApplicationSettingsBase y decorar cada propiedad que mapee a los valores de configuración con su UserScopedSettings o ApplicationScopedSettings.
image
Uno de los mayores beneficios es la de configuración de componentes remotos (permite indicar dónde se encuentran ubicados los assemblies sin necesidad de recompilar o implementar nuevamente.
Ejemplo de la forma de registrar un componente:
image
Para los casos de un IIS, se debe de tener cuidado a la hora de la configuración, porque se tiene que señalar la máquina donde se encuentra y el puerto.
image
 
Acá les dejo un video que encontré, es bastante completo, está en inglés, pero muestra todos los pasos para crear Application settings en Vs 2008 / 2010

.

 ....................................................................................................................................................
2da parte >> 
.....................................................................................................................................................

1 comentario:

  1. Estupendos los resumenes de los capitulos, de gran utilidad. Continua así!!!!

    Saludos

    ResponderEliminar