Plan. Ressources. Architecture des Applications Réticulaires. Ressources. Exemple : Amazon S3. Id : cours3.bk 47 2008-03-01 16 :08 :37Z queinnec



Documents pareils
4. SERVICES WEB REST 46

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Architectures Web Services RESTful

L3 informatique TP n o 2 : Les applications réseau

Applications et Services WEB: Architecture REST

Architecture Orientée Service, JSON et API REST

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Introduction à HTTP. Chapitre HTTP 0.9

Hébergement de site web Damien Nouvel

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

(structure des entêtes)

Bien architecturer une application REST

Le protocole HTTP. 10 minutes pour comprendre. HTTP/0.9 - Lacunes et limitations HTTP/1.0 HTTP/1.1

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

WebDAV en 2 minutes. Tous ces objectifs sont complémentaires et ils sont atteints grâce au seul protocole WebDAV. Scénarii

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

«Cachez-moi cette page!»

Introduction aux «Services Web»

Programmation Web. Madalina Croitoru IUT Montpellier

Installer Enterprise Miner 5.1 en SAS environnement Windows

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Application Web et J2EE

Web Tier : déploiement de servlets

Formation en Logiciels Libres. Fiche d inscription

Serveurs de noms Protocoles HTTP et FTP

Sécurité des Web Services (SOAP vs REST)

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Stocker des données sur Amazon S3

Dans l'épisode précédent

Web des services : REST

Serveur Subversion Debian GNU/Linux

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Vulnérabilités et sécurisation des applications Web

1 Introduction Propos du document Introduction De HTTP 1.0 à HTTP

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

les techniques d'extraction, les formulaires et intégration dans un site WEB

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Les Architectures Orientées Services (SOA)

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

Développement des Systèmes d Information

Application web de gestion de comptes en banques

Technologies pour Web Services faciles : REST, JSON

Création d un service web avec NetBeans 5.5 et SJAS 9

Intégration du Web 2.0 dans les solutions IBM

A. Architecture du serveur Tomcat 6

Tessi Documents Services ASPONE. Démo Webservices UpValue.

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Paris Airports - Web API Airports Path finding

Introduction à ElasticSearch

Le stockage local de données en HTML5

Installation de SharePoint Foundation 2013 sur Windows 2012

Utilisation de Jakarta Tomcat

Tests de montée en charge avec Tsung

Compte Rendu d intégration d application

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Les services usuels de l Internet

Mise en œuvre des serveurs d application

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

BASE. Vous avez alors accès à un ensemble de fonctionnalités explicitées ci-dessous :

Le serveur HTTPd WASD. Jean-François Piéronne

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Proxies,, Caches & CDNs

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Tutoriel compte-rendu Mission 1

Petite définition : Présentation :

Environnements de Développement

Alfstore workflow framework Spécification technique

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Index. Symboles. Nombres

DNS : Domaine Name System

INF8007 Langages de script

Sécurité des applications web. Daniel Boteanu

Plateforme PAYZEN. Définition de Web-services

Tutoriel d installation de Hibernate avec Eclipse

OpenPaaS Le réseau social d'entreprise

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Programmation Web Avancée Introduction aux services Web

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Projet de programmation (IK3) : TP n 1 Correction

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Protocoles Applicatifs

Internet. Web Sécurité Optimisation

Manuel d intégration API SOAP SMS ALLMYSMS.COM

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

Étude de l application DNS (Domain Name System)

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Jean-Philippe Paquette

PPE GESTION PARC INFORMATIQUE

Réseaux. 1 Généralités. E. Jeandel

DEMARREZ RAPIDEMENT VOTRE EVALUATION

TP HTTP. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

Transcription:

