SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
Aop
ABOUT ME



Khalid Abdelmoumni
    Dévelopeur PHP / Symfony / Zend chez
virtual expo.



mail : abdel.khalid@gmail.com

twiter: @icecorporation
INTRODUCTION
EVOLUTION des PARADIGMES de
                      PROGRAMMATION




Langage machine → programmation structurelle → procedural → modulaire → orienté-objets → ...
PROGRAMMATION ORIENTE OBJET



   Issu de l'évolution de plus en plus
complexe des besoins et d'une volonté de
représenter le monde.
   Introduit de nouvelles approches pour
concevoir du code plus lisible et plus
réutilisable (erradication des "gotos" au profit
des boucles, introduction des types et des
structurations 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 ASPECT



Quelques 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
  d'application
● 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étier
1.
     de l'application et ensuite

     2. Définir les aspects
1.
     transverses.
EXEMPLES EN IMAGES
EXEMPLES EN IMAGES
EXEMPLES EN IMAGES
EXEMPLES 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 module
définissant des greffons et leurs points
d'activation
Les Mots-Clés....
                   POINT CUT




Point de coupe
Localisation du logiciel où est inséré un
greffon par le tisseur d'aspect.
Les Mots-Clés....
                    ADVICE


Greffon
Un programme qui sera activé à un certain
point d'exécution du système, défini par un
point de jonction.
Les Mots-Clés....
    ASPECT
Les Mots-Clés....
          Cross-cutting concerns




Préoccupations transversales
Mix au sein d'un même programme de
sous-programmes distincts couvrant
des aspects techniques séparés.
Les Mots-Clés....
                   WEAVING




Tissage
Insertion statique ou dynamique dans le
système logiciel de l'appel aux greffons.
Les Mots-Clés....
                JOIN POINT



Point de Jonction
Localisation spécifique dans le flot
d'exécution du système, où il est
possible d'insérer un greffon : avant,
autour, à la place, après.
AOP...En BREF


En résumé, l'AOP consiste à :

● Identifier les cross cutting concerns
● Ecrire les greffons-advices qui représentent
  l'aspect et qui permettent d'encapsuler 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 d'ASPECT


JAVA
    AspectJ : Extension du langage Java nécessitant donc une étape de
précompilation. Le résultat est toutefois du bytecode Java standard.
    JAC (Java Aspect Components) : Framework 100 % Java.
    Spring : Spring AOP

PYTHON
     Aspyct : Moteur de programmation orientée aspect et autre
     Aspects.py : Bibliothèque léger et de bas niveau pour intercepter les appels
de 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

● N'est 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-AOP


Avantages PHP-AOP
Simple à mettre en place, projet
prometteur et très bonne
documentation.

Quelques liens:
http://www.croes.org/gerald/projects/aop/documentation_aop_extension_php.pdf
http://aop-php.github.com/
AOP ET SYMPHONY



JMSAopBundle
●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 d'une 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>
CONCLUSION


Avantages JMSAopBundle
Simple à mettre en place

Désavantage JMSAopBundle
Perfomance :
  Etre vigilant sur les points de
jointure (WildCard)
A vous de jouer ...

Contenu connexe

En vedette

Elasticmeetup curiosity 20141113
Elasticmeetup curiosity 20141113Elasticmeetup curiosity 20141113
Elasticmeetup curiosity 20141113Erwan Pigneul
 
Mobile commerce km
Mobile commerce kmMobile commerce km
Mobile commerce kmKartik Mehta
 
TIBCO Loyalty Lab paris event
TIBCO Loyalty Lab paris eventTIBCO Loyalty Lab paris event
TIBCO Loyalty Lab paris eventGerald Guigui
 
Growth hacking - Telecom bretagne - 2015-10-21
Growth hacking - Telecom bretagne - 2015-10-21Growth hacking - Telecom bretagne - 2015-10-21
Growth hacking - Telecom bretagne - 2015-10-21Francois Pacot
 
Zéphir, ERP dans le Cloud
Zéphir, ERP dans le CloudZéphir, ERP dans le Cloud
Zéphir, ERP dans le CloudZéphir
 
Seerus analytics or how integrate smart data in your company
Seerus analytics or how integrate smart data in your company Seerus analytics or how integrate smart data in your company
Seerus analytics or how integrate smart data in your company Quentin Liénart
 
Implications of 4G Deployments (MEF for MPLS World Congress Ethernet Wholesa...
Implications of 4G Deployments (MEF for MPLS World Congress  Ethernet Wholesa...Implications of 4G Deployments (MEF for MPLS World Congress  Ethernet Wholesa...
Implications of 4G Deployments (MEF for MPLS World Congress Ethernet Wholesa...Javier Gonzalez
 
Brand Positioning, a component of INDIGITAL BRANDING MODEL©
Brand Positioning, a component of INDIGITAL BRANDING MODEL©Brand Positioning, a component of INDIGITAL BRANDING MODEL©
Brand Positioning, a component of INDIGITAL BRANDING MODEL©Alfredo Escobar
 
CogLab | Imaginove | UI#02 – BCI : Usages et enjeux pour l’innovation et la c...
CogLab | Imaginove | UI#02 – BCI : Usages et enjeux pour l’innovation et la c...CogLab | Imaginove | UI#02 – BCI : Usages et enjeux pour l’innovation et la c...
CogLab | Imaginove | UI#02 – BCI : Usages et enjeux pour l’innovation et la c...af83
 
Big on Mobile, Big on Facebook. How the European super startups did it.
Big on Mobile, Big on Facebook. How the European super startups did it. Big on Mobile, Big on Facebook. How the European super startups did it.
Big on Mobile, Big on Facebook. How the European super startups did it. Julien Lesaicherre
 
IBM MQ Overview (IBM Message Queue)
IBM MQ Overview (IBM Message Queue)IBM MQ Overview (IBM Message Queue)
IBM MQ Overview (IBM Message Queue)Juarez Junior
 
Indian IT industry analysis of 5 slides and company ( Infosys) analysis ( FY ...
Indian IT industry analysis of 5 slides and company ( Infosys) analysis ( FY ...Indian IT industry analysis of 5 slides and company ( Infosys) analysis ( FY ...
Indian IT industry analysis of 5 slides and company ( Infosys) analysis ( FY ...Saurabh Mittra
 
Efficient Pagination Using MySQL
Efficient Pagination Using MySQLEfficient Pagination Using MySQL
Efficient Pagination Using MySQLSurat Singh Bhati
 
Performance and scalability for machine learning
Performance and scalability for machine learningPerformance and scalability for machine learning
Performance and scalability for machine learningArnaud Rachez
 
Maximizing information and communications technologies for development in fai...
Maximizing information and communications technologies for development in fai...Maximizing information and communications technologies for development in fai...
Maximizing information and communications technologies for development in fai...Ed Dodds
 
Talking data 2014年上半年移动旅行应用行业报告
Talking data 2014年上半年移动旅行应用行业报告Talking data 2014年上半年移动旅行应用行业报告
Talking data 2014年上半年移动旅行应用行业报告Leo Cui
 
Administrateurs salariés, Droits devoir et enjeux
Administrateurs salariés,  Droits devoir et enjeuxAdministrateurs salariés,  Droits devoir et enjeux
Administrateurs salariés, Droits devoir et enjeuxChristophe Gauthier
 

En vedette (20)

Elasticmeetup curiosity 20141113
Elasticmeetup curiosity 20141113Elasticmeetup curiosity 20141113
Elasticmeetup curiosity 20141113
 
Mobile commerce km
Mobile commerce kmMobile commerce km
Mobile commerce km
 
TIBCO Loyalty Lab paris event
TIBCO Loyalty Lab paris eventTIBCO Loyalty Lab paris event
TIBCO Loyalty Lab paris event
 
Growth hacking - Telecom bretagne - 2015-10-21
Growth hacking - Telecom bretagne - 2015-10-21Growth hacking - Telecom bretagne - 2015-10-21
Growth hacking - Telecom bretagne - 2015-10-21
 
CANDDi Insights
CANDDi InsightsCANDDi Insights
CANDDi Insights
 
Zéphir, ERP dans le Cloud
Zéphir, ERP dans le CloudZéphir, ERP dans le Cloud
Zéphir, ERP dans le Cloud
 
Introduction to C#3
Introduction to C#3Introduction to C#3
Introduction to C#3
 
Seerus analytics or how integrate smart data in your company
Seerus analytics or how integrate smart data in your company Seerus analytics or how integrate smart data in your company
Seerus analytics or how integrate smart data in your company
 
Implications of 4G Deployments (MEF for MPLS World Congress Ethernet Wholesa...
Implications of 4G Deployments (MEF for MPLS World Congress  Ethernet Wholesa...Implications of 4G Deployments (MEF for MPLS World Congress  Ethernet Wholesa...
Implications of 4G Deployments (MEF for MPLS World Congress Ethernet Wholesa...
 
Brand Positioning, a component of INDIGITAL BRANDING MODEL©
Brand Positioning, a component of INDIGITAL BRANDING MODEL©Brand Positioning, a component of INDIGITAL BRANDING MODEL©
Brand Positioning, a component of INDIGITAL BRANDING MODEL©
 
CogLab | Imaginove | UI#02 – BCI : Usages et enjeux pour l’innovation et la c...
CogLab | Imaginove | UI#02 – BCI : Usages et enjeux pour l’innovation et la c...CogLab | Imaginove | UI#02 – BCI : Usages et enjeux pour l’innovation et la c...
CogLab | Imaginove | UI#02 – BCI : Usages et enjeux pour l’innovation et la c...
 
Big on Mobile, Big on Facebook. How the European super startups did it.
Big on Mobile, Big on Facebook. How the European super startups did it. Big on Mobile, Big on Facebook. How the European super startups did it.
Big on Mobile, Big on Facebook. How the European super startups did it.
 
IBM MQ Overview (IBM Message Queue)
IBM MQ Overview (IBM Message Queue)IBM MQ Overview (IBM Message Queue)
IBM MQ Overview (IBM Message Queue)
 
Indian IT industry analysis of 5 slides and company ( Infosys) analysis ( FY ...
Indian IT industry analysis of 5 slides and company ( Infosys) analysis ( FY ...Indian IT industry analysis of 5 slides and company ( Infosys) analysis ( FY ...
Indian IT industry analysis of 5 slides and company ( Infosys) analysis ( FY ...
 
Best Bourbons
Best BourbonsBest Bourbons
Best Bourbons
 
Efficient Pagination Using MySQL
Efficient Pagination Using MySQLEfficient Pagination Using MySQL
Efficient Pagination Using MySQL
 
Performance and scalability for machine learning
Performance and scalability for machine learningPerformance and scalability for machine learning
Performance and scalability for machine learning
 
Maximizing information and communications technologies for development in fai...
Maximizing information and communications technologies for development in fai...Maximizing information and communications technologies for development in fai...
Maximizing information and communications technologies for development in fai...
 
Talking data 2014年上半年移动旅行应用行业报告
Talking data 2014年上半年移动旅行应用行业报告Talking data 2014年上半年移动旅行应用行业报告
Talking data 2014年上半年移动旅行应用行业报告
 
Administrateurs salariés, Droits devoir et enjeux
Administrateurs salariés,  Droits devoir et enjeuxAdministrateurs salariés,  Droits devoir et enjeux
Administrateurs salariés, Droits devoir et enjeux
 

Similaire à sfPot aop

AOP.pptx
AOP.pptxAOP.pptx
AOP.pptxManalAg
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8Microsoft
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Arnaud Auroux
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryObjet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryFactoVia
 
Meetup angular rshop
Meetup angular rshopMeetup angular rshop
Meetup angular rshopCyril Balit
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Microsoft Technet France
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJsimeon
 
Optimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSOptimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSMicrosoft
 

Similaire à sfPot aop (20)

Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
AOP.pptx
AOP.pptxAOP.pptx
AOP.pptx
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
Aspectj
AspectjAspectj
Aspectj
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryObjet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
 
Meetup angular rshop
Meetup angular rshopMeetup angular rshop
Meetup angular rshop
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
TP GWT JDEV 2015
TP GWT JDEV 2015TP GWT JDEV 2015
TP GWT JDEV 2015
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJ
 
Optimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSOptimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJS
 

sfPot aop

  • 1. Aop
  • 2. ABOUT ME Khalid Abdelmoumni Dévelopeur PHP / Symfony / Zend chez virtual expo. mail : abdel.khalid@gmail.com twiter: @icecorporation
  • 4. EVOLUTION des PARADIGMES de PROGRAMMATION Langage machine → programmation structurelle → procedural → modulaire → orienté-objets → ...
  • 5. PROGRAMMATION ORIENTE OBJET Issu de l'évolution de plus en plus complexe des besoins et d'une volonté de représenter le monde. Introduit de nouvelles approches pour concevoir du code plus lisible et plus réutilisable (erradication des "gotos" au profit des boucles, introduction des types et des structurations modulaires autour des classes)
  • 6. POINTS FORTS POO ● Méthode de conception ● Rigueur ● Définitions des besoins métier ● Niveau abstraction plus élevé ● Industrialisation des composants
  • 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"
  • 9. PROGRAMMATION ORIENTE ASPECT Quelques 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. 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. AVANTAGES AOP ● Maintenance aisée : indépendance utilisation ● Meilleure réutilisation : indépendance environnement, métier, domaine d'application ● Gain de productivité : parallélisation des développements ● Meilleure qualité du code par une simplification donc meilleure lecture
  • 12. FOCUS
  • 14. PENSER ASPECT... 1. Déterminer les couches métier 1. de l'application et ensuite 2. Définir les aspects 1. transverses.
  • 16. EXEMPLES EN IMAGES EXEMPLES EN IMAGES EXEMPLES EN IMAGES
  • 17. Les Coupes Transverses ● Sécurité ● Persistence ● Authentication ● Gestion transactionnelle ● Performance ● Journalisation ● Gestion des erreurs
  • 18. Les Mots-Clés.... ASPECT Un aspect est un module définissant des greffons et leurs points d'activation
  • 19. Les Mots-Clés.... POINT CUT Point de coupe Localisation du logiciel où est inséré un greffon par le tisseur d'aspect.
  • 20. Les Mots-Clés.... ADVICE Greffon Un programme qui sera activé à un certain point d'exécution du système, défini par un point de jonction.
  • 22. Les Mots-Clés.... Cross-cutting concerns Préoccupations transversales Mix au sein d'un même programme de sous-programmes distincts couvrant des aspects techniques séparés.
  • 23. Les Mots-Clés.... WEAVING Tissage Insertion statique ou dynamique dans le système logiciel de l'appel aux greffons.
  • 24. Les Mots-Clés.... JOIN POINT Point de Jonction Localisation spécifique dans le flot d'exécution du système, où il est possible d'insérer un greffon : avant, autour, à la place, après.
  • 25. AOP...En BREF En résumé, l'AOP consiste à : ● Identifier les cross cutting concerns ● Ecrire les greffons-advices qui représentent l'aspect et qui permettent d'encapsuler les préoccupations transersales ● Choisir où appliquer ses greffons : pointcuts
  • 28. Il va falloir apprendre à Tisser !
  • 29. Les Mots-Clés.... TISSEURS d'ASPECT JAVA AspectJ : Extension du langage Java nécessitant donc une étape de précompilation. Le résultat est toutefois du bytecode Java standard. JAC (Java Aspect Components) : Framework 100 % Java. Spring : Spring AOP PYTHON Aspyct : Moteur de programmation orientée aspect et autre Aspects.py : Bibliothèque léger et de bas niveau pour intercepter les appels de 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. AOP sans Symphony AOP - PHP ● N'est 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. QUELQUES COMMANDES ● aop_add_before('MyServices->doStuff()', $advice); ● aop_add_after('MyServices->doStuff()', $advice); ● aop_add_around('MyServices->doStuff()', 'adviceUpdatingArguments');
  • 32. CONCLUSION PHP-AOP Avantages PHP-AOP Simple à mettre en place, projet prometteur et très bonne documentation. Quelques liens: http://www.croes.org/gerald/projects/aop/documentation_aop_extension_php.pdf http://aop-php.github.com/
  • 33. AOP ET SYMPHONY JMSAopBundle ●Créer par Johaness Smith ●Intégrer dans la version standard de symfony.
  • 34. JMSAopBundle ● Installation standard ● Utilisation est simple ■ Créer un intercepteur ■ Créer un point de coupure
  • 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. POINT DE COUPURE ● Création d'une classe qui implémente la classe PointcutInterface ● Création les méthodes function matchesClass(ReflectionClass $class) et matchesMethod(ReflectionMethod $method)
  • 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. CONCLUSION Avantages JMSAopBundle Simple à mettre en place Désavantage JMSAopBundle Perfomance : Etre vigilant sur les points de jointure (WildCard)
  • 39. A vous de jouer ...