Cours SOA_Partie 2 Chapitre2&3

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 14

12/10/2022

CH2. Les Standards des services Architecture J2EE


Web (1ière generation) Client Java
RMI,
JMS
Serveur d’application J2EE

Web Container Spring ou EJB Services de


■ HTTP (CoucheWeb) Container l’infrastructure
Client http HTTP (Couche Métier)
■ SOAP HTML JaxWS,Jax RS
Servlet,JSP Jersey, CXF, AXIS
■ WSDL Client SOAP
SOAP
Spring MVC,JSF JTA
XML
Composants JNDI
■ UDDI Java, .Net, PHP, Cobol Service Métier ….
SOAP (Traitements)
■ BPEL AXIS,CXF
HTTP JPA
Client HTTP
■ WS-Security Mobile, JQuery, Flash
JSON,XML,..
Service Hibernate
RESTful Entity Entity
. JDBC
Jersey,CXF

SGBD
Data Base
57
59

58 59

INTRODUCTION AUX WEB SERVICES LE PROTOCOLE HTTP


 Les Web Services sont des composants web basés sur Internet(HTTP ) qui exécutent  HTTP :HyperText TranfertProtocol
des tâches précises et qui respectent un format spécifique (XML). ◦ Protocole qui permet au client de récupérer des documents du serveur
◦ Ces documents peuvent être statiques (contenu qui ne change pas : HTML,
 Ils permettent aux applications de faire appel à des fonctionnalités à distance en PDF, Image, etc..) ou dynamiques ( Contenu généré dynamiquement au
simplifiant ainsi l’échange de données. moment de la requête :PHP,JSP,ASP…)
◦ Ce protocole permet également de soumissionner les formulaires.
 Les Web Services permettent aux applications de dialoguer à travers le réseau,
indépendamment de
 Fonctionnement (très simple en HTTP/1.0)
◦ leur plate-forme d’exécution
◦ et de leur langage d'implémentation. ◦ Le client se connecte au serveur (Créer une socket)
◦ Le client demande au serveur un document : RequêteHTTP
 Ils s’inscrivent dans la continuité d'initiatives telles que ◦ Le serveur renvoi au client le document (status=200) ou d’une erreur