UPMC NI584-2008fev c C.Queinnec 3/19 UPMC NI584-2008fev c C.Queinnec 4/19 Plan Architecture des Applications Réticulaires Id : cours3.bk 47 2008-03-01 16 :08 :37Z queinnec Christian Queinnec Université Paris 6 Troisième vague 2007-2008 1 Principes Architecture 2 Perl Java 3 Conclusions UPMC NI584-2008fev c C.Queinnec 2/19 Exemple : Amazon S3 Pourquoi ne pas s appuyer plus sur HTTP? Thèse de Roy Fielding (2000) Architectural Styles and the Desing of Network-Based Software Architectures Plus de sémantique dans l URL : toute ressource manipulable a une URI propre Pas d enveloppes (aller ou retour) : l URL est l enveloppe d émission. Outre GET, usage des commandes HEAD, POST, PUT, DELETE Pour l instant pas d équivalent à WSDL mais WADL? Les grands exemples d architecture REST : Amazon, Google,... mais aussi Atom, Ruby on Rails Serveur programmatique de stockage GET /bucket liste les objets contenus dans une aire GET /bucket/object renvoie l objet HEAD /bucket/object ne renvoie que les méta-données concernant l objet PUT /bucket/object + body crée/modifie l objet POST /bucket + body crée un objet anonyme et renvoie son URI (via Location) DELETE /bucket/object supprime l objet DELETE /bucket supprime l aire...

