Novedades en Enterprise library 3.0

viernes, 13 de abril de 2007

Esta versión incluye dos nuevos “application blocks” llamados “Validation Application Block y “Policy Injection Application Block”. Dos guías y un editor de configuración que esta integrado con visual estudio. También fueron incluidas nuevas funcionalidades en el bloque de acceso a datos y en el manejo de logueo en una aplicación.

Cambios que afectan a todos los bloques de aplicación


  • Incluye assemblies precompilados de todo el código.
  • El código de Enterprise library esta provisto por un archivo de instalación (.msi) que permite la extracción del código y la ubicación del mismo en un directorio especificado por el usuario.
  • Las extensiones de gestión y el parche “The partial trust patch 2554” fueron incluidos en el corazón de Enterprise library 3.0.
  • Es posible utilizar Visual Studio, para crear y modificar archivos de configuración. Este editor de configuración que la consola de configuración individual, pero esta herramienta utiliza la ventana de propiedades de Visual Studio para mostrar las propiedades de los bloques de la aplicación y muestra los posibles errores incluidos en la lista de errores al compilar la aplicación. Ahora es posible utilizar la consola y el editor de configuración para crear y modificar las ya conocidas secciones o adaptar la configuración de un bloque de la aplicación a un ambiente de explotación en particular.
  • Existe la posibilidad de encriptar y desencriptar los datos de configuración de la aplicación.

Cambios que afectan a un bloque de aplicación en particular


Data Access Application Block

  • Este bloque ahora incluye una nueva clase llamada “SqlCeDatabase” que permite utilizar SQL Server Compact Edition (ce), una versión liviana de SQL Server que incluye las funciones esenciales de un gestor de bases de datos relacional.
  • Incluye una nueva sobrecarga del método “Database.UpdateDatabase” método que utiliza el parámetro “updateBatchSize”. Asignándole a este un valor entero positivo, obliga al objeto “DataAdapter” a transmitir paquetes de un tamaño determinado pudiendo de esta manera reducir el numero de idas y vueltas al servidor.

Exception Handling Application Block

  • Este bloque puede ser utilizado para poner en práctica la protección de excepciones en la interfaz con una aplicación de Windows Communication Foundation (WCF). El “ExceptionShieldingAttribute” puede invocar una política de excepción en la clase de implementación de un servicio. Y FaultContractExceptionHandler puede ser usado para captar excepciones por faltas al contrato de la política de seguridad e impedir que información sensible del sistema vuelva como mensaje de error a una llamada insegura.
  • El método “ExceptionPolicy.HandleException” incluye una nueva sobrecarga que permite atrapar una excepción y devuelve un parámetro de salida con el mensaje de la excepción, en vez de producir una falla.
  • Los manejadores de excepciones “Wrap” y “Replace” incluyen las propiedades de configuración adicionales que permiten especificar mensajes de excepción en recursos externos en vez de directamente en un archivo de configuración.

Logging Application Block

  • Ahora incluye un “Rolling Flat File Trace Listener” mantiene archivos de log de un tamaño predeterminado. Comienza escribiendo un archivo de log y cuando este llega al tamaño máximo predefinido lo cierra y comienza uno nuevo.
  • Incluye un adaptador para Windows Communication Foundation (WCF) que permite generar un log de mensajes provenientes de una aplicación generada con esa tecnología.
  • Incluye una versión extendida de la clase “TimeStampToken”. Anteriormente solo se permitía que el “TimeStamp” fuera guardado en coordenada de tiempo universal, pero ahora tiene un prefijo local que indica que debe ser guardado de acuerdo a la configuración horaria local.
  • También incluye desde ahora una clase llamada “ReflectedPropertyToken“. Que permite dar un formato especificado por el usuario para los objetos de clases propias, antes de escribirlas en el archivo de log.

Nuevos recursos en Enterprise Library 3.0

Esta nueva versión incluye dos nuevos bloques de aplicación (Validation Application Block Y Policy Injection Application Block ) dos paquetes de guías (strong-naming guidance package y Application Block Software Factory ) y un editor de configuración que es integrado a Visual Studio.

The Validation Application Block

Permite al desarrollador crear reglas propias de validaciones para sus aplicaciones y lograr los siguientes beneficios

  • Proporciona un acercamiento común a la definición de reglas de validación para los objetos de negocios que les permiten ser reutilizados a través de las diferentes capas de las aplicaciones.
  • Proporciona un juego de reglas de validación comunes y da la posibilidad al desarrollador de definir sus propias reglas fácilmente.
  • Provee adaptadores de tecnologías que permiten integrar a este bloque en aplicaciones de ASP.NET, Windows Forms y WCF.

