Policy Injection Application Block

Trabajando... Policy Injection Application Block implementa funcionalidad de Programacion Orientada a Aspectos (Aspect Oriented Programming). Mediante un mecanismo de intercepcion permite extender la funcionalidad de metodos y propiedades sin modificar el codigo fuente. Se utiliza principalmente para separar la logica de la aplicacion de funcionalidades transversales (cross-cutting concerns) como logging, autorizacion, intrumentacion, transacciones y caching. Las funcionalidades transversales son aplicadas como politicas definidas en el archivo de configuracion en el cual se dermina mediante wildcards a que metodos y propiedades se aplicara que funcionalidad adicional. Policy Injection Application Block es parte de Enterprise Library. Ejemplo Ilustrativo El siguiente metodo registra una orden. Incluye en su codigo funcionalidad adicional de: Logging, autorizacion, validacion, manejo de excepciones e instrumentacion. public void RegistrarOrden(Orden orden) { logger.LogInicio(); //Registra en el log el inicio del metodo autorizacionService.Autorizar(); //Autorizacion del principal actual try { validator.Validate(orden); //Verifica las reglas de validacion del objeto orden dataService.Registrar(orden); //Registra la orden } catch (Exception ex) { handlerAux.handle(ex, Handle.Reemplazar); // Reemplaza la excepcion por una mas significativa. } contadores.Aumentar(); //Aumenta el contador de rendimiento logger.LogFin(); //Registra en el log el final del metodo con el tiempo de ejecucion } Estas funcionalidad transversar usualmente debe incorporarse en muchos metodos y propiedades de una aplicacion. El codigo es repetitivo, muy similar para la gran parte de los casos y no esta estrechamente ligado a la funcionalidad que implemneta el metodo. Policy Injection Application Block permite remover este codigo repetitivo y definir las funcionalidades transversales que se aplicacaran a cada metodo y propiedad usando el archivo de configuracion. Como la funcionalidad es similar se definen politicas (grupos de funcionalidades) que se aplican a un conjunto de metodos y propiedades si cumplen condiciones como pertenecer a un ensamblado o espacio de nombres, que el nombre empiece o contenga un string, que tegan tal firma, etc. Al remover las funcionalidades transversales el metodo RegistrarOrden incluiria solo la logica de registro. La Programacion de Orientada a Aspectos permite separar la logica de la aplicacion de la logica de la funcionalidad transversal. El metodo seria simplemente asi: public void RegistrarOrden(Orden orden) { dataService.Registrar(orden); } Los beneficios de esta tecnica son: Intercepcion Policy Injection Application Block funciona usando un mecanismo de intercepcion. El objeto debe ser creado usando una fabrica. La fabrica crea el obejy, la cual crea y devuelve un proxy y define la cadena de controladores entre el proxy el objeto FOTO