UPMC NI584-2008fev c C.Queinnec 7/19 UPMC NI584-2008fev c C.Queinnec 8/19 Principes REST Rappels d HTTP Nommage Toute URI désigne une unique ressource. mais une même ressource peut (temporairement ou non) avoir plusieurs noms. Par exemple /software/1.0.3.tgz ou /software/latest.tgz Représentations de ressources dans l URI dans les entêtes HTTP : Accept, Accept-Language, Accept-Encoding etc. Conséquences d HTTP : pas d état, sémantique des commandes fixée CRUD = POST, GET, PUT, DELETE Soucis : GET, HEAD sont (doivent être) sans effet secondaire (donc cachables, supportant If-Modified-Since, ETags, Expires,... ) PUT, DELETE sont (doivent être) idempotents les navigateurs ne savent en général émettre que GET et POST! Mais HTML5 corrige cela (sinon X-HTTP-Method-Override) pourquoi inventer d autres commandes (WebDAV : MOVE, COPY, SEARCH,... )? UPMC NI584-2008fev c C.Queinnec 5/19 Codes d HTTP UPMC NI584-2008fev c C.Queinnec 6/19 Architecture d une application REST 200 OK 201 Created (+ Location pour URI canonique) 202 Accepted (+ Location pour URI de contrôle) 204 No Content (la représentation est vide) 301 Moved Permanently (+ Location) 303 See Other (+ Location pour le contenu de la réponse) 304 Not Modified 307 Temporary Redirect (+ Location pour re-soumettre la requête) 400 Bad Request 404 Not Found 405 Method Not Allowed 406 Not Acceptable (pas de représentation acceptable) 409 Conflict 410 Gone 415 Unsupported Media Type 500 Internal Server Error 503 Service Unavailable L URI est analysée pour déterminer la ressource concernée. pour S3 : /{bucket/{object la commande est déterminée (GET, PUT, POST, DELETE) Si retour il y a, la représentation de la ressource ou de l anomalie est déterminée les méta-données décrivant la représentation accompagnent celle-ci.

UPMC NI584-2008fev c C.Queinnec 11/19 UPMC NI584-2008fev c C.Queinnec 12/19 Architecture usuelle Soucis La forme usuelle est d avoir une arborescence de contrôleurs/actions : (methode patronurl) (variablespatronurl ressource) Par exemple (en omettant l accès à la requête pour obtenir les paramètres HTTP additionnels) : GET / person /{ nom /{ prenom - > function ( nom prenom ) ressource PUT / person /{ id / age /{ age -> function (id age ) ressource Multiples variantes différemment Curryfiées ou empaquetées : / person /{ nom / age /{ age -> function (% parametres ) - > GET - > ressource actions binaires : exprimer qu une personne va à une réunion? transactionnel décrire un virement bancaire? sécurité Les URI doivent-elles être évidentes ou opaques? résistance au changement : /person/23eab89c vis-à-vis de /www.systeme-lip6.fr/christian.queinnec/index.html UPMC NI584-2008fev c C.Queinnec 9/19 Comparaisons UPMC NI584-2008fev c C.Queinnec 10/19 SOAP est indépendant du transport donc d HTTP propre modèle de sécurité propre retour des erreurs propre stratégie de cache ou d idempotence WSDL définit finement les formats des données échangées En revanche, Rest est plutôt orienté vers l échange de documents (XML, micro-formats, PDF, JSON, etc.). Avec XML, notion de pièces jointes (comme en JBI Java Business Integration). Rest utilise des substantifs, les services utilisent plutôt des verbes. Perl : REST::Resource, REST::Application, Catalyst::Action::REST (par ordre d élaboration croissante) Java : Restlet Les moteurs REST peuvent fonctionner seuls ou être intégrés dans Apache ou Tomcat. Avec Apache, directive AcceptPathInfo utile

Perl REST : :Resource Perl REST : :Application 1 sous-classer REST::Resource 2 indiquer les fonctions à invoquer pour chaque méthode HTTP. Ces fonctions ont la signature (webapp requête)... 3 écrire ces fonctions qui construisent la réponse HTTP package My :: REST :: Resource ; use base " REST :: Resource "; sub new { my ( $class ) = @_; my $webapp = $class -> SUPER :: new (@_ ); $webapp -> method ( GET, \& getfunction, $comment ); sub getfunction { my ( $webapp, $request ) = @_;... UPMC NI584-2008fev c C.Queinnec 13/19 Perl Catalyst : :Action : :REST 1 sous-classer REST::Application 2 spécialiser setup() pour ajouter des couples URI-regexp fonction(webapp regexp-parts)... 3 écrire les fonctions prenant des morceaux de l URI (les informations supplémentaires sont dans la webapp et construisant la réponse HTTP my My :: REST :: Application ; use base REST :: Application ; sub setup { my ( $webapp ) = @_; $webapp - > resourcehooks ( m ^/ city /(\ w +)/ station /(\ d+)$ => \& stationfonc ); sub stationfonc { my ( $webapp, $city, $stationid ) = @_;... UPMC NI584-2008fev c C.Queinnec 14/19 Java Restlet Lire le tutoriel sur le site Restlet // Create a component Component component = new Component (); component. getservers (). add ( Protocol.HTTP, 8182); component. getclients (). add ( Protocol. FILE ); QNC a faire... UPMC NI584-2008fev c C.Queinnec 15/19 // Create an application Application application = new Application ( component. getcontext ()) { @Override public Restlet createroot () { // Create a root router Router router = new Router ( getcontext ()); // Attach a guard to secure access to the directory Guard guard = new Guard ( getcontext (), ChallengeScheme. HTTP_ BASIC, " Restlet tutorial "); guard. getsecrets (). put (" scott ", " tiger ". tochararray () router. attach ("/ docs /", guard ); UPMC NI584-2008fev c C.Queinnec 16/19

UPMC NI584-2008fev c C.Queinnec 19/19 // Create a directory able to expose a hierarchy of files Directory directory = new Directory ( getcontext (), ROOT_URI ); guard. setnext ( directory ); // Create the account handler Restlet account = new Restlet () { @Override public void handle ( Request request, Response response ) { // Print the requested URI path String message = " Account of user \"" + request. getattributes (). get (" user ") + "\""; response. setentity ( message, MediaType. TEXT_PLAIN ); ; // Attach the handlers to the root router router. attach ("/ users /{ user ", account ); // Return the root router return router ; host = new VirtualHost ( getcontext ()); host. sethostdomain (" restlet. org restlet. net restlet. com " + " www. restlet. net www. restlet. com "); host. sethostport (" 80 " + Integer. tostring ( port )); host. attach ( new RedirectApplication ( getcontext (), " http :// www. restlet. org {rr", true )); gethosts (). add ( host ); // Attach the application to the component and start it component. getdefaulthost (). attach ( application ); component. start (); UPMC NI584-2008fev c C.Queinnec 17/19 Conclusions Conclusions UPMC NI584-2008fev c C.Queinnec 18/19 REST est un style architectural. Structurant : à cause du nommage des URI Efficace : utilise bien la machinerie HTTP Évolutif : en termes de nouvelles URIs ou représentations Indépendant des mises en œuvre (jsp, restlet, etc.)