viernes, abril 20, 2012

AOP - Que es la programacion orientada a aspectos?

Tomado de : Metodologias de Sistemas
 Orientar la programación al uso de "aspectos", que extraño suena no?; tratemos de explicar su uso en la POO.

Definiciòn de AOP

Segùn Wikipedia : "intenta ayudar a los programadores en la separaciòn de incumbencias (soc-separation of concerns), especificamente las incumbencias cruzadas (cross-cutting concerns), como un avance en el uso de la modularizaciòn."

En la POO la modularizaciòn implica el uso del encapsulamiento, ya sea a nivel de clases, paquetes, componentes, capas. Siempre buscamos asignar responsabilidades y aislarlas en su propio mòdulo funcional, logrando diseños de caja negra que nos permitan reusabilidad y fàcil mantenimiento.

Aunque, existen ciertas incumbencias ò àreas de interès (concerns) que son generales a varios mòdulos, por lo que, al incluìr esta funcionalidad en ellos, estarìamos repitiendo còdigo; el cual en caso de tener que modificarlo implicarìa hacerlo en todos los mòdulos que lo contengan. Por ejemplo: la seguridad, el "logging", el "debugging", sincronizaciòn y administraciòn de transacciones, cacheo.

Entonces existen caracterìsticas como las mencionadas que no son modularizables, son incumbencias que no pueden ser aisladas dentro de un solo mòdulo, ya que es su naturaleza estar distribuida su implementaciòn en varios mòdulos.






En este punto debe quedar claro que nuestro sistema està formado por un cojunto de "concerns", donde algunos de ellos no pueden formar parte de un solo mòdulo, a estos los llamaremos "cross-cutting concerns".

EL AOP esta diseñado para manejar estos "cross-cutting concerns", proveyèndonos de un mecanismo conocido como "Aspecto" (aspect).


Aspecto

"Modularizaciòn de un "concern", sin el cual deberìa implementarse a travès de mùltiples objetos con distintas responsabilidades."

"Funcionalidad que se quiere aplicar a otras partes del còdigo (autorizaciones, logging, transacciones,...)"


Como implemento AOP en .NET?

Hay varios frameworks que permiten trabajar con AOP en .NET, entre ellos es de destacar Spring.NET que nos da esta funcionalidad con el uso de su componente Spring.AOP

Para comprender el funcionamiento de los Aspectos, debemos definir algunos conceptos AOP:

Advice : cada una de las cosas que puede hacer un Aspect

Join Point: Punto del programa en el que se ejecutarà un Advice

Point Cut: Conjunto de Join Points, un conj. de mètodos donde se ejecutarà un Aspect.

Target: El objeto sobre el que se aplicarà el/los aspecto/s. Es el obj. que contiene el Join Point.

Introduction: Manipular un Target para añadirle còdigo. Permite introducir nuevas interfaces a cualquier "obj. advised" (Target). Por ej.: un obj. puede implementar "IAuditable" para simplificar el rastreo de cambios en su estado.

Weaver: Caract. de ensamblado para crear los "objs. advised". Puede ser hecho en tiempo de ejecuciòn (como Spring.Net) ò en tiempo de compilaciòn (usando el compilador Gripper-Loom-Net)

Algunos tipos de Advice:
  • Before : Justo antes de un Join Point
  • After: Despuès de terminar un Join Point (haya o no excepciòn)
  • Around: envuelve la ejecuciòn del Join Point, pudiendo ejecutar còd. antes y despues, incluso evitar su ejecuciòn.
En un pròximo post entrare en detalle sobre el uso de AOP de Spring con un ejemplo concreto.
Tomado de: 20Minutos
 
Los dos principales candidatos a la Presidencia de Francia, conservador Nicolas Sarkozy y el socialista François Hollande, quieren extender el control de las descargas ilegales en Internet. Así lo expresaron el martes los dos candidatos a la página web francesa especializada en cine allocine.fr.

El actual presidente francés y su rival socialista quieren movilizar a los proveedores de Internet, a los motores de búsqueda y a las herramientas de pago para bloquear las páginas web que ofrecen descargas piratas.
Aunque Sarkozy y Hollande mostraron que discrepan sobre el dispositivo legal con el que ahora cuenta Francia para enfrentarse a la piratería, ambos consideran que se debe ampliar la respuesta para combatir ese tipo de páginas web. "Los proveedores de Internet deben bloquear el acceso, los motores de búsqueda deben dejar de referenciarlos y los intermediarios de pago (como Mastercard, Paypal o Visa) deben boicotearlos", señaló el presidente conservador.

Sarkozy buscará "una cooperación judicial y policial internacional para luchar contra la piratería"

Su rival y al que los sondeos dan como favorito para las elecciones presidenciales de este mes, agrega al listado a los "actores digitales deslocalizados". "Endureceremos los dispositivos contra cualquiera que intente comerciar haciendo disponibles en Internet obras de las que no se tengan los derechos", aseguró Hollande.

Según un estudio publicado por el organismo galo contra la piratería digital (Hadopi) y elaborado a partir de simulaciones por la firma IDate, los ingresos que obtienen los sitios de descarga ilegal representaron en Francia de 52 a 71 millones de euros (de 68 a 93 millones de dólares) entre 2010 y 2011, es decir, casi un tercio de los 177 millones que alcanzó la oferta legal.

Sarkozy se compromete a buscar "una cooperación judicial y policial internacional para luchar contra esta forma de criminalidad" y considera positivos los resultados que está aportando el actual dispositivo para combatir la piratería digital en Francia. Dicha ley, conocida como Hadopi y aprobada durante su mandato, prevé el corte de la conexión a Internet a quienes reincidan en la descarga ilícita de contenidos digitales.

Francia "representaba el 6,2% de los intercambios ilegales del mundo a inicios del año 2011 y pasó al 4,5% a finales de ese mismo año", señaló Sarkozy, quien aboga por reaccionar "simultáneamente" tanto contra los intercambios P2P como contra las webs piratas de visionado en línea (streaming) o de descarga directa.

Para Hollande, sin embargo, se trata de un dispositivo que "ha demostrado su ineficacia y su injusticia" porque "no ha solucionado nada y contribuye a oponer inútilmente a los artistas y a su público". Por ello, propondrá la creación de una nueva ley que apoye además la producción y la creación y que empuje a los internautas hacia ofertas legales que actualmente "no están suficientemente desarrolladas".

A pesar de las diferencias, ambos candidatos coinciden en la importancia del cierre el pasado enero de la web Megaupload y la detención de su fundador y de sus máximos responsables en una operación lanzada por el FBI estadounidenses y llevada a cabo en Nueva Zelanda. "Contra esas personas no habrá ninguna tolerancia", aseguró Hollande, en sintonía con Sarkozy, quien desea que la iniciativa estadounidense "sirva de ejemplo en el futuro".