sfPot aop
Upcoming SlideShare
Loading in...5
×
 

sfPot aop

on

  • 584 views

sfPot marseille:

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

Statistics

Views

Total Views
584
Views on SlideShare
583
Embed Views
1

Actions

Likes
1
Downloads
3
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

sfPot aop sfPot aop Presentation Transcript

  • Aop
  • ABOUT MEKhalid Abdelmoumni Dévelopeur PHP / Symfony / Zend chezvirtual expo.mail : abdel.khalid@gmail.comtwiter: @icecorporation
  • INTRODUCTION
  • EVOLUTION des PARADIGMES de PROGRAMMATIONLangage machine → programmation structurelle → procedural → modulaire → orienté-objets → ...
  • 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)
  • POINTS FORTS POO● Méthode de conception● Rigueur● Définitions des besoins métier● Niveau abstraction plus élevé● Industrialisation des composants
  • 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"
  • PROGRAMMATION ORIENTE ASPECT
  • 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
  • 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.
  • 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
  • FOCUS
  • DEPENDANCE
  • PENSER ASPECT... 1. Déterminer les couches métier1. de lapplication et ensuite 2. Définir les aspects1. transverses.
  • EXEMPLES EN IMAGES
  • EXEMPLES EN IMAGESEXEMPLES EN IMAGESEXEMPLES EN IMAGES
  • Les Coupes Transverses● Sécurité● Persistence● Authentication● Gestion transactionnelle● Performance● Journalisation● Gestion des erreurs
  • 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 daspect.
  • Les Mots-Clés.... ADVICEGreffonUn programme qui sera activé à un certainpoint dexécution du système, défini par unpoint de jonction.
  • Les Mots-Clés.... ASPECT
  • Les Mots-Clés.... Cross-cutting concernsPréoccupations transversalesMix au sein dun même programme desous-programmes distincts couvrantdes aspects techniques séparés.
  • Les Mots-Clés.... WEAVINGTissageInsertion statique ou dynamique dans lesystème logiciel de lappel aux greffons.
  • 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.
  • 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
  • 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 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
  • 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
  • QUELQUES COMMANDES● aop_add_before(MyServices->doStuff(), $advice);● aop_add_after(MyServices->doStuff(), $advice);● aop_add_around(MyServices->doStuff(), adviceUpdatingArguments);
  • 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/
  • 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 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()
  • 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)
  • 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>
  • CONCLUSIONAvantages JMSAopBundleSimple à mettre en placeDésavantage JMSAopBundlePerfomance : Etre vigilant sur les points dejointure (WildCard)
  • A vous de jouer ...