You are on page 1of 46

LES SERVICES WEB DE TYPE SOAP

LES SERVICES WEB DE TYPE SOAP


ü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
LES SERVICES WEB DE TYPE SOAP

üSimple Object Access Protocol, norme W3C

ü SOAP 1.0 : 1999, basé sur HTTP

ü SOAP 1.1 : 2000, plus générique, autres protocoles supportés

ü SOAP 1.2 : recommandation W3C, 2007

üEst un protocole de transmission de messages

üPermet des appels de procédures à distance (XML-RPC) s'appuyant principalement


sur le protocole HTTP et sur XML, mais aussi SMTP et POP.
LES SERVICES WEB DE TYPE SOAP

Entête du protocole de transport (p.ex. HTTP)

SOAP Envelope

Entête SOAP (SOAP Header)

Corps SOAP (SOAP Body)

SOAP fault
LES SERVICES WEB DE TYPE SOAP
LES SERVICES WEB DE TYPE SOAP
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 299
SOAPAction: "http://www.w3.org/2003/05/soap-envelope"
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
</soap:Header>
<soap:Body>
<m:GetStockPrice xmlns:m="http://www.example.org/stock/Surya">
<m:StockName>Balloons</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
LES SERVICES WEB DE TYPE SOAP
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 299

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
</soap:Header>
<soap:Body>
<m:GetStockPriceResponse xmlns:m="http://www.example.org/stock/Surya">
<m:Price>4936.50</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
LES SERVICES WEB DE TYPE SOAP
üWSDL : Web Service Description Language
LES SERVICES WEB DE TYPE SOAP
LES SERVICES WEB DE TYPE SOAP
<?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://www.w3.org/ns/wsdl"
xmlns:tns="http://www.tmsws.com/wsdl20sample"
xmlns:whttp="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="http://www.tmsws.com/wsdl20sample">
<documentation>This is a sample WSDL 2.0 document.</documentation>
<!-- Abstract type -->
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.tmsws.com/wsdl20sample"
targetNamespace="http://www.example.com/wsdl20sample">
<xs:element name="request"> ... </xs:element>
<xs:element name="response"> ... </xs:element>
</xs:schema>
</types>
<!-- Abstract interfaces -->
<interface name="Interface1">
<fault name="Error1" element="tns:response"/>
<operation name="Get" pattern="http://www.w3.org/ns/wsdl/in-out">
<input messageLabel="In" element="tns:request"/>
<output messageLabel="Out" element="tns:response"/>
</operation>
</interface>
<!-- Concrete Binding Over HTTP -->
<binding name="HttpBinding" interface="tns:Interface1" type="http://www.w3.org/ns/wsdl/http">
<operation ref="tns:Get" whttp:method="GET"/>
</binding>
<!-- Concrete Binding with SOAP-->
<binding name="SoapBinding" interface="tns:Interface1" type="http://www.w3.org/ns/wsdl/soap"
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"
wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-response">
<operation ref="tns:Get" />
</binding>
<!-- Web Service offering endpoints for both bindings-->
<service name="Service1" interface="tns:Interface1">
<endpoint name="HttpEndpoint" binding="tns:HttpBinding" address="http://www.example.com/rest/"/>
<endpoint name="SoapEndpoint" binding="tns:SoapBinding" address="http://www.example.com/soap/"/>
</service>
</description>
LES SERVICES WEB DE TYPE SOAP
üUDDI (Universal Description Discovery and Integration)
üUne infrastructure d’annuaires pour les services web
üUn annuaire UDDI est consultable de différentes manières :
üLes pages blanches comprennent la liste des entreprises ainsi que des
informations associées à ces dernières. Nous y retrouvons donc des informations
comme le nom de l'entreprise, ses coordonnées, la description de l'entreprise
mais également l'ensemble de ses identifiants.
üLes pages jaunes recensent les services Web de chacune des entreprises sous le
standard WSDL.
üLes pages vertes fournissent des informations techniques précises sur les services
fournis. Ces informations concernent les descriptions de services et d'information
de liaison ou encore les processus métiers associés.
üGrâce à cette triple lecture, l'ensemble des informations utiles sont
accessibles.
LES SERVICES WEB DE TYPE SOAP
LES SERVICES WEB DE TYPE SOAP
LES SERVICES WEB DE TYPE SOAP
LES SERVICES WEB DE TYPE REST
üREST (REpresentational State Transfer) est un style architectural imposant :
üUne architecture client-serveur avec découplage total
üUne communication sans états : Pas de contextes / sessions
üPrise en charge de la mise en cache
üUne interface uniforme :
ü Identification unique de chaque ressource
ü L’accès aux ressources se fait à travers des opérations standards
ü Echanges de messages auto-descriptifs
ü L’Hypermédia comme moteur d'état de l'application
üUn système hiérarchisé par couche transparent
üCode à la demande (facultatif) : exécution par le client de scripts fournis par le
serveur.
LES SERVICES WEB DE TYPE REST

üLes services web de type REST ou agents ressources garantissent :

üL’utilisation exclusive du protocole HTTP

üL’identification de chaque ressources par un unique URI

üL’utilisation des méthodes HTTP pour les opérations de CRUD


üGET, POST, PUT, DELETE

üLe respect du style architectural REST


LES SERVICES WEB DE TYPE REST
üLes avantages d’utilisation des agents ressources sont :
üLa simplicité des interfaces de communications : découplage & uniformité
üDécharger le serveur et améliorer sa montée en charge : sans états (stateless)
üFavoriser la répartition des charges entre plusieurs serveurs : stateless & hierarchy
üAméliorer les performances avec des serveurs caches : cahceable & hierarchy

