Aop
ABOUT MEKhalid Abdelmoumni    Dévelopeur PHP / Symfony / Zend chezvirtual expo.mail : abdel.khalid@gmail.comtwiter: @iceco...
INTRODUCTION
EVOLUTION des PARADIGMES de                      PROGRAMMATIONLangage machine → programmation structurelle → procedural → ...
PROGRAMMATION ORIENTE OBJET   Issu de lévolution de plus en pluscomplexe des besoins et dune volonté dereprésenter le mond...
POINTS FORTS POO●   Méthode de conception●   Rigueur●   Définitions des besoins métier●   Niveau abstraction plus élevé●  ...
POINTS FAIBLES POO●   Difficulté à modéliser les    fonctionnalités globales (« crosscutting    concerns »).●   Peut condu...
PROGRAMMATION ORIENTE ASPECT
PROGRAMMATION ORIENTE ASPECTQuelques généralités●   Concue par G.Kiczales et son équipe au    Xerox Parc en1996●   Définie...
SOLUTION : AOP      ELIMINER LES SPAGHETTIS !!!!Nouvelle philosophie de programmation● Complémentaire à la POO● Permet de ...
AVANTAGES AOP● Maintenance aisée : indépendance  utilisation● Meilleure réutilisation : indépendance  environnement, métie...
FOCUS
DEPENDANCE
PENSER ASPECT...     1. Déterminer les couches métier1.     de lapplication et ensuite     2. Définir les aspects1.     tr...
EXEMPLES EN IMAGES
EXEMPLES EN IMAGESEXEMPLES EN IMAGESEXEMPLES EN IMAGES
Les Coupes Transverses●   Sécurité●   Persistence●   Authentication●   Gestion transactionnelle●   Performance●   Journali...
Les Mots-Clés....                 ASPECT    Un aspect est un moduledéfinissant des greffons et leurs pointsdactivation
Les Mots-Clés....                   POINT CUTPoint de coupeLocalisation du logiciel où est inséré ungreffon par le tisseur...
Les Mots-Clés....                    ADVICEGreffonUn programme qui sera activé à un certainpoint dexécution du système, dé...
Les Mots-Clés....    ASPECT
Les Mots-Clés....          Cross-cutting concernsPréoccupations transversalesMix au sein dun même programme desous-program...
Les Mots-Clés....                   WEAVINGTissageInsertion statique ou dynamique dans lesystème logiciel de lappel aux gr...
Les Mots-Clés....                JOIN POINTPoint de JonctionLocalisation spécifique dans le flotdexécution du système, où ...
AOP...En BREFEn résumé, lAOP consiste à :● Identifier les cross cutting concerns● Ecrire les greffons-advices qui représen...
AOP...En BREF
AOP...En BREF
Il va falloir apprendre à Tisser !
Les Mots-Clés....                            TISSEURS dASPECTJAVA    AspectJ : Extension du langage Java nécessitant donc ...
AOP sans Symphony                     AOP - PHP● Nest pas supporté nativement● Des solutions existent     Créée par Julien...
QUELQUES COMMANDES●   aop_add_before(MyServices->doStuff(),    $advice);●   aop_add_after(MyServices->doStuff(),    $advic...
CONCLUSION PHP-AOPAvantages PHP-AOPSimple à mettre en place, projetprometteur et très bonnedocumentation.Quelques liens:ht...
AOP ET SYMPHONYJMSAopBundle●Créer par Johaness Smith●Intégrer dans la version standard de symfony.
JMSAopBundle●   Installation standard●   Utilisation est simple     ■ Créer un intercepteur     ■ Créer un point de coupure
INTERCEPTEUR●   Créer une classe    MethodInterceptorInterface●   Injecter via le constructeur les services    transversau...
POINT DE COUPURE●   Création dune classe qui implémente    la classe PointcutInterface●   Création les méthodes function  ...
SERVICES<service id="my_logging_pointcut" class="AcmeDemoBundleAopLoggingPointcut">  <tag name="jms_aop.pointcut" intercep...
CONCLUSIONAvantages JMSAopBundleSimple à mettre en placeDésavantage JMSAopBundlePerfomance :  Etre vigilant sur les points...
A vous de jouer ...
Upcoming SlideShare
Loading in...5
×

sfPot aop

506

Published on

sfPot marseille:
Introduction à l'aop.
Présentation de PHP-AOP et de JMSAopBundle

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
506
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

sfPot aop

  1. 1. Aop
  2. 2. ABOUT MEKhalid Abdelmoumni Dévelopeur PHP / Symfony / Zend chezvirtual expo.mail : abdel.khalid@gmail.comtwiter: @icecorporation
  3. 3. INTRODUCTION
  4. 4. EVOLUTION des PARADIGMES de PROGRAMMATIONLangage machine → programmation structurelle → procedural → modulaire → orienté-objets → ...
  5. 5. PROGRAMMATION ORIENTE OBJET Issu de lévolution de plus en pluscomplexe des besoins et dune volonté dereprésenter le monde. Introduit de nouvelles approches pourconcevoir du code plus lisible et plusréutilisable (erradication des "gotos" au profitdes boucles, introduction des types et desstructurations modulaires autour des classes)
  6. 6. POINTS FORTS POO● Méthode de conception● Rigueur● Définitions des besoins métier● Niveau abstraction plus élevé● Industrialisation des composants
  7. 7. POINTS FAIBLES POO● Difficulté à modéliser les fonctionnalités globales (« crosscutting concerns »).● Peut conduire à lémergence de classes et/ou modules moins indépendants moins réutilisables.● Ne peut permet pas déliminer certains "Concerns"
  8. 8. PROGRAMMATION ORIENTE ASPECT
  9. 9. PROGRAMMATION ORIENTE ASPECTQuelques généralités● Concue par G.Kiczales et son équipe au Xerox Parc en1996● Définie comme la technologie du futur par le MIT Champ de Recherche ACctif
  10. 10. SOLUTION : AOP ELIMINER LES SPAGHETTIS !!!!Nouvelle philosophie de programmation● Complémentaire à la POO● Permet de séparer la description des aspects métiers et techniques● Décrit et détermine le code des aspects dans un nouveau type d’entité logicielle● Fusionne le code des aspects techniques et le code métier selon les points transversaux.
  11. 11. AVANTAGES AOP● Maintenance aisée : indépendance utilisation● Meilleure réutilisation : indépendance environnement, métier, domaine dapplication● Gain de productivité : parallélisation des développements● Meilleure qualité du code par une simplification donc meilleure lecture
  12. 12. FOCUS
  13. 13. DEPENDANCE
  14. 14. PENSER ASPECT... 1. Déterminer les couches métier1. de lapplication et ensuite 2. Définir les aspects1. transverses.
  15. 15. EXEMPLES EN IMAGES
  16. 16. EXEMPLES EN IMAGESEXEMPLES EN IMAGESEXEMPLES EN IMAGES
  17. 17. Les Coupes Transverses● Sécurité● Persistence● Authentication● Gestion transactionnelle● Performance● Journalisation● Gestion des erreurs
  18. 18. Les Mots-Clés.... ASPECT Un aspect est un moduledéfinissant des greffons et leurs pointsdactivation
  19. 19. Les Mots-Clés.... POINT CUTPoint de coupeLocalisation du logiciel où est inséré ungreffon par le tisseur daspect.
  20. 20. Les Mots-Clés.... ADVICEGreffonUn programme qui sera activé à un certainpoint dexécution du système, défini par unpoint de jonction.
  21. 21. Les Mots-Clés.... ASPECT
  22. 22. Les Mots-Clés.... Cross-cutting concernsPréoccupations transversalesMix au sein dun même programme desous-programmes distincts couvrantdes aspects techniques séparés.
  23. 23. Les Mots-Clés.... WEAVINGTissageInsertion statique ou dynamique dans lesystème logiciel de lappel aux greffons.
  24. 24. Les Mots-Clés.... JOIN POINTPoint de JonctionLocalisation spécifique dans le flotdexécution du système, où il estpossible dinsérer un greffon : avant,autour, à la place, après.
  25. 25. AOP...En BREFEn résumé, lAOP consiste à :● Identifier les cross cutting concerns● Ecrire les greffons-advices qui représentent laspect et qui permettent dencapsuler les préoccupations transersales● Choisir où appliquer ses greffons : pointcuts
  26. 26. AOP...En BREF
  27. 27. AOP...En BREF
  28. 28. Il va falloir apprendre à Tisser !
  29. 29. Les Mots-Clés.... TISSEURS dASPECTJAVA AspectJ : Extension du langage Java nécessitant donc une étape deprécompilation. Le résultat est toutefois du bytecode Java standard. JAC (Java Aspect Components) : Framework 100 % Java. Spring : Spring AOPPYTHON Aspyct : Moteur de programmation orientée aspect et autre Aspects.py : Bibliothèque léger et de bas niveau pour intercepter les appelsde fonction.PHP AOP-PHP Extension pecl téléchageable https://github.com/AOP-PHP/AOP JMSAopBundle Bundle symfony accessible http://jmsyst.com/bundles/JMSAopBundle
  30. 30. AOP sans Symphony AOP - PHP● Nest pas supporté nativement● Des solutions existent Créée par Julien Salleyron, Gérald Croës Installation simple - git clone https://github/AOP-PHP/AOP - cd AOP - phpize - ./configure - make - make test - make install
  31. 31. QUELQUES COMMANDES● aop_add_before(MyServices->doStuff(), $advice);● aop_add_after(MyServices->doStuff(), $advice);● aop_add_around(MyServices->doStuff(), adviceUpdatingArguments);
  32. 32. CONCLUSION PHP-AOPAvantages PHP-AOPSimple à mettre en place, projetprometteur et très bonnedocumentation.Quelques liens:http://www.croes.org/gerald/projects/aop/documentation_aop_extension_php.pdfhttp://aop-php.github.com/
  33. 33. AOP ET SYMPHONYJMSAopBundle●Créer par Johaness Smith●Intégrer dans la version standard de symfony.
  34. 34. JMSAopBundle● Installation standard● Utilisation est simple ■ Créer un intercepteur ■ Créer un point de coupure
  35. 35. INTERCEPTEUR● Créer une classe MethodInterceptorInterface● Injecter via le constructeur les services transversaux necessaire comme le Logger, SecurityContext, EntityManager …● Créer la méthode intercept(MethodInvocation $invocation) et● Intégrer le greffon● Appeler la méthode invocation->proceed()
  36. 36. POINT DE COUPURE● Création dune classe qui implémente la classe PointcutInterface● Création les méthodes function matchesClass(ReflectionClass $class) et matchesMethod(ReflectionMethod $method)
  37. 37. SERVICES<service id="my_logging_pointcut" class="AcmeDemoBundleAopLoggingPointcut"> <tag name="jms_aop.pointcut" interceptor="logging_interceptor"/> <argument type="string">helloAction</argument></service><service id="logging_interceptor" class="AcmeDemoBundleAopLoggingInterceptor"> <argument type="service" id="security.context" /> <argument type="service" id="logger" /> </service>
  38. 38. CONCLUSIONAvantages JMSAopBundleSimple à mettre en placeDésavantage JMSAopBundlePerfomance : Etre vigilant sur les points dejointure (WildCard)
  39. 39. A vous de jouer ...
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×