SlideShare una empresa de Scribd logo
1 de 14
¿Qué es AOP?
 Según Wikipedia:
 Es un paradigma de programación
relativamente reciente cuya intención es
permitir una adecuada modularización de
las aplicaciones y posibilitar una mejor
separación de conceptos.
 Según Gregor Kiczales:
 Un mecanismo que permite la
implementación modular de asuntos
transversales (crosscutting concerns)
¿Qué es AOP?
 Asuntos transversales (crosscutting
concerns).
 Código disperso (scattered code).
 Código enmarañado (tangled code).
 Plomería (plumbing code)
¿Qué es AOP?
 Código disperso (scattered code).
¿Qué es AOP?
 Código enmarañado (tangled code).
¿Qué es AOP?
 Otras soluciones
Plantillas código (code snippet)
Generador de código
Herencia (mal usada)
Buscar y reemplazar
Pero con RegEx (expresiones regulares) !!!
¿Qué es AOP?
 Y si encontrara la forma de escribir
solamente esto y que el código se
comporte de igual manera que lo
anterior?
Conceptos básicos de AOP
Logging
Transacciones
Seguridad
Validación Cache
Conceptos básicos de AOP
Al ingresar a
un método
Al salir de un
método
Al fallar un
método
Al leer un field
Al escribir un
field
Conceptos básicos de AOP
 Consejo: código del aspecto a introducir.
 Punto de corte: qué consejo se va a
aplicar a cada punto de cruce?
 Introducción: modificar la interfaz de una
clase existente.
Conceptos básicos de AOP
 Destinatario: la clase que va a ser
“aconsejada”. Nuestra clase.
 Tejido (Weaving): es el proceso por el cual
se introducen los Aspectos a Destinatarios
para crear los Objetos Resultantes en los
determinados Puntos de Cruce.
 Resultante: target + aspecto. Es el
resultado de tejer aspectos en el
destinatario.
Técnicas en .Net
 Subclasing en tiempo de ejecución:
 Castle Dynamic Proxy
 Spring.AOP
 Linfu.DynamicProxy
 IL weaving
 Al compilar:
○ PostSharp
 Post compilación:
○ PostSharp
○ Linfu.AOP
○ Mono.Cecil ( ? )
 Técnicas nativas del framework (cuasi-AOP)
 Filters en Asp.Net MVC
 Behaviors en WCF
Dynamic Proxy
 Los frameworks de Dynamic Proxy
generan una clase (Destinatario)
dinámicamente que heredan o
implementan el Target, donde se inyectan
nuestros Aspectos.
 Punto de corte: método virtual o método
implementación de interfaz.
 A programar!
PostSharp
 PostSharp es un framework de AOP. Es por esto que toda
su interface respeta la nomenclatura de AOP.
 Modifica el código intermedio IL para introducir el
comportamiento (IL Weaving).
 Dispone de una arquitectura muy rica para hacer
MultiCast. Esto nos permite propagar nuestros aspectos
desde interfaces o clases base.
 Tiene muchos puntos de corte, se puede interceptar
métodos privados, públicos, fields, incluso clases sealed.
 Existen muchos aspectos publicados como plugins.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Pascal
PascalPascal
Pascal
 
Lenguaje de pascal
Lenguaje de pascalLenguaje de pascal
Lenguaje de pascal
 
Java
Java Java
Java
 
Clean Code Chapter 17: Smells and Heuristics (Spanish)
Clean Code Chapter 17: Smells and Heuristics (Spanish)Clean Code Chapter 17: Smells and Heuristics (Spanish)
Clean Code Chapter 17: Smells and Heuristics (Spanish)
 
Lógica De La Programación Y Lenguaje de Pascal
Lógica De La Programación Y Lenguaje de PascalLógica De La Programación Y Lenguaje de Pascal
Lógica De La Programación Y Lenguaje de Pascal
 
Cuestionario consultado
Cuestionario consultadoCuestionario consultado
Cuestionario consultado
 
Lenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de ControlLenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de Control
 
Prolog2
Prolog2Prolog2
Prolog2
 
