Applications Réparties : REST

Slides:



Advertisements
Présentations similaires
Representational State Transfer - REST
Advertisements

Comprendre Internet Bases théoriques et exercices pratiques, pour débutants complets... Et curieux !
Logiciel Assistant Gestion d’Événement Rémi Papillié (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Projet tuteuré 2009 Les clients légers Alexandre Cédric Joël Benjamin.
Séminaire EOLE Dijon Octobre 2008 Eole SSO.
Les systèmes d'information 1- Une pratique quotidienne 2- Les données 3- Approche conceptuelle 4- Notion de serveur 5- Conception d'un système d'information.
Le système Raid 5 Table des matières Qu'est ce que le RAID ? Les objectifs Le raid 5 Les avantages et les inconvénients Les composants d’un Raid.
Introduction aux technologies du Web Mercredi 12 décembre 2007 Patrice Pillot
1 UML: applications, études de cas ● Processus (Extreme Programming, Unified Process) ● Architectures ● Expression du besoin technique Conception Préliminaire.
1 Observer le paramétrage d’un réseau. 2 Dans notre réseau téléphonique habituel, les postes, reliés à un auto-commutateur... …peuvent dialoguer, car.
Introduction Bases de Données NoSQL Principe de base Avantages/Inconvénients L’évolution du Web 2.0 et actuellement Web 3.0, a montrée l’insuffisance des.
Fadhel jied Oussama hédhili V - conclusion IV - Les avantages et les inconvénients III - exemples II - aspect informatique I - introduction.
Windows NT/2000/XP Enjeux et contraintes techniques
Système d’aide à la décision Business Intelligence
Les Bases de données Définition Architecture d’un SGBD
Communication client-serveur
Téléchargement de fichiers
Bases de données multimédia
Javadoc et débogueur Semaine 03 Version A17.
OWL-S.
Chiffrement de bout en bout
Les Tests de performances
Clients riches RIA (Rich Internet Application) / RDA
Profils d’emplois JT du 24 septembre 2001
Les bases de données et le modèle relationnel
Centralisation de logs
Cissé Moussa Diawara Issif Master Informatique 2ième année
Changer les critères de nommage
fonctionnalités iiS iis
Principes de recherche
Asynchronous Javascript And Xml
le plan de continuité d’activité ( le pca )
Wireshark Capture et analyse de trames IP
Les Pare-Feu.
Ecole supérieure privée d’ingénierie et de technologie Année Universitaire Projet: EFQM Réalisé Par: kbada Haythem Bchir Ahmed Znaidi Maher.
Développement d’un réseau social de collaboration destiné aux médecins radiologues Soutenance de projet de fin d’étude En vue de l’obtention du diplôme.
Août 2009.
HTTP DNS NTP FTP R231 RJ45 definition HTTP DNS NTP FTP R231 RJ45.
la structure de l’entreprise: Définition : La structure organisationnelle d’une entreprise définie le mode d’organisation entre les différentes unités.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Échange de données informatisé (EDI)
Cours 8 : Les Web Services et XML-RPC Février Version 1.0 -
Introduction à Internet
A. DAAIF ENSET Mohammedia Université Hassan II Casablanca.
Service web Réalise par: Latifa Gamoun Mariem jridi Majdouline Hassni Service web Réalise par: Latifa Gamoun Mariem jridi Majdouline Hassni 1.
Outils et principes de base. Exemple d’application  Gestion de données d’enquête : Interface de saisie en ligne  insère directement les données dans.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Les protocoles de la couche application Chapitre 7.
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
Mise en place d'un Serveur Radius pour la sécurité d'un réseau Wireless sous Windows Serveur Présenter par le Stagiaire : Etienne Mamadou Guilavogui.
Chapitre2: SGBD et Datawarehouse. On pourrait se demander pourquoi ne pas utiliser un SGBD pour réaliser cette structure d'informatique décisionnelle.
TP N°4 Développement d’ une application client / Serveur en utilisant les Sockets TCP.
Cours 10 : Les Web Services et WSDL Février Version 1.0 -
Catherine Cyrot - bibliothèques numériques - Cours 5
SÉCURITÉ DES RÉSEAUX MOBILES MINI-PROJET Présenté par : ASSIMI Chaimaa Encadré par : M. EL ouazzani Année universitaire :
DESIGN PATTERN BUILDER KADRI LOUBNA CHARMATI SEWSEN.
Notions d'architecture client-serveur. Présentation de l'architecture d'un système client/serveur Des machines clientes contactent un serveur qui leur.
CONFIGURATION D’UN ROUTEUR Introduction et planification du cours  Configuration d’un routeur  Administration d’un routeur  Protocoles RIP et IGRP 
Tableau de bord d’un système de recommandation
Conception de sites web marchands: TD 2
Test de performances. Test de performances:  Un test de performance est un test dont l'objectif est de déterminer la performance d'un système informatique.
Projet CRImage UNIVERSITE STENDHAL GRENOBLE
1 DEPLOIEMENT D’UN SYSTEME DE REPARTITION DE CHARCHE (LOAD BALANCING) Abasse KPEGOUNI, Ingénieur Systèmes et Réseaux.
Boulain Joris, Handouz Yassine, Regnier Fabien, Giraud Antoine
Contenu Systèmes de test parallèles Multithreading Synchronisation
Présentation PISTE pour les partenaires raccordés en API
Implémentation de FTP Rappel sur FTP Relation entre un site Web et FTP
Qu’est ce qu’une page web? Comment fonctionne un site web?
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Business Intelligence en ACube OLAP et Reporting avec ACubeOLAP et GRaM.
Transcription de la présentation:

Applications Réparties : REST * D’après les cours de: Roger Costello, Stéphane Lavirotte 18/01/2019

Présentation: S. Lavirotte – Auteurs : … et al* Introduction Pourquoi des applications réparties ? Besoin de rendre des applications accessibles par le web Elargir l’audience des utilisateurs Vendre des services en ligne Faire communiquer des applications existantes Comment mettre en œuvre des applications réparties ? Quelle architecture choisir ou concevoir ? Quel format utiliser pour échanger des données sur le web ? Doit-on utiliser un protocole applicatif existant ou développer un protocole adapté à nos besoins ? Rendre une application accessible par le web Définir un format de données Définir un protocole applicatif Un protocole applicatif est un protocole de haut niveau, orienté utilisateur. Les aspects non-fonctionnels comme le transport de l’information sont délégués aux couches inférieures comme TCP/IP ou même HTTP et SMTP. 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Présentation: S. Lavirotte – Auteurs : … et al* Interopérabilité Développer des formats de données Tellement de domaines d’application: impossible d’avoir un format unique XML définit des règles de structuration de l’information Développer des protocoles génériques Permettre à toute application communique sur le Web Approche adoptée par XML-RPC et SOAP Paradigme de l’appel de méthode à distance Avantages: Facilite le travail du développeur (modèle d’interaction identique au modèle de l’application) Améliore l’interopérabilité en spécifiant le format dans lequel les informations doivent être envoyées Inconvénient Doit généraliser être généralisé à tous les modèles d’interaction: Communication synchrone ou asynchrone Communication avec ou sans état Cependant, en décrivant de plus en plus exhaustivement ces différents modèles d’interaction, SOAP est devenu un framework de développement de protocoles applicatifs et non plus un protocole générique. Deux web services SOAP ne sont pas forcément directement interopérables. SOAP est très employé aujourd’hui mais de nombreuses extensions (les spécifications WS-*) viennent complexifier et étendre SOAP. Donc pour qu’ils soient interopérables, ils doivent se mettre d’accord sur la façon dont ils utilisent SOAP. 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

RESTful Web Services Reposant, Paisible 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

REST REpresentational State Transfer Architecture Orientée Ressource Terme introduit par Roy Fielding dans sa thèse en 2000 REST n’est pas un protocole ou un format C’est une manière de construire une application pour les systèmes distribués (style architectural) Architecture Orientée Ressource Toute information qui peut être nommée est une ressource Une ressource est identifiée par un identificateur (URI) Roy T. Fielding est un informaticien américain né en 1965 à Laguna Beach dans l'état de Californie aux USA. Il a aidé à développer les premiers serveurs Web, puis a fait des recherches sur le fonctionnement du Web. Il est l'un des principaux auteurs de la spécification HTTP. Membre fondateur de la fondation Apache, il est connu pour ses travaux de développement du serveur web Apache. Un style d’architecture est un ensemble de contraintes qui permettent, lorsqu’elles sont appliquées aux composants d’une architecture, d’optimiser certains critères propres au cahier des charges du système à concevoir. Il est important de distinguer une ressource de sa valeur à un instant donné. Considérons par exemple la ressource « le dernier article d’un journal ». Aujourd’hui cette ressource est associée à une certaine valeur, un article particulier, mais quand un nouvel article sera publié, cette valeur changera. Cependant, il est important de noter que la sémantique de la ressource, elle, ne devra jamais changer. http://www.airbus.com/airplane/A380 Une représentation de la ressource est renvoyée Client Ressource 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

REST n’est pas un Standard Pas de recommandation du W3C Pas de toolkit éditée par Microsoft, IBM ou Sun Mais utilise des standards: HTTP, URL, XML, HTML, MIME, … REST est un style d’architecture C’est un design pattern pour l’implémentation d’un système Principes: Les requêtes sont client-serveur Les requêtes sont stateless (sans état) Les clients accèdent à des ressources nommées: une ressources est représentée par une URL. Les clients et serveurs adhèrent à une interface uniforme: toutes les ressources sont accédées via une interface générique: les méthodes HTTP 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Présentation: S. Lavirotte – Auteurs : … et al* Avantages de REST Avantages: Application est plus simple à entretenir: les liens sont mieux structurés (les liens sont le moteur de l’état de l’application) Absence de gestion d’état du client sur le serveur: moindre consommation mémoire plus de simplicité (capacité à répondre à plus de requêtes) possibilité de répartir les requêtes (load balancing) Meilleure évolutivité et tolérance aux pannes Utilisation des caractéristiques d’HTTP SOAP ne pré-suppose pas de protocole même s’il utilise la plupart du temps HTTP (redites entre SOAP et HTTP) Utilisation des URI pour représenter (nommer) des ressources Possibilité de mise en cache très facilement 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Présentation: S. Lavirotte – Auteurs : … et al* Inconvénients de REST Inconvénients: Le client doit conserver toutes les données nécessaires pour le bon déroulement d’une requête Consommation de la bande passante plus importante L’utilisation d’un formulaire HTML envoyant ses données avec une méthode comme DELETE en général pas compris on émule ce comportement avec un champ caché qui transmettra le type de méthode d’envoi des données à l’application 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Comparaison de REST vs SOAP Par l’exemple 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Comprendre REST par l’Exemple Ce type d’architecture se comprend mieux par l’exemple Exemple d’un Entrepôt de Pièces Détachées Services Web accessibles pour les clients Obtenir la liste des pièces détachées Obtenir des informations détaillées sur une pièce donnée Soumettre un bon de commande Nous allons étudier la mise en œuvre de cet exemple Via REST Via SOAP 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Représentation REST URL 1 Serveur Web URL 2 URL 3 HTTP GET HTTP GET Liste des Pièces Réponse (doc XML / HTML) Réponse HTTP HTTP GET URL 2 Détail Pièce Réponse (doc XML / HTML) Réponse HTTP Les méthodes HTTP utilisées dépendent de la sémantique de l’opération à effectuer (GET ou POST). A noter que chaque ressource a sa propre URL; par exemple: http://www.parts-depot.com/parts pour récupérer la liste des Pièces détachées. A noter que la manière dont le service web génère cette liste de pièce est complètement transparente pour le client (loose coupling). Le Service Web peut laisser le choix au client du format pour récupérer les données: en ajoutant par exemple des attributs à l’adresse http://www.parts-depot.com/parts?flavor=xml HTTP POST BdC (XML/HTML) URL 3 Soumettre BdC URL du BdC Réponse HTTP 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Présentation: S. Lavirotte – Auteurs : … et al* Représentation SOAP HTTP POST Requête (doc XML) URL 1 Serveur Web Serveur SOAP getPartsList() Réponse (doc XML) Réponse HTTP HTTP POST Requête (doc XML) URL 1 getPartId() Réponse (doc XML) Réponse HTTP HTTP POST Tous les messages SOAP utilisent la méthode POST de HTTP A noter que toutes les URL sont les même (URL 1) quelles que soient les transactions. Le serveur SOAP parse les messages SOAP afin de détermine quelle méthode est invoquée. Requête (doc XML) URL 1 Submit(PO) Réponse (doc XML) Réponse HTTP 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Implémentation du WS avec SOAP Même si ce n’est pas une obligation, en SOAP, forme de tunneling sur la même URL Exemple de message SOAP: <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <p:getPartsList xmlns:p="http://www.parts-depot.com"/> </soap:Body> </soap:Envelope> getPartsList() Serveur SOAP URL 1 getPartId() Submit(PO) Par exemple en utilisant Apache SOAP: [host]/soap/servlet/messagerouter Le client créé un message SOAP qui spécifie la méthode que l’on souhaite invoquer. Le client va envoyer le document en utilisant toujours la méthode HTTP POST au server SOAP en utilisant l’adresse http://www.parts-depot.com/soap/servlet/messagerouter Le serveur SOAP jette un œil à l’intérieur du document afin de savoir quelle méthode doit effectivement être appelée 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Données Retournées en REST Exemple de réponse : <?xml version="1.0"?> <p:Parts xmlns:p="http://www.parts-depot.com" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.parts-depot.comhttp://www.parts-depot.com/parts.xsd"> <Part id="00345" xlink:href="http://www.parts-depot.com/parts/00345"/> <Part id="00346" xlink:href="http://www.parts-depot.com/parts/00346"/> <Part id="00347" xlink:href="http://www.parts-depot.com/parts/00347"/> <Part id="00348" xlink:href="http://www.parts-depot.com/parts/00348"/> </p:Parts> On notera que chaque pièce de la liste a une URL qui permet d’y accéder. C’est un élément clé de REST Si le client souhaite obtenir le détail sur une pièce il pourra le faire via l’adresse: http://www.parts-depot.com/parts/00345?flavor=xml 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Données Retournées en SOAP Exemple de réponse: <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <p:getPartsListResponse xmlns:p="http://www.parts-depot.com"> <Parts> <Part-ID>00345</Part-ID> <Part-ID>00346</Part-ID> <Part-ID>00347</Part-ID> <Part-ID>00348</Part-ID> </Parts> <p:getPartsListResponse> </soap:Body> </soap:Envelope> Absence de lien vers les pièces retournées A noter que les infos retournées pourraient pointées vers un service REST-ful 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Présentation: S. Lavirotte – Auteurs : … et al* REST vs SOAP ou XML-RPC SOAP et XML-RPC Se basent sur des méthodes (appels de méthodes à distance) REST Se base sur les ressources existantes et l’échange de leur valeur via une URL qui la nomme De nombreux autres points de comparaison: Serveurs Proxy (Web intermédiaires) Etat de transition dans une application cliente Cache (i.e., performance) Evolution du Web (Web sémantique) Interface générique (versus interface custom) Interopérabilité … Un service "RESTful" ("reposé" ou "tranquille") se distingue largement d'un service SOAP ou XML-RPC en cela qu'il repose uniquement sur l'utilisation d'HTTP, des URIs et d'XML, là où les deux autres protocoles se compliquent la tâche en utilisant des API RPC (Remote Procedure Call, appel de procédure distante). SOAP et XML-RPC ne suivent pas la spécification HTTP, car ils ajoutent une nouvelle couche d'abstraction par-dessus le protocole, plutôt que de l'utiliser tel qu'il a été conçu. De même, leur utilisation des URIs n'est pas idéale. 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Présentation: S. Lavirotte – Auteurs : … et al* Conclusion Quelques recommandations sur les bonnes pratiques d’une architecture REST 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Quelques Recommandations Fournir une URI pour chaque ressource que l’on souhaite (ou souhaitera exposer). Consistant avec l’axiome du Web de Tim Berners-Lee, ainsi que les recommandations du W3C Préférer les URIs logiques aux URI physiques. Permet à l’implémentation de la ressource de changer sans impacter les clients Préférer http://www.airbus.com/airplanes/A320 à http://www.airbus.com/airplanes/A320.html Utiliser des noms pour les URI logique plutôt que des verbes. Les ressources sont des choses, pas des actions. Faire des GET HTTP sans effets de bord. Cela rend les choses plus sécurisées 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*

Quelques Recommandations Utiliser des liens dans vos réponses aux requêtes. Ainsi cela connecte les réponses aux autres données. La réponse contient les informations sur les “prochaines opérations à effectuer”. Minimiser l’utilisation des attributs HTTP Préférer http://www.parts-depot.com/parts/00345 à http://www.parts-depot.com/parts?part-id=00345 Utiliser le "/“ pour modéliser une relation parent/enfant Utiliser une “méthode de déploiement progressif" pour exposer des données aux clients. Autrement dit, une ressources devrait fournir des liens pour obtenir plus de détails Utiliser toujours la méthode HTTP GET pour récupérer une information et pas la méthode HTTP POST 18/01/2019 Présentation: S. Lavirotte – Auteurs : … et al*