Introduction aux services Web Exemple de PHENOPSIS DB



Documents pareils
Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat)

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

Introduction aux «Services Web»

Programmation Web Avancée Introduction aux services Web

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

4. SERVICES WEB REST 46

BPEL Orchestration de Web Services

Architectures Web Services RESTful

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Business Process Execution Language

Sommaire. Introduction La technologie ebxml EDI conventionnels versus ebxml Web Services et ebxml Acteurs de l ebxml Conclusion

Urbanisme du Système d Information et EAI

Manuel d intégration API SOAP SMS ALLMYSMS.COM

Les Services Web. Jean-Pierre BORG EFORT

Systèmes d'informations historique et mutations

Problématiques de recherche. Figure Research Agenda for service-oriented computing

Introduction aux. services web 2 / 2

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Le cadre des Web Services Partie 1 : Introduction

SOAP Concepts Application à Glassfish

La démarche SOA et l interopérabilité applicative

Programmation Web. Madalina Croitoru IUT Montpellier

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

Configuration Interface for MEssage ROuting

Paris Airports - Web API Airports Path finding

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

Architecture Orientée Service, JSON et API REST

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

Formation en Logiciels Libres. Fiche d inscription

Alfstore workflow framework Spécification technique

Les nouvelles architectures des SI : Etat de l Art

Plateforme PAYZEN. Définition de Web-services

Approche Contract First

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

GRIDKIT: Pluggable Overlay Networks for Grid Computing

Mise en œuvre des serveurs d application

Hébergement de site web Damien Nouvel

Module BD et sites WEB

API Web Service TéléAlerte

UNIVERSITÉ DU QUÉBEC EN OUTAOUAIS

Exécution de processus

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET

NFP111 Systèmes et Applications Réparties

Jean-Philippe VIOLET Solutions Architect

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Hébergement de sites Web

Messagerie asynchrone et Services Web

Les Architectures Orientées Services (SOA)

ArcGIS 10.1 for Server

Mineure Architectures Orientées Services SOA Exécution de processus. Mineure SOA. Exécution de processus

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Assurances & Mutuelles, Industrie, Santé, Énergie, Transport, Médias / Multimédias, Télécoms, Services

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

Web Application Models

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Applications et Services WEB: Architecture REST

Méthodes et Langages du Commerce Electronique

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Projet ESB - Retour d expérience

Compte Rendu d intégration d application

Web Services : Beyond the peer-to-peer architecture

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Architectures web/bases de données

Le moteur de workflow JBPM

Composition semi-automatique de Services Web

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

Oracle Fusion Middleware Concepts Guide 11g Release 1 (11.1.1) Figure 1-1 Architecture Middleware

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

FileMaker Server 12. publication Web personnalisée avec XML

Exécution de processus

Notre Catalogue des Formations IT / 2015

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

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

Responsable du cours : Héla Hachicha. Année Universitaire :

Mercredi 15 Janvier 2014

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

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

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Implémentation libre de Liberty Alliance. Frédéric Péters

Programmer en JAVA. par Tama

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

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

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Architecture SOA Un Système d'information agile au service des entreprises et administrations

Java et les WebServices :

La directive INSPIRE en Wallonie: le géoportail et l infrastructure de diffusion des géodonnées en Région wallonne (InfraSIG(

Programmation Web. Introduction

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

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

Architecture et infrastructure Web

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

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

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Transcription:

Introduction aux services Web Exemple de PHENOPSIS DB Vincent NEGRE, vincent.negre@supagro.inra.fr JIEA 2010 1/27

Introduction aux services Web JIEA 2010 2/27

Pourquoi utiliser des services Web? Achats en ligne www. slideshare.com Interopérabilité entre systèmes et plate-formes hétérogènes. Intégration d'applications et de services. JIEA 2010 3/27

Pourquoi utiliser des services Web? Workflows en bioinformatique www.drugdiscoverytoday.com Interopérabilité entre systèmes et plate-formes hétérogènes. Intégration d'applications et de services. JIEA 2010 4/27

Définition d'un service Web Web services are loosely coupled, contracted components that communicate via XML-based interfaces. [ Schmelzer 2002] loosely coupled : - ils peuvent être changés indépendamment - ils sont indépendants de la plate-forme. Contacted : les entrées et les sorties sont décrites. Components : une interface encapsule le code XML-based interfaces : - lisibles par une machine, compréhensible par un humain. - passent les firewalls. - auto-décrits (permet la découverte de fonctionnalités). JIEA 2010 5/27

Spécifications d'un service web SOAP Simple Object Access Protocol Assure la transmission des données UDDI WSDL Universal Description, Discovery and Integration Annuaire permettant la localisation d'un service Web Web Service Description Language Description du service Web Spécifications du W3C. S'appuient sur des standards : HTTP, XML. Ces standards garantissent l'interopérabilité. JIEA 2010 6/27

Architecture orienté service 3) contacte 1) publie Fournisseur de service 2) recherche 1) publie Demandeur de service Annuaire 1) publie Fournisseur de service Fournisseur de service JIEA 2010 7/27