Prolog
PrologProlog
Prolog
 
Lenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcionLenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcion
 
Presentación sobre Algoritmos!!:)
Presentación sobre Algoritmos!!:)Presentación sobre Algoritmos!!:)
Presentación sobre Algoritmos!!:)
 
2 poo u1 2 Hola mundo
2 poo u1 2 Hola mundo2 poo u1 2 Hola mundo
2 poo u1 2 Hola mundo
 
Conociendo los Lenguajes de Programacion
Conociendo los Lenguajes de ProgramacionConociendo los Lenguajes de Programacion
Conociendo los Lenguajes de Programacion
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
 
Algoritmo y programación
Algoritmo y programaciónAlgoritmo y programación
Algoritmo y programación
 
Algoritmo, diagramas
Algoritmo, diagramasAlgoritmo, diagramas
Algoritmo, diagramas
 
Informatica
InformaticaInformatica
Informatica
 
Conceptos en internet
Conceptos en internetConceptos en internet
Conceptos en internet
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 

Destacado (6)

Aprendiendo java y-poo
Aprendiendo java y-pooAprendiendo java y-poo
Aprendiendo java y-poo
 
12 programación-orientada-a-objetos-expo1-1..2
12 programación-orientada-a-objetos-expo1-1..212 programación-orientada-a-objetos-expo1-1..2
12 programación-orientada-a-objetos-expo1-1..2
 
Paradigma Programación Orientada a Objetos (POO)
Paradigma Programación Orientada a Objetos (POO)Paradigma Programación Orientada a Objetos (POO)
Paradigma Programación Orientada a Objetos (POO)
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Introduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalIntroduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos original
 
Programacion Orientada a Objetos - Undiad 4 polimorfismo
Programacion Orientada a Objetos - Undiad 4 polimorfismoProgramacion Orientada a Objetos - Undiad 4 polimorfismo
Programacion Orientada a Objetos - Undiad 4 polimorfismo
 

Similar a Introducción a la programación orientada a aspectos

.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup
 
Programacion web introduccion diego zuluaga
Programacion web introduccion diego zuluagaProgramacion web introduccion diego zuluaga
Programacion web introduccion diego zuluaga
Diego Zuluaga
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcurso
jorg_marq
 
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
Antonio Ognio
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
Domingo Suarez Torres
 
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
Domingo Suarez Torres
 
SWEBOK-HIPO-CASCACADA INGENIERIA DE SOFTWARE
SWEBOK-HIPO-CASCACADA INGENIERIA DE SOFTWARESWEBOK-HIPO-CASCACADA INGENIERIA DE SOFTWARE
SWEBOK-HIPO-CASCACADA INGENIERIA DE SOFTWARE
KarymeLauGarcia1
 

Similar a Introducción a la programación orientada a aspectos (20)

.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
Programacion web introduccion diego zuluaga
Programacion web introduccion diego zuluagaProgramacion web introduccion diego zuluaga
Programacion web introduccion diego zuluaga
 
AOP - OSUM springperu(1era Reunion)
AOP - OSUM springperu(1era Reunion)AOP - OSUM springperu(1era Reunion)
AOP - OSUM springperu(1era Reunion)
 
Uso de Librerías Objective-c en Xamarin.iOS
Uso de Librerías Objective-c en Xamarin.iOSUso de Librerías Objective-c en Xamarin.iOS
Uso de Librerías Objective-c en Xamarin.iOS
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcurso
 
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 
Aop
AopAop
Aop
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigo
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
Clase 1
Clase 1 Clase 1
Clase 1
 
Fondo1 (2)
Fondo1 (2)Fondo1 (2)
Fondo1 (2)
 
2 poo u1 1 Introduccion
2 poo u1 1 Introduccion2 poo u1 1 Introduccion
2 poo u1 1 Introduccion
 
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
 
P3 Componentes
P3 ComponentesP3 Componentes
P3 Componentes
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Introduccion a React
Introduccion a ReactIntroduccion a React
Introduccion a React
 
Java jaucito
Java jaucitoJava jaucito
Java jaucito
 
