REST - Representational State Transfer

Les services Web

Définition

Dans un système distribué, les services Web permettent aux machines d’un réseau de communiquer les unes avec les autres, d’exposer des services et des données.

Basé sur des standards, les services web offrent la possibilité de rendre disponible les fonctionnalités de nos applications pour d'autres applications et ceci de manière interopérable.

La plupart des services Web actuelle sont basé sur des spécifications dite du WS_* dont voici des exemples : WS-Security, WS-Reliability, WS-ReliableMessaging, etc.

Les Services Web WS-* exposent leurs fonctionnalités sous la forme de services exécutables à distance.

Ces services Web sont définis selon le type d'architecture SOA (Service Oriented Architecture). Cette architecture permet l'interopérabilité des applications par le biais de services

Comment ça marche ?

Pour décrire ces services il y a le WSDL (Web Service Description Language). Cette description est généralement fournie dans un document XML et précise les méthodes pouvant être invoquées, les messages utilisés, les types de données, les protocoles. Ceci pour permettre à un utilisateur de créer une application cliente capable de converser avec ces services.

Dans la plupart des cas, le protocole utilisé est SOAP (Simple Object Access Protocol). Ce protocole repose sur une approche RPC (Remote Procedure Call) et la syntaxe de ses messages se fait en XML.

Ce protocole permet d'invoquer des méthodes d'objets distants.

SOAP est indépendant des plates-formes et des langages de programmation mais il s’utilise souvent au dessus de HTTP comme un protocole de transport. Or il faudrait rappeler que HTTP n’est pas un protocole de transport, on peut voir que la confusion est souvent faite lorsqu’il s’agit de SOAP et des services Web.

Ainsi les requêtes HTTP encapsule des messages SOAP par le biais « d’enveloppe » SOAP qui caractérise ces messages et qui sont structurés en XML.

Enfin le UDDI (Universal Discovery Description and Integration) est un annuaire basé sur du XML destiné à référencer les services Web.

Problème

On peut facilement comprendre que SOAP et RPC ne suivent pas la spécification HTTP, car ils ajoutent une nouvelle couche d'abstraction par-dessus le protocole, plutôt que de l'utiliser tel qu'il a été conçu.

Pour résumer, là où SOAP et XML-RPC se basent sur des méthodes, REST se base sur les ressources existantes.

Par la suite on pourra voir comment REST permet d’obtenir une conception plus simple, plus souple et plus évolutif que d'une conception basée sur du RPC.