◦ CORBA (Common Object Request Broker Architecture, de l'OMG) en apportant (status=404 quand le document n’existe pas)
toutefois une réponse plus simple, s’appuyant sur des technologies et standards ◦ Déconnexion
reconnus et maintenant acceptés de tous.

60 61

60 61
12/10/2022

CONNEXION Méthodes du protocole HTTP


 Une requête HTTP peut être envoyée en utilisant les
Client HTTP Connexion Serveur Web méthodes suivantes:
:Socket :ServerSocket ◦ GET : Pour récupérer le contenu d’un document
GET /doc.htm
IPS=
Port=80 Post /script.php port=80 ◦ POST : Pour soumissionner des formulaires (Envoyer,dans la
Réponse HTTP accept() requête, des données saisies par l’utilisateur )
Status=200 ◦ PUT pour envoyer un fichier du client vers le serveur
Déconnexion :Socket ◦ DELETE permet de demander au serveur de supprimer un
Doc.htm IPC=…. Doc.htm
port=…. document.
◦ HEAD permet de récupérer les informations sur un document
(Type, Capacité, Date dedernière modification etc…)

62 63

62 63

Le client envoie la requête : MéthodePOST Le client envoie la requête : MéthodeGET

Entête de la requête Entête de la requête

Post /Nom_Script HTTP/1.0 GET /Nom_Script?login=val1&pass=val2&…. HTTP/1.0


Accept: text/html Accept: text/html
Accept-Language : fr
Accept-Language : fr
User-Agent : Mozilla/4.0
User-Agent : Mozilla/4.0
*** saut de ligne ***
login=Value1& pass=Value2
& Var3=Value3

corps de la requête est vide


corps de la requête

64 65

64 65
12/10/2022

Le Serveur retourne la réponse :


L’idée des WebServices
Entête de la réponse
Client Requête HTTP Serveur HTTP
HTTP/1.0 200 OK Ligne de Status
PHP <?xml version="1.0" encoding="UTF-8"?> BanqueService
Date : Wed, 05Feb02 15:02:01 GMT Date du serveur <Envelope>
.net <Header/> +conversion(double mt):double
Server : Apache/1.3.24 Nom du Serveur <Body>
+Compte getCompte()
<conversion>
Last-Modified : Wed 02Oct01 24:05:01GMT java +List<Compte> getComptes()
Dernière modification <montant>12</montant>
</conversion>
Content-Type : Text/html Type de contenu </Body>
Compte
Cobol </Envelope> JaxWS
Content-legnth : 4205 -code :int
Sa taille
JaxB -solde:double
*** saut de ligne *** Réponse HTTP
<?xml version="1.0" encoding="UTF-8"?>
<HTML><HEAD> <Envelope>
<Body>
…. Le fichier que le client va <conversionResponse>
<return>132</return>
</BODY></HTML> afficher </conversionResponse>
</Body>
</Envelope>

corps de la réponse
med@youssfi

66 67

66 67

Requête SOAP avec POST Réponse SOAP : Entête de la réponse

HTTP/1.0 200 OK
Entête de la requête
Date :Wed, 05Feb02 15:02:01GMT
Post /Nom_Script HTTP/1.0 Server :Apache/1.3.24
Accept: application/xml Mime-Version 1.0
Accept-Language :fr Last-Modified :Wed 02Oct01 24:05:01GMT
Content-Type :Text/xml

Content-legnth :4205
*** saut de ligne *** *** saut de ligne ***

corps de la requête SOAP


corps de la réponse

68 69

68 69
12/10/2022

Cycle de vie d’utilisation


CONCEPTS DES WEB SERVICES Annuaire
UDDI
 Le concept des Web Services s’articule actuellement autour des trois concepts
2 : J’ai trouvé! Voici leserveur
suivants : hébergeant ce service web

un serviceWEB
1 : Je recherche
◦ SOAP (Simple Object Access Protocol) Contrat
 est un protocole d'échange inter-applications indépendant de toute plate-forme, basé sur le 3 : Quel est le format d’appel du SOAP
langage XML. service que tu proposes?
 Un appel de service SOAP est un flux ASCII encadré dans des balises XML et transporté
dans le protocole HTTP. 4 :Voici mon contrat (WSDL)
XML
◦ WSDL (Web Services Description Language)
 donne la description au format XML des Web Services en précisant les méthodes pouvant être
invoquées,leurs signatures et le point d’accès (URL,port, etc..). Client Serveur
 C’est,en quelque sorte, l’équivalent du langage IDL pour la programmation distribuée XML
CORBA.
5 : J’ai compris comment invoquer
◦ UDDI (Universal Description, Discovery and Integration) ton service et je t’envoie un document
 normalise une solution d’annuaire distribué de Web Services, permettant à la fois la publication XML représentant ma requête
et l'exploration (recherche) de Web Services.
 UDDI se comporte lui-même comme un Web service dont les méthodes sont appelées via XML
le protocole SOAP.
6 : J’ai exécuté ta requêtemeedt@jeyoutsesfir.neettourne le résultat
70 71

70 71

SOAP Pile des standards des services


 SOAP est un protocole d'invocation de méthodes sur des services distants.
Basé sur XML, Web étendus
 SOAP a pour principal objectif d'assurer la communication entre
machines.
 Le protocole permet d'appeler une méthode RPC et d'envoyer des messages aux
machines distantes via un protocole de transport ( HTTP ).
 Ce protocole est très bien adapté à l'utilisation des servicesWeb,car il permet de
fournir au client une grande quantité d'informations récupérées sur un réseau de
serveurs tiers, voyez:

med@youssfi.net
FATIMA-ZAHRA BELOUADHA. SOA. 3ÈME ANNÉE.
72 58
OPTIONS IQL ET TI. FILIÈRE GÉNIE INFORMATIQUE.

72 73
12/10/2022

Structure d'un message SOAP


Structure d’un message SOAP
 SOAP envelope (enveloppe)
◦ Est l'élément de base du message SOAP.
◦ L'enveloppe contient la spécification des espaces de désignation (namespace)
et du codage de données.

 SOAP header
◦ (entête) est une partie facultative qui permet d'ajouter des fonctionnalités
à un message SOAP de manière décentralisée sans agrément entre les
parties qui communiquent.
◦ L'entête est utile surtout, quand le message doit être traitépar plusieurs
<?xml version="1.0" encoding="utf-8"?> intermédiaires.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding">
<soap:Header>  SOAP body (corps) est un container pour les informations mandataires à
<!-- en-tête --> l'intention du récepteur du message, il contient les méthodes et les paramètres
</soap:Header>
<soap:Body>
qui seront exécutés par le destinataire final.
<!-- corps -->
</soap:Body>
</soap:Envelope>
 SOAP fault (erreur) est un élément facultatif défini dans le corps SOAP et qui
med@youssfi.net
est utilisé pour reporter les erreurs.
74 75

74 75

JAX-WS Exemple
@WebService(serviceName="BanqueWS")
public class BanqueService {
• JAX-WS est la nouvelle appellation de JAX-RPC (Java API for XML Based @WebMethod(operationName="ConversionEuroToDh")
RPC) qui permet de développer très simplement des services web en public double conversion(@WebParam(name="montant")double mt){
Java. return mt*11;
}
• JAX-WS fournit un ensemble d'annotations pour mapper la @WebMethod
correspondance Java- WSDL. Il suffit pour cela d'annoter directement public String test(){ return "Test"; }
@WebMethod
les classes Java qui vont représenter le service web. public Compte getCompte(){ return new Compte (1,7000); }
• Dans l'exemple ci-dessous, une classe Java utilise des annotations JAX- @WebMethod
public List<Compte> getComptes(){
WS qui vont permettre par la suite de générer le document WSDL. Le List<Compte> cptes=new ArrayList<Compte>();
document WSDL est auto-généré par le serveur d'application au cptes.add (new Compte (1,7000)); cptes.add (new Compte (2,9000));
moment du déploiement : }}
return cptes;

76 77

76 77
12/10/2022

Que Faut-il connaître de SOAP ? SOAP et concurrents


■ Non : Utiliser des APIs fournissant une abstraction des
messages SOAP RMI RPC DCOM CORBA SOAP
Organisme Sun SUN/ Microsoft OMG W3C
■ Oui (mais il faut connaître XML et XML Schema) pour :
OSF
- Débugger une application
Plateforme Multi Multi Win32 Multi Multi
- Réaliser des tests via l’outil graphique SOAP UI
Langage de java C, C++ C++, VB, VJ, Multi Multi
- Intercepter les messages bas niveau SOAP (via les développement … Opascal…
handlers)
Langage de Java RPCGE ODL IDL WSDL
■ SOAP UI (www.soapui.org) description N
- Disponible en Standalone ou intégré (Eclipse, Intellij, Transport TCP, TCP, IP/IPX GIOP, HTTP,
Netbeans, Maven...) et indépendant de la plateforme HTTP, UDP IIOP HTTPR,
IIOP SMTP
de développement
- Supporte les Services Web étendus ou REST transaction Non Oui Oui Oui
- Permet d’inspecter, invoquer, développer et simuler Sécurité SSL, - - SSL SSL
JAAS
des Services Web via des bouchons (mocks), et
d’effectuer des tests QoS (temps de réponse...)
81 82

78 79

SOAP Vs RMI, DCOM et CORBA


(Avantages et inconvénients) CH3. Les web services REST (2ième
RMI DCOM CORBA SOAP génération)
- Monolang. - Multilangage - Multilangage - Multilangage
- Multi--plate.
- Monoplateforme - Multiplat. - Multiplaforme
- Problème de - Protocole orienté - Installation - Spécification non
performance connexion (+eurs coûteuse (si propriétaire (W3C)
et sécurité paquets doivent un ORB est à - Requêtes/réponses  Comprendre l’architecture des applications
être échangés acheter) en XML
pour créer ou - Implémentation
compatibles REST
maintenir une facile sur différents  Exposer des services REST
session) protocoles de
 Consommer des services REST dans des
- Faible diffusion transport
(Non disponible - Capable de franchir applications Web
sur Mac OS, NT les farewalls (mais
3.51, Win95, le contrôle d’accès
WinCE2, coûteux à faible granularité
sur Unix, MVS, sera perdu)
VMS ou NT)

83

80 81
12/10/2022

Rappel: Utilisation du web aujourd’hui Rappel: Web Services (Définition)


1

1
2 2  Services informatiques de la famille des
2
technologies web permettant la communication
1
2
Serveur d’applications
entre des applications hétérogènes dans des
environnements distribués.
1  Ils ont été proposé à la base comme solution
1
2 d’intégrations de différents logiciels développés
2
1 par des entreprises (ERP, SCM, CRM) leur
2 2 permettant de communiquer entre eux.
Serveur d’applications
 Basés sur XML (déscription et échange) et
Demande de ressources utilisant en général les protocoles du web comme
Resources
canal de communication;

82 83

Types de Services Webs

 Deux principaux types


🞑 SOAP
🞑 REST Services Web RESTFul

84 85
12/10/2022

Web Service REST : Définition(1) Web Service REST: Définition(2)

 Acronyme de REpresentational State Ce qu’il est :


Transfert défini dans la thèse de Roy Fielding  Un système d’architecture
en 2000.
 Une approche pour construire une application
 REST n’est pas un protocole ou un format,
contrairement à SOAP, HTTP ou RCP, mais un Ce qu’il n’est pas
style d’architecture inspiré de l’architecture du  Un protocole
web fortement basé sur le protocole HTTP
 Un format
 Il n’est pas dépendant uniquement du web et peut
 Un standard
utiliser d’autre protocoles que HTTP

86 87

REST  utilisation REST  Fournisseurs

 Utiliser dans le développement des


applications orientés ressources (ROA) ou
orientées données (DOA)
 Les applications respectant l’architecture
REST sont dites RESTful

88 89
12/10/2022

REST  Statistics REST  Caractéristiques


 Les services REST sont sans états (Stateless)
• Chaque requête envoyée au serveur doit contenir
toutes les informations relatives à son état et est
traitée indépendamment de toutes autres requêtes
• Minimisation des ressources systèmes (pas de
gestion de session, ni d’état)
 Interface uniforme basée sur les méthodes
HTTP (GET, POST, PUT, DELETE)
 Les architectures RESTful sont construites à
partir de ressources uniquement identifiées par
Statistique d’utilisation des services web REST et SOAP chez AMAZON des URI(s)

90 91

Requêtes REST Ressources


 Ressources
 Une ressource est un objet identifiable sur le système
🞑 Identifiée par une URI (
 Livre, Catégorie, Client, Prêt
http://unice.fr/cursus/master/miage)
Une ressources n’est pas forcément un objet matérialisé
 Méthodes (verbes) permettant de manipuler (Prêt, Consultation, Facture…)
les ressources (identifiants)  Une ressource est identifiée par une URI : Une URI identifie
🞑 Méthodes HTTP : GET, POST, PUT, DELETE uniquement une ressource sur le système
 Représentation : Vue sur l’état de la ressource
🞑 Format d’échanges entre le client et le serveur https://jsonplaceholder.typicode.com/ Clef primaire de la
ressource dans la BDD
(XML, JSON, text/plain,…) users/1

92 93
12/10/2022

Méthodes (Verbes) Méthode GET

 Une ressource peut subir quatre opérations de bases  La méthode GET renvoie une représentation
CRUD correspondant aux quatre principaux types de de la ressource tel qu’elle est sur le
requêtes HTTP (GET, PUT, POST, DELETE)
système
 REST s’appuie sur le protocole HTTP pour effectuer
GET: https://jsonplaceholder.typicode.com/users/1
ces opérations sur les objets
• CREATE  POST
• RETRIEVE  GET
Statut : 200
• UPDATE  PUT Message : OK
En-tête : … .
• DELETE  DELETE Client
Représentation : XML, JSON,
Serveur

html,…

94 95

Méthode POST Méthode DELETE


 La méthode POST crée une nouvelle ressource sur
le système  Supprime la ressource identifiée par l’URI sur
POST:https://jsonplaceholder.typicode.co/users
le serveur Identifiant de
la ressource
sur le serveur
DELETE:
https://jsonplaceholder.typicode.com/users/1
Corps de la requête
Représentation : XML, JSON, html,…

Client Statut : 201, 204 Serveur Client Statut : 200 Serveur


Message : Create, No content Message : OK
En-tête : … . . En-tête : …..

96 97
12/10/2022

Méthode PUT Reflexions


 Que se passe t il
 Mise à jour de la ressource sur le système • Si on fait de la lecture avec un POST ?
Identifiant de
PUT: la ressource • Si on fait une mise à jour avec un DELETE ?
sur le serveur
https://jsonplaceholder.typicode.com/users/1 • Si on fait une suppression avec un PUT ?
En-tête : …..
Corps de la requête : XML, JSON,…

 REST ne l’interdit pas


Client Statut : 200 Serveur  Mais si vous le faites, votre application ne
Message : OK
En-tête : …..
respecte pas les exigences REST et donc
n’est pas RESTFul

98 99

Représentation WADL
Une représentation désigne les données échangées entre le  Web Application Definition Language est un
client et le serveur pour une ressource: langage de description des services REST au
 HTTP GET  Le serveur renvoie au client l’état de la
format XML. Il est une spécification de W3C initié
ressource
par SUN (www.w.org/Submission/wadl)
PUT, POST  Le client envoie l’état d’une ressource au

serveur Peut être sous différent format :  Il décrit les éléments à partir de leur type
 JSON (Ressources, Verbes, Paramètre, type de
 XML requête, Réponse)
 XHTML
 Il fournit les informations descriptives d’un
 CSV
service permettant de construire des
 Text/plain

 …..
applications clientes exploitant les services
REST.

100 101
12/10/2022

WADL
WADL
 Web Application Description Language
 Standard du W3C
 Permet de décrire les éléments des services
🞑 Resource, Méthode, Paramètre, Réponse
 Permet d’interagir de manière dynamique
avec les applications REST

 Moins exploité que le WSDL pour les


Services SOAP

102 103

JSON
JSON « JavaScript Obect Notation » est un
format d’échange de données, facile à lire par
un humain et interpréter par une machine.
Basé sur JavaScript, il est complètement
indépendant des langages de programmation mais
Rappel  JSON utilise des conventions qui sont communes à
toutes les langages de programmation (C, C++,
Perl, Python, Java, C#, VB, JavaScript,….)
Deux structures :
 Une collection de clefs/valeurs  Object

 Une collection ordonnée d’objets  Array

104 105
12/10/2022

JSON JSON
Objet ARRAY
Commence par un « { » et se termine par « } » Liste ordonnée d’objets commençant par "[" et
et composé d’une liste non ordonnée de paire se terminant par "]", les objets sont séparés
clefs/ valeurs. Une clef est suivie de « : » et les l’un de l’autre par ",". [
paires clef/ valeur sont séparés par « , » { "id": 51,
"nom": "Mathematiques 1",
"resume": "Resume of math ",
{ "id": 51, "isbn": "123654",
"nom": "Mathematiques 1", "resume": "quantite": 42,
"Resume of math ", "isbn": "123654", "photo": ""
"categorie": },
{ { "id": 102,
"id": 2, "nom": "Mathematiques", "nom": "Mathematiques 1",
"description": "Description of "resume": "Resume of math ",
mathematiques " "isbn": "12365444455",
}, "quantite": 42,
"quantite": 42, "photo": ""
"photo": "" }
} ]

106 107

JSON Services Web étendus VS REST


<?xml version="1.0" encoding="UTF-8"?>
Value <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/">

Un objet peut être soit un string entre «""» ou


<SOAP-ENV:Header/>
<S:Body> <ns2:hello xmlns:ns2="http://
services.bibliotheque.ntdp.miage.unice.fr/">
un nombre (entier, décimal) ou un boolean <name>Miage NTDP</name>
</ns2:hello>

(true, false) ou null ou un objet. </S:Body>


</S:Envelope>

SOAP
Client Serveur

http://localhost:8080/Bibliotheque/webresources/category/Miage%20NTDP
REST

Client Serveur

108 109
12/10/2022

Services Web étendus VS REST Services Web étendus VS REST


SOAP REST
 Avantages
 Avantages
 Simplicité de mise en œuvre
 Standardisé
 Lisibilité
par un humain
 Interopérabilité
 Evolutivité
 Sécurité (WS-Security)  Repose sur les principes du web

 Inconvénients  Représentations multiples (XML, JSON,…)

 Performances (enveloppe SOAP supplémentaire)  Inconvénients


 Sécurité restreinte par l’emploi des méthodes HTTP
 Complexité, lourdeur

110 111

Vous aimerez peut-être aussi