The Policy Injection Application Block

Este bloque permite especificar un comportamiento que corta transversalmente a las capas de una aplicación, obligando a los objetos de todas ellas respetar una política definida. Este comportamiento es utilizado cuando tareas, propiedades y/o procesos son comunes para diferentes objetos, como por ejemplo la autorización, validación e instrumentación necesaria para realizar una tarea en particular. El objetivo de este bloque es separar el corazón de la aplicación de los intereses transversales a las capas de la misma y reducir al mínimo los problemas relacionados con la asociación en la implementación de propiedades comunes entre ambas.

Proporciona una solución prefabricada que es fácil para poner en práctica en usos nuevos y existentes, y en particular en usos que ya aprovechan “Enterprise Library”. Esto acelera el desarrollo ayudando a manejar preocupaciones que cortan transversalmente la aplicación.


The Strong-Naming Guidance Package

Este lanzamiento incluye una guía de nombramiento que se integra a Visual Studio. Esto automatiza el proceso de conexión de proyectos y modifica el atributo “InternalsVisibleTo”, para incluir una llave pública.


The Application Block Software Factory

Provee una guía escrita y automatizada que simplifica el proceso de creación bloques de aplicación propia o provista. Incluye recetas de automatización de dirección para una variedad de tareas, como lo siguiente:

  • Crear nuevos bloques de aplicación.
  • Crear nuevos proveedores de librerías.
  • Crear nuevos proveedores para los bloques de aplicación de “Enterprise Library” tipados o no tipados.
  • Crear nuevos proveedores genéricos tipados o no tipados.
  • Conversión de proveedores no tipados en tipados.
  • Crear nuevos proveedores de clases base.
  • Etc.

Migración desde una versión anterior

En general cualquier aplicación creada usando Enterprise Library 2.0 funciona sin necesidad de ningún cambio de código. Será necesario refrescar las referencias hacia los nuevos assemblies y los archivos de configuración para hacer referencia a la versión correcta de los mismos.

Desde la página de MSDN se podrá obtener mayor información para realizar el cambio de 2.0 a 3.0 de las librerías para cada bloque en particular.

http://msdn2.microsoft.com/en-us/library/aa480453.aspx
Leer más...

Detección automática de un Web Proxy

martes, 10 de abril de 2007

Muchas veces hemos visto en programas de escritorio que se conectan a Internet, la opción “utilizar la configuración de Internet Explorer”, esto por lo general se utiliza para tomar de éste la configuración de un web Proxy.

Cuando se configura un proxy en Internet Explorer, esto se almacena en el registro de Windows, y podemos acceder a esta información desde .NET a través de la clase WebRequest.



Ejemplo

A modo de ejemplo puntual voy a mostrar un “caso de estudio” con el que nos encontramos recientemente. Este fragmento de una aplicación debe descargar desde nuestro blog los últimos artículos publicados e insertarlos en un DataSet para luego mostrarlos apropiadamente.

Para esto se descarga un listado RSS (un archivo xml con el resumen de los artículos del blog) de la web (via http), que luego es parseado y recorrido para construir el DataSet deseado.

Para esto creamos un HttpWebRequest cuya respuesta es utilizada para construir un XmlDocument, luego los nodos de este xml son recorridos con un simple foreach.



Problema

El problema surge al resultar imposible acceder directamente al servidor de nuestro blog desde la máquina donde corre esta aplicación, necesitamos utilizar el Proxy local. No resulta viable fijar este dato en nuestro app.config obligando a mantener este dato actualizado en cada instalación.





Solución





La línea interesante aquí es:

A partir del Framework 2.0 de .NET en el namespace System.Net la clase WebRequest incorpora el método estático GetSystemWebProxy() que devuelve el Proxy configurado en Internet Explorer para el usuario impersonado. Y podemos así asignar programáticamente este Proxy al Request creado.

Un punto importante a destacar es que esta configuración es dinámica, puede por ejemplo pasar por alto el Proxy si la URI indicada pertenece a un servidor local (si así se indica en la configuración de Proxy en Internet Explorer).

Si la detección automática del Proxy falla, se utiliza el Proxy estático (si se estableció uno). Finalmente si todo esto falla, se intenta la conexión directa.

Conclusión

esta práctica nos permite olvidarnos de la detección o configuración de Proxys en nuestro código, y simplificar la molestia tarea de configuración y diagnostico de problemas en la conexión a Internet.



Más información

Sobre la detección automática de Proxys:
Leer más...