Services Web

publicité
Services Web
Option-RI8 Web Services
Sana Sellami
[email protected]
2016-2017
Objectifs du cours
• Comprendre l’intérêt et les enjeux des services Web
• Découvrir les principales technologies des services Web (SOAP,
WSDL, UDDI , REST )
• Connaître les méthodes de découverte de services
2
PLAN
Partie 1: Introduction aux Services Web (SW)
Partie 2: Découverte de SWS
3
PARTIE 1 :INTRODUCTION AUX
SERVICES WEB
1.
2.
3.
4.
Qu’est ce qu’un service Web?
Services Web SOAP
Services Web REST
Création et déploiement de SW SOAP
4
1. QU’ EST CE QU’UN SERVICE WEB
5
Un service Web .?
Définition du W3C (World Wide Web Consortium) :
Un service web est un système logiciel identifié par un URI,
dont les interfaces publiques et les « bindings » sont définies
et décrites en XML. Sa définition peut être découverte
[dynamiquement] par d’autres systèmes logiciels. Ces autres
systèmes peuvent ensuite interagir avec le service web d’une
façon décrite par sa définition, en utilisant des messages XML
transportés par des protocoles Internet.
6
http://www.w3.org/TR/ws-gloss/
Un service Web .?
• Proposant diverses fonctionnalités que d’autres programmes
peuvent
• découvrir dynamiquement
• et utiliser grâce à des protocoles
• décrits en XML
• basés sur l’échange de messages
– écrits en XML
– transmis par HTTP, FTP, SMTP, etc.
• Caractéristiques
• Réutilisable
• Indépendamment de
• la plate-forme (UNIX, Windows, …)
• l’implémentation (VB, C#, Java, …)
• l’architecture sous-jacente (.NET, JEE, …)
7
Un service Web .?
Services Web
CLIENT
SERVEUR
INTERNET
CLIENT
8
CLIENT
Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#,
Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe
Un service Web .?
• Un service Web est un programme sollicité via Internet
par différents type de clients, permettant l’échange de
données afin que l’application appelante puisse intégrer
le résultat de cet échange à ses propres analyses. Les
requêtes et les réponses s’effectuent dans des formats
ouverts (HTML, XML, JSON ou text) et transitent par
Internet.
9
Exemple de services existants
• Google (http://www.google.com/apis/) :
• accès gratuit mais limité (1000 requêtes par jour après
enregistrement)
• Amazon (http://aws.amazon.com/fr/
)
• accès gratuit mais limité (1 requête par seconde après
enregistrement)
• bien d’autres ! (cf http://www.xmethods.com/
http://webservicex.net par exemple)
10
Exemple de services existants
• Pour la création d’un nuage de tags:
•
•
•
•
Wordle: http://www.wordle.net/
Tag Cloud Generator: http://www.tagcloud-generator.com/
Tagxedo: www.tagxedo.com
…..
11
En saisissant un ensemble de mots clés
En saisissant l’url de facebook
Exemple de services existants
• Outils vous permettant de vous organiser, de
communiquer et de planifier votre travail: Google
Docs, SlideRocket:, Toggl (Free Time Tracking
Software), etc…
• Réduction d’URL (goo.gl, TinyURL, bit.ly, etc.)
• De nombreux services proposés par Google
https://developers.google.com/apis-explorer/#p/
•
•
•
•
•
Analyse de données
Traduction
Réduction d’URL
Statistique fréquentation site web
etc.
12
2. ARCHIECTURES DES SERVICES WEB
13
Architecture générale des services
Web et des clients
Clients du service Web
Interface
HTTP
Socket
Web Service
JAVA Netbeans
Bibliothèque
JEE
SOAP
C# Visual Studio
Bibliothèque
C#
REST
PHP Eclipse PDT
Bibliothèque
PHP
HTML JS Eclipse
JavaScript
XML-RPC
AJAX
14
Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#,
Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe
Un service Web .?
Protocole de description
des services (WSDL,…)
Protocole de description
des messages (SOAP,…)
Protocole de description
des services de transport
(HTTP, SMTP,…)
15
Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#,
Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe
Architecture Orientée Service (SOA)
• Trois acteurs: le fournisseur, annuaire et client
• Reçoit et enregistre les descriptions
de services publiées par les fournisseurs
• Obtient la
description du
service satisfaisant
sa requête
• Reçoit et répond aux recherches
de services lancées par les clients
Annuaire
Localisation de
service
Publication de la
description
Serveur Web
Client
interaction
Fournisseur
• Définit le service
• Publie sa description dans
l’annuaire
• Réalise les opérations
16
Standards
• Protocole : SOAP = HTTP + XML
• Requête/réponse = message XML
• Cadre général permettant l’échange de données structurées au
format XML
• Protocole de transport de ces données basé sur HTTP
• WSDL (Web Service Description Language)- Description de
service web
• Description des interfaces des services
• UDDI - Découverte automatique des services (dynamicité)
•
Annuaire contenant les interfaces (Pages Jaunes, Vertes, Blanches),
permettant d’enregistrer et de rechercher des descriptions de
services web
17
SOAP
• Simple Object Access Protocol, norme W3C
• SOAP 1.0: 1999, basé sur HTTP
• SOAP 1.1: 2000, plus générique, autres protocoles
• SOAP 1.2: recommandation W3C, 2007:
https://www.w3.org/TR/soap/
• Est un protocole de transmission de messages
• Permet des appels de procédures à distance (RPC)
s'appuyant principalement sur le protocole HTTP et sur
XML, mais aussi SMTP et POP.
18
SOAP
• S’appuie sur le protocole HTTP:
• HyperText Transfert Protocol
• Tim Berners-Lee, fin 89 - début 90
• Protocole de communication client/serveur basé sur
TCP/IP
• Simple pour le récupération de documents (GET, HEAD)
• Simple pour la transmission de données (GET, POST)
• Echange classique avec un service Web
• Connexion du client vers le serveur
• Demande d’un document via une méthode GET
• Renvoi du document, erreur ou information sur le
document
• Déconnexion
19
SOAP
La requête SOAP intervient sur le réseau
entre le client et le serveur
Interaction: SOAP
Client
SOAP Côté client
• Ouverture d'une connexion HTTP
• Requête SOAP: document XML
décrivant
o La méthode à invoquer sur la
machine distante
o les paramètres de la méthode
Serveur Web
Fournisseur
listner
SOAP Côté Serveur
• Récupère la requête
• Exécution de la méthode
avec les paramètres
• Renvoie une réponse SOAP
(document XML) au client
20
SOAP: Structure
• Envelope contient des définitions de
namespaces
• Header (en-tête) utilisé
pour
transmettre
des
données
d’authentification ou de gestion de
session.
• Body
(Corps)
contient
les
informations obligatoires destinées à
l'ultime destinataire du message.
21
SOAP: Exemple
Requête SOAP getsomme envoyée à un service Sommer
22
SOAP: Exemple (suite)
Réponse SOAP
23
WSDL (Web Services Description Language)
• Langage de description des services web
• Depuis 2007, WSDL 2.0 est une recommandation W3C
• Objectif: Décrire les services comme un ensemble
d’opérations et de messages abstraits reliés (bind) à des
protocoles et des serveurs réseaux
• Basé sur le langage XML (schéma XML)
24
WSDL (Web Services Description Language)
• Regroupe les informations nécessaires pour interagir avec
le service :
• les méthodes, les paramètres et valeurs retournées, le
protocole de transport utilisé, la localisation du service
• Document indispensable au déploiement de Services Web
• Publication et recherche de services au sein de l’annuaire se
font via les documents WSDL
• Pour l’accès à un service particulier, un client se voit retourné
l’URL du fichier WSDL décrivant l’implémentation du service
25
WSDL (Web Services Description Language)
• Description à 2 niveaux: Séparation entre la partie abstraite
et concrète
26
Figure : Concepts définis par WSDL 1.1 et WSDL 2.0
http://www.w3.org/TR/wsdl20/
Source: http://en.wikipedia.org/wiki/Web_Services_Description_Language
WSDL (Web Services Description Language)
Décrit la structure des données
transmises dans un message
Décrit l’ensemble des données
transmises au cours de l’opération
Composé de l’ensemble
des opérations abstraites
Décrit la façon dont un
ensemble d’opérations
abstraites, appelé « type
de port », est lié à un port
selon un protocole réel
Un ensemble de
points finaux du
réseau appelés «
ports » permettant
de déterminer la
localisation du
service
27
Exemple WSDL 1.1: sommer.wsdl
Racine du document
Définition des types de données (facultatif)
Message: Définition des messages échangeables
PortType: définition des ensembles
d’opérations
28
service: localisation des services web
Structure d’un WSDL : <Types>
• Un type décrit la structure de données transmises dans un
message.
• Contient les définition de types utilisant un système de
typage par défaut XML Schema (XSD).
• Pouvant contenir des types simples et complexes
29
Structure d’un WSDL : <message>
• Décrit les données associées à une opération (1 requête et
1 réponse HTTP par opération, 1 message d'erreur ”fault”
optionnel).
• Un document WSDL peut contenir zéro ou plusieurs
messages.
• Chaque message peut être un composé de plusieurs parties
30
Structure d’un WSDL : <portType>
• Un document WSDL peut contenir 0 à plusieurs portType
• L’élément portType contient un seul attribut name. La
convention de nommage nameOfWebService PortType.
• Composé d'un ensemble d'opérations abstraites (i.e.
signature de la méthode). Une opération est composée d’un
message pour l’appel (Input) et un pour le retour (Output).
31
Structure d’un WSDL : <portType>
• Définition d’un seul type de port, avec les opérations
abstraites, correspondant aux déclarations de méthodes
dans l’interface Java :
32
Structure d’un WSDL : <binding>
• Une liaison (ou binding) décrit la façon dont un
portType(en d’autres termes l’abstraction du service, i.e.
ses opérations abstraites) est mis en oeuvre pour un
protocole particulier (HTTP par exemple) et un mode
d’invocation (RPC par exemple).
• Pour un portType, on peut avoir plusieurs liaisons, pour
différencier les modes d’invocation (RPC ou autres) ou de
transport (HTTP ou autre) des différentes opérations.
33
Structure d’un WSDL : <binding>
Mode d’invocation
Protocole
Nom de l’opération dans le type de port
La représentation du message request
La représentation du message response
34
Structure d’un WSDL : <service>
• Un service est décrit comme un ensemble de points finaux
du réseau appelés « ports »
• Un port spécifie une URL qui correspond à
l’implémentation du service par un fournisseur.
• Le port est associé à un « binding » définissant ainsi un
simple point de terminaison (endpoint:@ où se situe le WS)
35
Structure d’un WSDL : <port>
Nom du service qui encapsule les ports
Nom du port
Nom de la liaison associée au port
36
Mapping Java WSDL
Code Java
Fichier WSDL
Classe Java
public class IpAddressSearchWebService
Service
Commentaire
/*using this function, user can find the
country and city by Ip */
Documentation
Méthode
public String[] getCountryCityByIp(String
theIpAddress)
Operation
Paramètre
Types
String theIpAddress
<wsdl: service name="IpAddressSearchWebService">
</wsdl:service>
<wsdl:documentation>
using this function, user can find the country and city by Ip
</wsdl:documentation>
<wsdl:operation name="getCountryCityByIp">
<wsdl:input …./>
<wsd:output…./>
</wsdl:operation>
<wsdl:types>
<s:schema elementFromDefault=“qualified">
<s:element name="getCountryCityByIp">
<s:complexType>
<s:sequence>
<s:element minoccurs=“0" maxoccurs=“1" name=“theIpAddress"
37
type=“s:string" />
</s:sequence> </s:complexType>…</s:element>
</wsdl:types>
UDDI : Universal Description, Discovery and
Integration
• Universal Description, Discovery and Integration
• Historique
• À l’origine: annuaire universel pour les services web (à la Google)
• Aujourd’hui: vise plutôt les environnements privés, à petite échelle
• Raisons: peu d’annuaires généraux UDDI (IBM, Microsoft, …),
contenu pauvre et non fiable
• Meilleure fiabilité en environnements contraints, privés (~EAI)
• Élément d’infrastructure qui aide aussi à stocker des infos absentes en
WSDL
• Versions
• Version 1: les bases d’un annuaire de services
• Version 2: adaptation à SOAP et WSDL
• Version 3: redéfinition du rôle UDDI, accent sur les
implémentations privées, sur l’interaction entre annuaires privés et
publics
38
UDDI : Universal Description, Discovery and
Integration
• L’annuaire UDDI permet de :
• Publier, découvrir des informations sur une entreprise et ses
services
• L’inscription sur UDDI permet à une entreprise de se
présenter ainsi que ses services
• L’adoption de UDDI facilite le développement des échanges de
type « B2B »
• L’enregistrement des services dans un annuaire s’effectue auprès
d’un opérateur (Microsoft ou IBM actuellement) à travers son site
mais on peut créer ses propres registres UDDI (UDDI4J, jUDDI)
• http://uddi.xml.org/
• Un annuaire à l’aide d’un browser en ligne:
http://soapclient.com/UDDIAdv.html
39
UDDI : Universal Description, Discovery and
Integration
• Comporte plusieurs catégories de données: Informations
organisées en trois méthodes
• .
UDDI
Pages Blanches
Pour trouver un service par contact, nom et adresse
Pages Jaunes
Pour trouver un service par description (WSDL) répertorié par catégorie
Pages vertes
Pour trouver un service par caractéristiques techniques
40
UDDI
• Le modèle UDDI comporte 5 structures de
données principales décrites sous forme de
schémas XML :
• BusinessEntity : ensemble
d’informations sur l’entreprise qui publie
les services dans l’annuaire
• BusinessService : ensemble
d’informations sur les services publiés par
l’entreprise
• BindingTemplate : ensemble
d’informations concernant le lieu
d’hébergement du service (i.e. adresse du
fournisseur)
•
tModel : ensemble d’informations
concernant le mode d’accès du service
(définitions WSDL)
•
publisherAssertion : ensemble
d’informations contractuelles entre
partenaires en échanges commerciaux
41
Revenons à l’architecture
Demande de Service
(Découverte):
Search Message en SOAP
Annuaire
UDDI
Publication de la
description WSDL
SOAP
Client
Programme
client
Récupération de la
description WSDL
Serveur Web
Fournisseur
Service
interaction
HTTP(S), FTP, etc
42
4. SERVICES WEB REST
43
REST
• REST acronyme de REpresentational State Transfert
• Concept introduit en 2000 dans la thèse de Roy FIELDING
• Ce n’est pas:
• Un format
• Un protocole
• Un standard
• Est un style d’architecture inspiré de l’architecture WEB
• Permet l’envoi de messages sans enveloppe SOAP et dans
un encodage libre (XML, JSON, binaire, simple texte).
44
Services REST
• REST n’est pas un standard: Pas de recommandation du W3C
• Les services REST sont utilisés pour développer des
architectures orientées ressources (ROA) ou orientées
Données (DOA).
• Qu’est ce qu’une ressource?
« Any information that can be named can be a resource: a
document or image, a temporal service (e.g. « today’s weather
in Los Angeles »), a collection of other resources, a non-virtual
object (e.g. a person), and so on. In other words, any concept
that might be the target of an author’s hypertext reference must
fit within the definition of a resource» Roy Fielding thesis , 2000
45
Services REST: Fournisseurs
https://developer.yahoo.com/
46
Services REST: Exemples
Glassware pour GoogleGlass
https://developers.google.com/glass/
47
Services REST
• C’est quoi REST ?
• Ressources (Identifiant)
• identifié par une URI
• Méthodes pour manipuler l’identifiant
• Méthodes HTTP: GET, POST, PUT, DELETE
• Représentation donne une vue sur l ’état:
• Informations transférées entre le client et le serveur
• Exemples: XML, JSON, …
48
Services REST
• Architecture Orientée Ressource
• Toute information qui peut être nommée est une
ressource
• Une ressource est identifiée par un identificateur (URI)
Qu’est ce qu’une URI ?
49
Services REST
• Chaque URI identifie une ressource http://api.domain.com/users/hugo
• Une URI ne contient pas de verbe
• Une même URI peut être appelée avec différentes méthodes HTTP (GET,
POST, PUT, DELETE)
• GET http://api.domain.com/users
 récupère les utilisateurs
• POST http://api.domain.com/users
 crée un nouvel utilisateur
• PUT http://api.domain.com/users/hugo
 modifie Hugo
• DELETE http://api.domain.com/users/hugo
 supprime Hugo
50
Services REST
• Données fournies suivant une représentation pour
• le client (GET)
• Pour le serveur (POST et PUT)
• Données retournées sous différents formats
•
•
•
•
XML
JSON (JavaScript Object Notation)
(X)HTML
….
• Le format d’entrée (POST) et le format de sortie (GET) d’un
service Web d’une ressource peuvent être différents
51
Services REST
• Exemples formats JSON et XML
52
53
54
Description de services Web REST
• Langages: WSDL 2.0,WADL, RSDL (Restful Service
Description Language), SERIN (Semantic RESTFul Interfaces)
• WSDL 2.0
55
http://www.w3.org/TR/wsdl20/
Description de services Web REST
WSDL2.0
• Évolution de Web Service Description Language
recommandé en 2007 par le W3C.
• WSDL 2.0 permet de spécifier un binding HTTP au lieu de
SOAP, utilisant n’importe quel verbe HTTP.
• Permet donc en théorie de décrire des interfaces REST-like et
RESTful...
• ... quoi que le modèle conceptuel sous-jacent reste centré sur la
notion d’opération.
• Des paramètres (partie de l’URI après le ?) peuvent être
spécifiés à l’aide d’un schéma XML.
• Cela permet notamment de leur associer un type de données.
56
Description de services Web REST
• WADL (Web Application Description Language)
• Un langage de description XML de services de type REST
• Le W3C contribue à sa spécification
• Permet une description de services par éléments de type:
ressource, méthode, paramètre, requête, réponse.
•  Pas assez de frameworks qui supportent la description
WADL
• Liens utiles: https://wadl.java.net/,
http://www.w3.org/Submission/wadl/
57
Description de services Web REST
EXEMPLE de description WADL pour l’application Yahoo News Search
Description des espaces
de noms
Description de
Grammaire XML
utilisée par le service
Description
des ressources
Et méthodes
HTTP utilisées
58
Plus facile à comprendre, à interpréter et à écrire qu’un WSDL
Description de services Web REST
WADL
ELEMENTS WADL
DESCRIPTION
<application>
La racine d’une description WADL
<ressources base=…….>
•
•
Un conteneur pour les ressources que l’application fournit
L’attribut base définit l’URI pour les ressource
<resource id=“"
path="”>
•
•
•
Décrit la ressource que l’application fournit
L’attribut id identifie l’élément ressource
L’attribut path fournit une URI relative pour l ’identifiant de la
ressource.
<method name=“ "
id="”>
•
•
Fils d’élément ressource ou application
L’attribut name définit les méthodes HTTP
<request> <response>
•
Request: décrit une requête à la méthode HTTP sur une
ressource
Response: décrit la sortie en réalisant la méthode HTTP sur le
ressource
•
Pour les autres éléments et attributs pensez à regarder
http://www.w3.org/Submission/wadl/
59
Description de services Web REST
• WADL
 Design simple
 Facile à lire, comprendre et implémenter
 N’est pas un standard
• WSDL
est une recommandation W3C
design complexe
Nécessité de comprendre plus de concepts
utilise uniquement des paramètres XML
60
Description de services Web REST
• Langages académiques pour la description sémantique de
services REST: SA-REST (Semantic Annotation of Web
Resources) et hREST (HTML for RESTFUL SERVICES).
• Utilisent l’annotation sémantique de la description textuelle
des services, par un micro-format (hRESTS) ou RDFa (SAREST).
• Propositions très influencées par SOAP :
• SA-REST découle explicitement de SA-WSDL,
• le modèle conceptuel de hREST est très proche de celui des
services SOAP, centré sur la notion d’opération.
61
SOAP VS REST
62
SOAP VS REST
REST
SOAP
Standardisé
Non
Oui
Sécurité
Non (restreinte par
l’emploi des méthodes
HTTP)
Oui (WS-Security)
Complexité
Non
Oui (lourdeur)
63
3. CRÉATION ET DÉPLOIEMENT DE
SERVICES WEB EN JAVA
64
Architecture générale des services
Web et des clients
Clients du service Web
Interface
HTTP
Socket
Web Service
JAVA Netbeans
Bibliothèque
JEE
SOAP
C# Visual Studio
Bibliothèque
C#
REST
PHP Eclipse PDT
Bibliothèque
PHP
HTML JS Eclipse
JavaScript
XML-RPC
AJAX
65
Création de services web
La conception d’un service Web nécessite les étapes suivantes :
• Définir et créer un service Web
• Publier le service Web sur le serveur d’application
• Utiliser un service Web en créant un client.
Créer un service Web
Publier un service Web
Utiliser un service Web
Serveur d’application
66
CLIENT (utilisateur)
Création de services web en Java
• Deux approches pour la création de SW:
• Approche Bottom-up (ou code first): Création d’une classe
Javadéploiement WSDL
• Approche top-down (ou contract-first) : Développer un Service
Web à partir de sa description WSDL.
• Outils utilisés:
• Frameworks: Axis2 , Apache CXF (framework Java/Web
Services) , Spring WS
• API JAX-WS et JAX-RS
• Etc.
• Serveurs: Tomcat, Glassfish, tomEE Plus, etc.
67
JAX-WS (Java API for XML WS)
• Java API for XML WS
• Ensemble d’ APIs pour la programmation de services web
sur JEE (incluant
JAXB(Java Architecture for XML binding) et SAAJ)
• Utilisation simplifiée par des annotations dans les classes
Java
• Spécification de la correspondance XML - Objets
• Facilitation de la programmation des points d’ entrée de
services
68
Annotations JAX-WS
• JAX-WS repose sur l’utilisation massive d’annotations pour
la configuration d’un Service Web
• Les principales annotations sont les suivantes:
•
•
•
•
•
@WebService : Implémentation d’un Service Web
@WebMethod : Paramétrer une opération
@WebParam : Paramétrer un message
@WebResult : Paramétrer un message de sortie
@WebFault : Paramétrer un message fault
• A noter que seule l’utilisation de l’annotation @WebService
est nécessaire (utilisation de valeurs par défaut)
69
Et concrètement ça donne quoi?
• Vous allez faire le TP qui est divisé en deux parties:
1. Tester des services web existants
2. Création et déploiement de services web
• Java
• L’IDE Netbeans
• Le serveur d’applications Glassfish
Serveur d’application
70
Les web services Ingénierie systèmes –
Jonathan Fontanel, Philippe Lacomme, Libo Ren
CLIENT (utilisateur)
REFERENCES
• “RESTful Web Services Web services for the real world”
By Leonard Richardson, Sam Ruby, Publisher: O'Reilly Media;
2007
• Les web services Ingénierie systèmes - Concevoir et utiliser
des applications 2.0 C#, Java, PHP, API JavaScript, Android
SDK, iOS SDK., Jonathan Fontanel, Philippe Lacomme, Libo
Ren
• Cours Michael Mrissa ” Introduction aux services Web”
• https://jersey.java.net/documentation/latest/jaxrsresources.html
• http://www.developer.com/java/creating-restful-webservices-with-jax-rs.html
• https://netbeans.org/kb/docs
71
Téléchargement