Architecture JEE Principe de l’inversion de contrôle et d’injection des dépenda

Architecture JEE Principe de l’inversion de contrôle et d’injection des dépendances Mohamed Youssfi Laboratoire Signaux Systèmes Distribués et Intelligence Artificielle (SSDIA) ENSET, Université Hassan II Casablanca, Maroc Email : med@youssfi.net Client HTTP Serveur Web Requête HTTP Réponse HTTP SGBD HTML, CSS, Java Script,  Un client web (Browser) communique avec le serveur web (Apache) en utilisant le protocole HTTP  Une application web se compose de deux parties:  La partie Backend : S’occupe des traitements effectués coté serveur :  T echnologies utilisées : PHP, JEE, .Net, Node JS  La partie Frontend : S’occupe de la présentations des IHM coté Client :  Langages utilisés : HTML, CSS, Java Script  La communication entre la partie Frontend et la partie backend se fait en utilisant le protocole HTTP 2 Html + CSS+ Java Script PHP JEE Dot Net Node JS Exigences d’un projet informatique Exigences d’un projet informatique Exigences Fonctionnelles T emps de réponse Problème de montée en charge : Vers une architecture Distribuée scalable Equilibrage de charges et T olérances aux panes Exigences Techniques Performances : l’application doit être performante Satisfaire les besoins fonctionnels (métiers) de l’entreprise Une application doit évoluer dans le temps L’application doit être fermée à la modification et ouverte à l’extension Maintenance : l’application doit être facile à maintenir Sécurité : L’application doit prévoir des solutions pour toutes les failles de sécurités Persistances des données dans des SGBD appropriés, Gestion des Transactions Exigences financières : Le coût du logiciel doit respecter les contraites budgétaires Créer différents types de clients pour accéder à l’application : Web, Mobile, Desktop, .. …… …… Constat  Il est très difficile de développer un système logiciel qui respecte ces exigences sans utiliser l’expérience des autres : ◦ Bâtir l’application sur une architecture d’entreprise:  JEE ◦Framework pour l’Inversion de contrôle:  Permettre au développeur de s’occuper uniquement du code métier (Exigences fonctionnelles) et c’est le Framework qui s’occupe du code technique (Exigences T echniques)  Spring (Conteneur léger)  EJB (Conteneur lourd) ◦ Frameworks :  Mapping objet relationnel (ORM ) : JPA, Hibernate, T oplink, …  Applications Web : Struts, JSF, SpringMVC ◦ Middlewares :  RMI, CORBA : Applications distribuées  Web Services :  JAXWS pour Web services SOAP  JAXRS pour les Web services RESTful  Communication asynchrone entre les application :  JMS :  AMQP : A B RMI, CORBA SOAP , REST Communication Synchrone A B Broker: Rabbit MQ Active MQ JMS AMQP JMS AMQP     Communication Asynchrone Exemple : sans utiliser d’inversion de contrôle public void virement(int c1, int c2, double mt) { /* Création d’une transaction */ EntityTransaction transaction=entityManager.getTransaction(); /* Démarrer la transaction */ transaction.begin(); try { /* Code métier */ retirer(c1,mt); verser(c2,mt); /* Valider la transaction */ transaction.commit(); } catch (Exception e) { /* Annuler la transaction en cas d’exception */ transaction.rollback(); e.printStackTrace(); } } med@youssfi.net | ENSET Université Hassan II Code Métier Code Technique Code Technique Exemple : en utilisant l’inversion de contrôle @Transactional public void virement(int c1, int c2, double mt) { retirer(c1,mt); verser(c2,mt); } med@youssfi.net | ENSET Université Hassan II Code Métier Ici, avec l’annotation @Transactional, nous avons délégué la gestion des transactions au conteneur Spring IOC La séparation des aspects métiers et des apsects techniques d’une application est rendu possible grâce à la Programmation Orientée Aspect (AOP) En utilisant des tisseurs d’aspects comme : - AspectJ - Spring AOP - JBOSS AOP Architecture d’une application Serveur d’application JEE Web MVC Couche Métier Couche DAO JPA, Hibernate, Spring Data Couche DAO JPA, Hibernate, Spring Data IOC Containner Spring ou EJB) IOC Containner (Spring ou EJB) Application Client Web HTML Client Java, C++ Client SOAP HTTP , HTML RMI, IIOP SOAP SGBDR Ou NoSQL Services de l’infra structure technique JPA, Hibernate, JMS, JNDI, JMX, JCA, JaxWS, JaxRS, RMI, CORBA, MQP… WS SOAP WS REST RMI CORBA JMS, AMQ Client Web AngularJS JQuery HTTP , JSON Client Mobile HTTP , JSON Architecture d’une application SGBD : • Permet de stocker les données de l’application • Dans la majorité des cas il s’agit d’un SGBD relationnel (SqlServer, MySQL, Oracle, …) • Si la quantité de données sont très importante, on utilise des SGBD NoSQL (Not Only SQL) comme MangoDB, … Serveur d’application JEE Web MVC Couche Métier Couche DAO JPA, Hibernate, Spring Data Couche DAO JPA, Hibernate, Spring Data IOC Containner Spring ou EJB) IOC Containner (Spring ou EJB) Application Client Web HTML Client Java, C++ Client SOAP HTTP , HTML RMI, IIOP SOAP SGBDR Ou NoSQL Services de l’infra structure technique JPA, Hibernate, JMS, JNDI, JMX, JCA, JaxWS, JaxRS, RMI, CORBA, MQP… WS SOAP WS REST RMI CORBA JMS, AMQ Client Web AngularJS JQuery HTTP , JSON Client Mobile HTTP , JSON Architecture d’une application Serveur d’application : • Un serveur d’application qui permet de déployer les applications • Il permet de gérer le cycle de vie des applications • Fournie l’infrastructure nécessaire pour faire fonctionner les applications de bonnes qualités • Offre un Framework d’Invertion de Contrôle (IOC) : Spring IOC ou EJB • Exemple : JBoss, Glashfish, Web Sphere, ou encore (T omcat+Spring,) etc.. Serveur d’application JEE Web MVC Couche Métier Couche DAO JPA, Hibernate, Spring Data Couche DAO JPA, Hibernate, Spring Data IOC Containner Spring ou EJB) IOC Containner (Spring ou EJB) Application Client Web HTML Client Java, C++ Client SOAP HTTP , HTML RMI, IIOP SOAP SGBDR Ou NoSQL Services de l’infra structure technique JPA, Hibernate, JMS, JNDI, JMX, JCA, JaxWS, JaxRS, RMI, CORBA, MQP… WS SOAP WS REST RMI CORBA JMS, AMQ Client Web AngularJS JQuery HTTP , JSON Client Mobile HTTP , JSON Architecture d’une application Couche Métier : • Permet d’implémenter la logique métier de l’application • Utilise généralement une approche orientée objet Serveur d’application JEE Web MVC Couche Métier Couche DAO JPA, Hibernate, Spring Data Couche DAO JPA, Hibernate, Spring Data IOC Containner Spring ou EJB) IOC Containner (Spring ou EJB) Application Client Web HTML Client Java, C++ Client SOAP HTTP , HTML RMI, IIOP SOAP SGBDR Ou NoSQL Services de l’infra structure technique JPA, Hibernate, JMS, JNDI, JMX, JCA, JaxWS, JaxRS, RMI, CORBA, MQP… WS SOAP WS REST RMI CORBA JMS, AMQ Client Web AngularJS JQuery HTTP , JSON Client Mobile HTTP , JSON Architecture d’une application Couche DAO: • Couche technique qui représente la couche d’accès aux données de l’application • Si les données sont stockées dans une base de données relationnelle, cette couche utilise un Framework de Mapping Objet relationnel implémentant la spécification JPA comme Hibernate, TopLink, etc.. Serveur d’application JEE Web MVC Couche Métier Couche DAO JPA, Hibernate, Spring Data Couche DAO JPA, Hibernate, Spring Data IOC Containner Spring ou EJB) IOC Containner (Spring ou EJB) Application Client Web HTML Client Java, C++ Client SOAP HTTP , HTML RMI, IIOP SOAP SGBDR Ou NoSQL Services de l’infra structure technique JPA, Hibernate, JMS, JNDI, JMX, JCA, JaxWS, JaxRS, RMI, CORBA, MQP… WS SOAP WS REST RMI CORBA JMS, AMQ Client Web AngularJS JQuery HTTP , JSON Client Mobile HTTP , JSON Architecture d’une application Couche Web: • Permet d’implémenter la logique présentation Web de l’application ( Servlet et JSP ) • Dans cette partie on utilise des Framework MVC comme Spring MVC, Struts, JSF, .. • Cette couche reçoit le requêtes HTTP du client web • Faire appel à la couche métier pour effectuer les traitement • Envoie un résultat HTML au client, en utilisant un moteur de T emplate comme Tymeleaf dans une réponse HTTP Serveur d’application JEE Web MVC Couche Métier Couche DAO JPA, Hibernate, Spring Data Couche DAO JPA, Hibernate, Spring Data IOC Containner Spring ou EJB) IOC Containner (Spring ou EJB) Application Client Web HTML Client Java, C++ Client SOAP HTTP , HTML RMI, IIOP SOAP SGBDR Ou NoSQL Services de l’infra structure technique JPA, Hibernate, JMS, JNDI, JMX, JCA, JaxWS, JaxRS, RMI, CORBA, MQP… WS SOAP WS REST RMI CORBA JMS, AMQ Client Web AngularJS JQuery HTTP , JSON Client Mobile HTTP , JSON Architecture d’une application Couche Web Services (SOAP): • Permet de définir un web service qui permet à d’autres applications développées avec d’autres langages de faire appel, à distance, aux fonctionnalités de l’application • Le web service reçoit des requête HTTP contenant des messages XML (Requête SOAP) • Exécute des traitement et renvoie le résultat au format XML (Réponse SOAP) • Pour implémenter les Web service on utilise la spécification JAXWS Serveur d’application JEE Web MVC Couche Métier Couche DAO JPA, Hibernate, Spring Data Couche DAO JPA, Hibernate, Spring Data IOC Containner Spring ou EJB) IOC Containner (Spring ou EJB) Application Client Web HTML Client Java, C++ Client SOAP HTTP , HTML RMI, IIOP SOAP SGBDR Ou NoSQL Services de l’infra structure technique JPA, Hibernate, JMS, JNDI, JMX, JCA, JaxWS, JaxRS, RMI, CORBA, MQP… WS SOAP WS REST RMI CORBA JMS, AMQ Client Web AngularJS JQuery HTTP , JSON Client Mobile HTTP , JSON Architecture d’une application Couche Web Services REST full: • Permet de définir un web service qui permet à d’autres applications uploads/Finance/ architecture.pdf

  • 12
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Mar 28, 2021
  • Catégorie Business / Finance
  • Langue French
  • Taille du fichier 1.4314MB