SWEBOK-HIPO-CASCACADA INGENIERIA DE SOFTWARE
SWEBOK-HIPO-CASCACADA INGENIERIA DE SOFTWARESWEBOK-HIPO-CASCACADA INGENIERIA DE SOFTWARE
SWEBOK-HIPO-CASCACADA INGENIERIA DE SOFTWARE
 

Más de Tensor

Más de Tensor (20)

Libertad
LibertadLibertad
Libertad
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisección
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicular
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colas
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016
 
Game maker
Game makerGame maker
Game maker
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivos
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadena
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de orden
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametros
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposición
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricatti
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicio
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadas
 
Ondas em
Ondas emOndas em
Ondas em
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticas
 

Último

2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 

Último (20)

EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptxEL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Diapositivas de animales reptiles secundaria
Diapositivas de animales reptiles secundariaDiapositivas de animales reptiles secundaria
Diapositivas de animales reptiles secundaria
 

Introducción a la programación orientada a aspectos

  • 1.
  • 2. ¿Qué es AOP?  Según Wikipedia:  Es un paradigma de programación relativamente reciente cuya intención es permitir una adecuada modularización de las aplicaciones y posibilitar una mejor separación de conceptos.  Según Gregor Kiczales:  Un mecanismo que permite la implementación modular de asuntos transversales (crosscutting concerns)
  • 3. ¿Qué es AOP?  Asuntos transversales (crosscutting concerns).  Código disperso (scattered code).  Código enmarañado (tangled code).  Plomería (plumbing code)
  • 4. ¿Qué es AOP?  Código disperso (scattered code).
  • 5. ¿Qué es AOP?  Código enmarañado (tangled code).
  • 6. ¿Qué es AOP?  Otras soluciones Plantillas código (code snippet) Generador de código Herencia (mal usada) Buscar y reemplazar Pero con RegEx (expresiones regulares) !!!
  • 7. ¿Qué es AOP?  Y si encontrara la forma de escribir solamente esto y que el código se comporte de igual manera que lo anterior?
  • 8. Conceptos básicos de AOP Logging Transacciones Seguridad Validación Cache
  • 9. Conceptos básicos de AOP Al ingresar a un método Al salir de un método Al fallar un método Al leer un field Al escribir un field
  • 10. Conceptos básicos de AOP  Consejo: código del aspecto a introducir.  Punto de corte: qué consejo se va a aplicar a cada punto de cruce?  Introducción: modificar la interfaz de una clase existente.
  • 11. Conceptos básicos de AOP  Destinatario: la clase que va a ser “aconsejada”. Nuestra clase.  Tejido (Weaving): es el proceso por el cual se introducen los Aspectos a Destinatarios para crear los Objetos Resultantes en los determinados Puntos de Cruce.  Resultante: target + aspecto. Es el resultado de tejer aspectos en el destinatario.
  • 12. Técnicas en .Net  Subclasing en tiempo de ejecución:  Castle Dynamic Proxy  Spring.AOP  Linfu.DynamicProxy  IL weaving  Al compilar: ○ PostSharp  Post compilación: ○ PostSharp ○ Linfu.AOP ○ Mono.Cecil ( ? )  Técnicas nativas del framework (cuasi-AOP)  Filters en Asp.Net MVC  Behaviors en WCF
  • 13. Dynamic Proxy  Los frameworks de Dynamic Proxy generan una clase (Destinatario) dinámicamente que heredan o implementan el Target, donde se inyectan nuestros Aspectos.  Punto de corte: método virtual o método implementación de interfaz.  A programar!
  • 14. PostSharp  PostSharp es un framework de AOP. Es por esto que toda su interface respeta la nomenclatura de AOP.  Modifica el código intermedio IL para introducir el comportamiento (IL Weaving).  Dispone de una arquitectura muy rica para hacer MultiCast. Esto nos permite propagar nuestros aspectos desde interfaces o clases base.  Tiene muchos puntos de corte, se puede interceptar métodos privados, públicos, fields, incluso clases sealed.  Existen muchos aspectos publicados como plugins.