SOAP requête SOAP <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:phen="http://phenopsis"> <soapenv:header/> <soapenv:body> <phen:getgenotypes> <!--Optional:--> <phen:experiment>c1m7</phen:experiment> </phen:getgenotypes> </soapenv:body> </soapenv:envelope> Envelope Header Body JIEA 2010 8/27

SOAP réponse SOAP <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:body> <ns:getgenotypesresponse xmlns:ns="http://phenopsis"> <ns:return><![cdata[<?xml version="1.0" encoding="iso-8859-1"?><results plateforme="phenopsis" creation_date="mon Nov 29 14:30:47 CET 2010" provider="phenopsisws" editor="inra-lepse"> <genotypes><genotype><id>laf11-18</id><name>rilf11[ler x An-1]-18</name><function>null</function></genotype>... </ns:getgenotypesresponse> </soapenv:body> </soapenv:envelope Envelope Body Échange de données encodées en XML en utilisant HTTP comme protocole de communication. JIEA 2010 9/27

Description d'un service web avec WSDL Type <wsdl:type> définit les types de données échangées. Message <wsdl:message> Opération <wsdl:operation> Type de port <wsdl:porttype> décrit les noms et types des champs à transmettre (paramètres, valeur de retour). décrit un service (fonction). décrit un ensemble d'opérations (interface). comportant des messages en E/S. Binding <wsdl:binding> Services <wsdl:service> spécifie le protocole (SOAP). spécifie l'adresse du service. JIEA 2010 10/27

WSDL Extraits JIEA 2010 11/27

WSDL Un dialecte XML permettant de décrire des services associé à un protocole SOAP. Langage très verbeux (API amazon 1 : + de 1000 lignes de code décrivant 23 méthodes) Il serait très fastidieux de transcrire à la main un WSDL... Les outils s'en chargent! 1 : http://soap.amazon.com/schemas2/amazonwebservices.wsdl JIEA 2010 12/27

Serveur Framework GlassFish Sun Apache Tomcat Axis 2 fondation Apache IDE NetBeans Eclipse JIEA 2010 13/27

Outils SOAP-UI http://www.soapui.org/ - disponible en version standalone ou intégré dans environnements de développement (Eclipse, NetBeans, ) - multiplateforme - supporte les WS étendus (WSDL+ SOAP + UDDI) et REST - permet d'inspecter, d'invoquer des WS - permet de développer des WS - permet de simuler des WS - permet d'effectuer des tests qualités JIEA 2010 14/27

Exemple de PHENOPSIS DB JIEA 2010 14/27

PHENOPSIS Plate-forme de phénotypage d'arabidopsis Thaliana. prise d'image irrigation vue d'un plateau pesée JIEA 2010 15/27

PHENOPSIS DB 1 Système d'information permettant d'organiser: - les données : relevées micro-météos (température, humidité), mesures robots (images, humidité du sol), mesures expérimentateurs (nombre de feuilles, stade de développement,...) - les métadonnées (consignes environnementales, génotypes étudiés, description expérimentation) 1 : http://bioweb.supagro.inra.fr/phenopsis JIEA 2010 17/27

Nos web services Serveur : tomcat + axis (apache HTTP serveur en front end) IDE : NetBeans 7 méthodes publiées Publication sur BioCatalogue 1 1 : http://www.biocatalogue.com JIEA 2010 18/27

Exemple de méthode Un WS c'est un programme (Java) comme un autre! public class phenopsis { /** * Return publics experiments * @return publics experiments in format XML : String */ public String getexperiments() {... try{ conn = DriverManager.getConnection(DB_SERVER_URL, DB_USER,DB_PSW); if (isvalid(conn)){ result = transmission.executequery(requetesql); while (leresultat.next()) { String XML = XML + "<id>" + result.getstring("idmanip") + "</id>";... } } } catch (Exception e){... } finally{... } return getxml(xml); }... } JIEA 2010 19/27

Méthode pour transférer une image Pour être transférées les images sont encodées en base64. /** * Return an image * @param name of image * @return image in format XML : String */ public String getimage(string name) {... try { is = new FileInputStream(url); int bytesread = 0; int chunksize = 10000000; byte[] chunk = new byte[chunksize]; while ((bytesread = is.read(chunk)) > 0) { byte[] ba = new byte[bytesread]; for (int i = 0; i < ba.length; i++) { ba[i] = chunk[i]; } String encstr = Base64.encode(ba).toString(); retour = encstr; } } } catch (Exception e) { e.printstacktrace(); } finally {... } String XML = "<image><name>" + name + "</name><bytes64>" + retour + "</bytes64></image>"; return getxml(xml); JIEA 2010 20/27

Clients mis en place client python: #!/usr/bin/env python # -- coding: utf-8 -- from suds.client import Client url='http://bioweb.supagro.inra.fr/phenopsis/wsdl' client = Client(url) genotypes=client.service.getallgenotypes() print "Public genotypes are: " print genotypes client PHP: class FunctionsWS { var $client; var $wsdl; /* * Constructor : Created client php. */ function FunctionsWS(){ $this->wsdl='http://bioweb.supagro.inra.fr/phenopsis/wsdl'; $this->client=new soapclient($this->wsdl); } include_once("functionsws.php"); $fonctions = new FunctionsWS(); $resultshumidityxml=$fonctions->callgetobservedhumidity("an-1","c1m7"); JIEA 2010 21/27

Exemples d'applications Tracer la courbe d'humidité d'un pot : php HumidityGraph.php > graph.html include("/path_to_jpgraph/jpgraph.php"); include("/path_to_jpgraph/jpgraph_line.php"); include_once("functionsws.php"); $fonctions=new FunctionsWS(); $resultshumidityxml=$fonctions- >callgetobservedhumidity("an-1","c1m7"); /*tableau valeurs*/ $tabvaleurs=array(); $j=0; foreach($resultshumidityxml->measures[$id]->measure as $measure){ $tabvaleurs[$j]=(float)$measure->value; $j++; }... /*create graphic*/ $graph = new Graph(800,500,"auto"); $p1 = new LinePlot($tabValeurs,$dataX); $graph->add($p1); $graph->stroke('graphique.jpg'); echo "<center><img src='graphique.jpg'/></center>"; JIEA 2010 22/27

Exemples d'applications Récupérer les images d'une plante pour reconstruire sa croissance : #récupération des images du génotype LAF11-18 dans la manip C1M8 et de la répétition 1 $xmlimages=$fonctions->callgetgrowthimages("laf11-18","c1m8",1); #téléchargement et encodage en base64 $fonctions->downloadimages($xmlimages,"/tmp/"); /* * Retrieves the XML returned by getgrowthimages() in the web services. * @return XML : $xmlgrowthimages */ function callgetgrowthimages($genotype,$experiment,$repetition){... $clientgrowthimages=$this->client->getgrowthimages($parameters);... } JIEA 2010 23/27

Exemples d'applications Récupérer les images d'une plante pour reconstruire sa croissance : #récupération des images du génotype LAF11-18 dans la manip C1M8 et de la répétition 1 $xmlimages=$fonctions->callgetgrowthimages("laf11-18","c1m8",1); #téléchargement et encodage en base64 $fonctions->downloadimages($xmlimages,"/tmp/"); /* * Download function : Download the image retrieves by getimage() in web service * $urlimage : path of the image on the serveur : retrieves by getgrowthimages or getgrowthimages in <name> </name> * $path: path to download image. */ function downloadimage($urlimage,$path){... $bytes64=$xmlimage->image->bytes64;... fwrite($fichier,base64_decode($bytes64)); } > convert *.png > croissance.gif JIEA 2010 24/27

Bilan de ce projet Installation et configuration : long Codage d'une méthode, d'un client : relativement rapide Abstraction : + : masque la complexité - : accès au code source La liberté d'étudier le fonctionnement du programme, et de l'adapter à vos besoins (liberté 1). Pour ceci l'accès au code source est une condition requise. Définition d'un logiciel libre www.gnu.org JIEA 2010 25/27

Perspectives liées aux WS Sécurité (consortium OASIS : spécification WSS1 ) Versionning Gestion des Workflow (WSBPEL2, Taverna) Les WS et le web sémantique 1 : Web Service Security 2 : OASIS Web Services Business Process Execution Language JIEA 2010 26/27

Remerciements UMR MISTEA (ex MIA) : Emilie Gennari, Anne Tireau, Pascal Neveu. UMR LEPSE : Juliette Fabre, Christine Granier. EIC : Thierry Hotelier. JIEA 2010 27/27