SOA (Service Oriented Architecture)

Références

L'actualité

Librairie

L'information

Service web

Un service web (ou service de la toile) est un protocole d'interface informatique de la famille des technologies web permettant la communication et l'échange de données entre applications et systèmes hétérogènes dans des environnements distribués.

Il s'agit donc d'un ensemble de fonctionnalités exposées sur internet ou sur un intranet, par et pour des applications ou machines, sans intervention humaine, de manière synchrone ou asynchrone.

   
Le protocole de communication est défini dans le cadre de la norme SOAP dans la signature du service exposé (WSDL). Actuellement, le protocole de transport est essentiellement HTTP(S).

Le concept a été précisé et mis en oeuvre dans le cadre de Web Services Activity, au W3C, particulièrement avec le protocole SOAP. Associé avec les échanges de données informatisés (EDI), le consortium ebXML l'a utilisé pour automatiser des échanges entre entreprises. Cependant le concept s'enrichit avec l'approfondissement des notions de ressource et d'état, dans le cadre du modèle REST, et l'approfondissement de la notion de service, avec le modèle SOA.

Dans sa présentation la plus générale, un service web se concrétise par un agent, réalisé selon une technologie informatique précise par un fournisseur du service. Un demandeur, à l'aide d'un agent de requête, utilise ce service. Fournisseur et demandeur partagent une même sémantique du service web, tandis qu'agent et agent de requête partagent une même description du service pour coordonner les messages qu'ils échangent.

Il existe plusieurs technologies derrière le terme services web :

  • Les services web de type REpresentational State Transfer (REST) exposent entièrement ces fonctionnalités comme un ensemble de ressources (URI) identifiables et accessibles par la syntaxe et la sémantique du protocole HTTP. Les Services Web de type REST sont donc basés sur l'architecture du web et ses standards de base : HTTP et URI;

  • Les services web WS-* exposent ces mêmes fonctionnalités sous la forme de services exécutables à distance. Leurs spécifications reposent sur les standards SOAP et WSDL pour transformer les problématiques d'intégration héritées du monde middleware en objectif d'interopérabilité.

Les standards WS-* sont souvent décriés, comme risquant de générer une course à la performance technologique. Toutefois leur robustesse dans le milieu des services entre professionnels est reconnue, et ils restent largement utilisés. Aussi l'on préfère les faire évoluer.


SOAP (Simple Object Access Protocol)

SOAP est un protocole de RPC orienté objet bâti sur XML. Il permet la transmission de messages entre objets distants, ce qui veut dire qu'il autorise un objet à invoquer des méthodes d'objets physiquement situés sur un autre serveur. Le transfert se fait le plus souvent à l'aide du protocole HTTP, mais peut également se faire par un autre protocole, comme SMTP.

Le protocole SOAP est composé de deux parties :

   
  • Une enveloppe, contenant des informations sur le message lui-même afin de permettre son acheminement et son traitement;
  • Un modèle de données, définissant le format du message, c'est-à-dire les informations à transmettre.

SOAP a été initialement défini par Microsoft et IBM, mais est devenu une référence depuis une recommandation du W3C, utilisée notamment dans le cadre d'architectures de type SOA (Service Oriented Architecture) pour les Services Web WS-*. Le protocole SOAP emploie des métadonnées.

SOAP n'est plus un acronyme depuis la version 1.2. En effet, SOAP v1.2 a été réécrit en fonction d'infosets XML, et non plus sous forme de sérialisations <?xml ... ?> comme il l'était en v1.1. La notion d'objet (spécifiée dans Simple Object Access Protocol) devient donc obsolète.


REST (REpresentational State Transfer)

REST (Representational State Transfer) est un style d'architecture définissant un ensemble de contraintes et de propriétés basées sur le protocole HTTP. Les services web conformes au style d'architecture REST, aussi appelés services web RESTful, établissent une interopérabilité entre les ordinateurs sur Internet.

Les services web REST permettent aux systèmes effectuant des requêtes d'accéder et de manipuler des représentations textuelles de ressources web à travers un jeu d'opérations uniformes et prédéfinies sans état.
   

Les "ressources web" ont été définies pour la première fois sur le World Wide Web comme des documents ou des fichiers identifiés par leur URL. Cependant, elles ont aujourd'hui une définition beaucoup plus générique et abstraite qui inclut toute chose ou entité pouvant être identifiée, nommée, adressée ou gérée d'une façon quelconque sur le web.

Dans un service web REST, les requêtes effectuées sur l'URI d'une ressource produisent une réponse qui peut être en HTML, XML, JSON ou un autre format. La réponse confirme que la ressource stockée a été altérée et elle peut fournir des liens hypertextes vers d'autres ressources ou collection de ressources liées.

Lorsque le protocole HTTP est utilisé, comme c'est souvent le cas, les opérations disponibles sont GET, POST, PUT, DELETE et d'autres méthodes HTTP CRUD.


WebSocket

WebSocket est un standard du Web dèsignant un protocole rèseau de la couche application et une interface de programmation du World Wide Web visant à crèer des canaux de communication full-duplex par-dessus une connexion TCP.

Le protocole a ètè normalisè par l'IETF dans la RFC 6455 en 2011 et l'interface de programmation par le W3C

   
L'interactivitè croissante des applications web, consècutive à l'amèlioration des performances des navigateurs, a rapidement rendu nècessaire le dèveloppement de techniques de communications bidirectionnelles entre l'application web et les processus serveur.

Des techniques basèes sur l'appel par le client de l'objet XMLHttpRequest et utilisant des requêtes HTTP avec un long TTL stockèes par le serveur pour une rèponse ultèrieure au client ont permis de pallier ce manque et ont ètè popularisèes par le succès des architectures Ajax.