üLes inconvénients d’utilisation des agents ressources sont :


üLa complexification du développement côté client qui doit gérer les états
üL’absence par défaut d’un mécanisme pour sécuriser les communications
üManque d’outils
LES SERVICES WEB DE TYPE REST
üAccéder aux ressources à travers des agent ressources
Ressource : URI POST (Create) GET (Read) PUT (Update) DELETE (Destroy)
URI Collection Ajouter un nouvel Lister toutes les Remplacer toute Supprimer toute la
/ressources élément ressources la collection par collection
une autre.
URI Élément N/A Afficher la ressource Modifier la Supprimer la
/ressources/id ressource ressource

üRajouter des ressources auxiliaires pour invoquer les méthodes métiers : par
exemple pour changer le mot de passe utilisateur, nous pouvons utiliser la
requête HTTP « PUT » sur un URI ayant le format suivant :
« /users/id/password »
LES SERVICES WEB DE TYPE REST

Format :
JSON,
XML, …
État :
URI Données
Payload

Ressource
LES SERVICES WEB DE TYPE REST
LES SERVICES WEB DE TYPE REST
LES SERVICES WEB DE TYPE REST
üLes langages de description des agents de ressources :
üWSDL 2.0
üWADL : Web Application Description Language
üRSDL : RESTful Service Description Language (*)
üOpenAPI Specification (depuis 01/01/2016, anciennement Swagger)
üRAML : RESTful API Modeling Language
üGoogle Cloud Endpoints
üOdata : Open Data Protocol (OASIS / Microsoft)
üCloudRail
üLes services d’annuaires pour les agents de ressources
üUDDI
üDNS + méthode HTTP « HEAD » pour récupérer la description
LES SERVICES WEB DE TYPE REST

Services Web de type REST Services Web de type SOAP


üExpose des ressources représentant üExpose des opérations représentant
des données la logique applicative
üUtilisent les méthodes HTTP : üUtilisent le protocole SOAP over HTTP
GET/PUT/POST/DELETE & HEAD POST, JMS, …
üSupportent plusieurs formats de üSupportent uniquement du XML
données (avec attachements)
üCommuniquent exclusivement sans üSupportent la communication avec
états. ou sans états.
LES SERVICES WEB DE TYPE REST

Services Web de type REST Services Web de type SOAP


üSimples et légers üComplexes et lourds
üMéthodes HTTP, URIs et Formats
üServices de sécurité via WS-Security
üNe requiert pas XML
üPas d’enveloppe SOAP üSupportent plusieurs protocoles de
transports.
üPar défaut sans services de sécurité
üSupportent uniquement le HTTP üNe peuvent être invoqués que par
les clients prenant en charge le
üPeuvent être invoqués par protocole SOAP
n’importe quel client web/lourds
LES SERVICES WEB DE TYPE REST
LES WEBSOCKETS
Chapitre 3 – Durée : 90 minutes
AGENDA DU CHAPITRE

üLes WebSockets ?

üUtilité des WebSockets

üWebSockets & IoT

üProtocole des WebSockets

üAPI des WebSockets


LES WEBSOCKETS ?
üCommunication full-duplex
üTransite sur TCP
üConnection persistente
üOrienté message
üMulti-sources (cross-origin)
üProtocole standardisé (IETF RFC 6455)
üPlusieurs API (The WebSocket API : W3C, Java API for WebSocket,…)
UTILITÉ DES WEBSOCKETS
üMise à jour temps-réel (sports, finance)
üJeux
üCollaboration & Education
üFlux (Feeds) & communication riche
üServices basés sur la localisation (Location-based services)
üServices basés sur des APIs temps-réel
üContrôle et suivie des activités des utilisateurs
WEBSOCKETS & IOT
WEBSOCKETS & IOT
PROTOCOLE DES WEBSOCKETS
PROTOCOLE DES WEBSOCKETS
üWebSocket Handshake Request :
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
PROTOCOLE DES WEBSOCKETS
üRéponse du serveur :
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

Sec-WebSocket-Accept = Base64 ( SHA-1( Sec-WebSocket-Key +


”258EAFA5-E914-47DA-95CA-C5AB0DC85B11” ) )
PROTOCOLE DES WEBSOCKETS
PROTOCOLE DES WEBSOCKETS
PROTOCOLE DES WEBSOCKETS

WebSocket Frame
PROTOCOLE DES WEBSOCKETS
PROTOCOLE DES WEBSOCKETS

WebSockets et Proxies
PROTOCOLE DES WEBSOCKETS
CONNECT example.com:80 HTTP/1.1
Host: example.com

Handshake
ws://

CONNECT example.com:443 HTTP/1.1


Host: example.com

TLS Handshake
Handshake
wss://
WebSockets et Proxies
API DES WEBSOCKETS
API DES WEBSOCKETS
API DES WEBSOCKETS
üWebSocket API - butineurs compatibles

Google Chrome 16 Safari 6

Opera 12.10 Internet Explorer 10

Firefox 11
API DES WEBSOCKETS
üTypes des données échangées :
üString
üArrayBuffer
üBlob
üConstructeur de WebSocket en JavaScript :
WebSocket WebSocket(
in DOMString url,
in optional DOMString protocols
);
API DES WEBSOCKETS
üAPI côté Serveur :
ü Node.js
WebSocket-Node
Socket.IO
Engine.IO
ü C#/.NET (IIS 8 ASP.NET 4.5)
XSockets.NET
Fleck
ü Java
Java API for WebSocket
Atmosphere
ü Ruby
EM-WebSocket

You might also like