¿Cuáles son los posibles casos de uso de AOP?

4 minutos de lectura

avatar de usuario
Ondra Žižka

Me gustaría hacer una imagen de cuáles son los casos posibles para la participación efectiva de AOP en el diseño de aplicaciones. Todo lo que he conocido hasta ahora es:

  • relacionado con el registro
  • revisiones de seguridad
  • Gestión de transacciones
  • ajuste de una aplicación heredada

¿Algo más?

(No tiene que ser necesariamente AOP basado en proxy de Spring, sino JBoss AOP).

(Pregunta relacionada)

  • “los casos posibles”? Eso es casi infinito recopilación. Sin embargo, no todas son una buena idea. Poner todos son posibles. ¿Hay alguna forma de acotar o enfocar esa pregunta?

    – S. Lott

    4 de febrero de 2010 a las 2:57

  • Lea bien: la pregunta contenía “los posibles casos para la participación efectiva de AOP en el diseño de aplicaciones”. Con eso me refiero a casos en los que es una buena idea usar AOP. Lo siento si la pregunta no es clara.

    – Ondra Žižka

    4 de febrero de 2010 a las 2:59


  • Debería ser wiki de la comunidad

    – Skaffman

    4 de febrero de 2010 a las 9:54

  • La “participación efectiva” parece una invitación a enumerar simplemente todas las formas posibles en que se puede utilizar AOP. “Efectivo” es un término resbaladizo, y sin ningún tipo de calificación o filtrado, un fanático de AOP podría llamar “eficaz” a la técnica AOP más tonta.

    – S. Lott

    4 de febrero de 2010 a las 11:23

Puedo darte dos ejemplos donde lo usamos:

  • Registro automático de objetos en JMX para gestión remota. Si una clase está anotada con nuestro @AutoRegister anotación, tenemos un aspecto que busca nuevas instancias de esa clase y las registra en JMX automáticamente.

  • Registro de auditoría (el caso de uso de AOP estándar de oro). Es un poco tosco, pero el enfoque general es anotar métodos que representan alguna acción auditable. Combinado con algo como Spring Security, podemos tener una idea bastante buena de:

    • quien es el usuario
    • qué método están invocando
    • qué datos están proporcionando
    • a qué hora se invocó el método
    • si la invocación fue exitosa o no (es decir, si se lanzó una excepción)

  • ¿Se puede usar aop para el código comercial? suponga que tengo un presentador al que puede configurar una vista o NO (mvp). entonces no quiero seguir comprobando si la vista es nula para cada llamada para ver ¿puedo manejar esta verificación nula antes de cualquier método de llamada para ver?

    – Amir Ziarati

    6 de junio de 2018 a las 8:03

  • @Kevin: ¿Cómo maneja la falla de auditoría en este caso? ¿Marca la auditoría fallida si arroja alguna excepción, incluso excepciones triviales como dividebyzero, nullpointer-exception?

    – Gaurav

    17 de octubre de 2018 a las 6:09

avatar de usuario
miguel willes

  • Manejo de excepciones: no es necesario repetir la horrible lista de intentar … atrapar, atrapar, atrapar, etc. También significa que se garantiza que el manejo de excepciones sea consistente.
  • Supervisión del rendimiento: muy útil ya que el uso de un aspecto no es intrusivo y se puede hacer después del hecho y luego desactivarlo cuando ya no se necesite.

Guau… Hace 10 años – no tenía mucho para AOP… Aquí hay algunos más

  • Ser capaz de personalizar objetos donde no tiene acceso a su constructor (por ejemplo, entidades jpa)
  • Implementar reglas de seguridad (la seguridad dice que el usuario no puede llamar a este método; AOP puede implementar eso)
  • Administrador de transacciones (inicio, confirmación, reversión)
  • Almacenamiento en caché: desea almacenar en caché el resultado de un método y no volver a llamarlo

Para ver la cobertura de AOP en términos de aplicabilidad, le recomiendo que lea el libro Aspect-Oriented-Software-Development-Use-Cases. Este libro elabora casos de uso de requisitos funcionales y no funcionales utilizando AOP. Después de eso, verá que los aspectos se pueden usar para más requisitos que el registro, el seguimiento, la seguridad, etc.

Almacenamiento en caché a nivel de método, si su método no tiene estado (me refiero a que devuelve el mismo valor cuando se invoca repetidamente con los mismos valores de parámetro). Esto es más efectivo en el caso de los métodos DAO porque evita el acceso a la base de datos.

Lo usamos para la administración de licencias de software, es decir, permitir que el software se ejecute solo si la computadora tiene instaladas algunas licencias específicas. No es tan diferente de los usos enumerados, ya que es una forma de control de seguridad.

Publiqué una entrada de blog describiendo una implementación práctica aquí

avatar de usuario
adeel ansari

Un uso efectivo de AOP, además de todos los que enumeró, puede ser la validación. Validación de entrada de usuario u objetos de negocio.

Artículos relacionados que debes mirar.

avatar de usuario
ewernli

  • Bloqueos de lectura/escritura. En lugar de replicar el mismo fragmento, utilicé un aspecto para definir los métodos que necesitaban un bloqueo de lectura o un bloqueo exclusivo.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad