significado programming programacion paradigma oriented orientado orientada objetos caracteristicas aspectos aop

aop - programming - ¿Qué es la Programación Orientada a Aspectos?



programacion orientada a aspectos spring boot (5)

AOP se trata de administrar la funcionalidad común (que se extiende a través de la aplicación, por lo tanto, transversal) dentro de la aplicación de manera que no esté integrada dentro de la lógica comercial.

Ejemplos de tales preocupaciones transversales son el registro, la gestión de la seguridad, la gestión de transacciones, etc.

Frameworks permite que esto se administre automáticamente con la ayuda de algunos archivos de configuración.

Duplicar:

¿Qué es la programación orientada a aspectos?

Cada vez que presento un podcast o leo una entrada de blog sobre él, incluso aquí, lo hacen parecer teoría de cuerdas o algo así. ¿Es la mejor manera de describirlo OOP con Dependency Injection en esteroides?

Cada vez que alguien intenta explicarlo, es como, Aspectos, [Adultos de sonido de dibujos animados de Peanuts], Ortogonales, [más ruido], preocupaciones transversales, etc. En serio, ¿alguien puede describirlo en términos sencillos?


Actualmente uso Post Sharp , leería la información de su sitio web. Lo uso para proporcionar seguridad en las llamadas a métodos.

"PostSharp es una plataforma abierta para el análisis y la transformación de ensamblajes .NET. Viene con PostSharp Laos, un plug-in poderoso pero simple que le permite desarrollar atributos personalizados que realmente agregan el comportamiento de su código. PostSharp Laos es el aspecto principal solución de programación orientada (AOP) para .NET Framework ".


Los atributos de clase y método en .NET son una forma de programación orientada a aspectos. Usted decora sus clases / métodos con atributos. Detrás de escena esto agrega código a su clase / método que realiza las funciones particulares del atributo. Por ejemplo, marcar una clase serializable permite que se serialice automáticamente para su almacenamiento o transmisión a otro sistema. Otros atributos pueden marcar ciertas propiedades como no serializables y se omitirán automáticamente del objeto serializado. La serialización es un aspecto implementado por otro código en el sistema y aplicado a su clase mediante la aplicación de un atributo de "configuración" (decoración).


Los ejemplos clásicos son seguridad y registro. En lugar de escribir código dentro de su aplicación para registrar ocurrencia de x o verificar objeto z para control de acceso de seguridad hay un artilugio de lenguaje "fuera de banda" de código normal que puede inyectar sistemáticamente seguridad o iniciar sesión en rutinas que no los tienen en su totalidad de tal manera que, aunque su código no lo suministre, se ocupa de ello.

Un ejemplo más concreto es el sistema operativo que proporciona controles de acceso a un archivo. Un programa de software no necesita verificar restricciones de acceso porque el sistema subyacente funciona para eso.

Si cree que necesita AOP en mi experiencia, realmente necesita invertir más tiempo y esfuerzo en una gestión de metadatos adecuada dentro de su sistema con un enfoque en el diseño estructural / de sistemas bien pensado.


Los términos de Laymans así que permítanme darles un ejemplo. Supongamos que tiene una aplicación web y necesita agregar registro de errores / auditoría. Una implementación sería entrar en cada método público y agregar sus bloques de captura de prueba, etc ...

Bien orientado a Aspect dice que es un error, permítanme inyectar mi método en su método, así que por ejemplo, en lugar de llamar a YourClass.UpdateModel (), el sistema podría llamar,

LoggingHandler.CallMethod () este método podría redirigir la llamada a UpdateModel pero lo envuelve en un bloque try catch para manejar los errores de registro.

Ahora el truco es que esta redirección se produce automágicamente, a través de la configuración o aplicando atributos a los métodos.

Esto funciona porque dijiste cosas cruzadas que son elementos de programación muy comunes que existen en todos los dominios, tales como: Registro, Auditoría, Gestión de transacciones, Autorización.

La idea detrás de esto es eliminar todo este código de plomería común de su negocio / nivel de aplicación para que pueda enfocarse en resolver el problema sin preocuparse por iniciar sesión en esta llamada a método o esa llamada a método.