Aspect Oriented Programming. Notițe și câteva idei. Knall Andreas
1
AOP. Notiţe şi câteva idei
© msg systems Romania, 04/04/2013
Ce este Aspect Oriented Programming?
AOP este o paradigmă nouă complementară celor existente.
Separă cross cutting concerns de restul codului.
Urmăreşte modularizarea unor aspecte întregi ale unui proiect.
AOP
Elimină codul duplicat. Funcţioanlităţile AOP şi incidenţa acestora poate fi modificată într-o manieră facilă, având efect direct în locurile folosite. Implementări în diferite limbaje (Spring AOP, AspectJ, Microsoft Enterprise Library, Javascript etc..) 2
AOP. Notiţe şi câteva idei
© msg systems Romania, 04/04/2013
Cross cutting concerns.
Client Layer
Service Layer
Funcţionalitate secundară, folosită în multe locuri ale aplicaţiei.
Security
Logging
Data Acces Layer
Bucăţi de cod care pot fi dificil modularizate cu OOP. Cel mai proeminent exemplu: Logging-ul.
Fară AOP sau o arhitectură bună, codul tinde să fie împrăştiat prin toată aplicaţia.
3
AOP. Notiţe şi câteva idei
© msg systems Romania, 04/04/2013
Câteva exemple.
AOP se poate folosi în următoarele situaţii:
4
Tracing
Erori
• Logging • Trimiterea automată de e-mailuri
Detectarea și corectarea erorilor • Detectarea erorilor • Corectarea erorilor
Securitate
Altele
• Validarea datelor • Autorizare
• Managementul tranzacţiilor • Internaţionalizare
AOP. Notiţe şi câteva idei
© msg systems Romania, 04/04/2013
Noţiuni. Advice
Implementarea unui cross-cutting concern Poate fi modularizat în clase şi metode
Join Points
Puncte în execuţia codului De regulă Join Point-urile se declară la nivel de metodă
Pointcut
5
Modalitate de a cuantifica join point-urile De exemplu printr-un regular expression
AOP. Notiţe şi câteva idei
© msg systems Romania, 04/04/2013
Reversul medaliei
Unit tests.
Eventuale probleme de performanţă în momentul în care sunt definite multe aspecte, care posibil comunică între ele.
Probleme AOP Pobleme la înţelegerea codului.
Probleme la debugging.
6
AOP. Notiţe şi câteva idei
© msg systems Romania, 04/04/2013
Mulţumesc pentru atenţia acordată!
Andreas Knall GB Automotive / Function Phone: +49 89 96101-xxxx Andreas.Knall@msg-systems.com www.msg-systems.ro
www.msg-systems.com
7
AOP. Notiţe şi câteva idei
© msg systems Romania, 04/04/2013