Definition

SOAP (Simple Object Access Protocol)

Le protocole SOAP (Simple Object Access Protocol) est un protocole de messagerie. Il permet à des programmes qui s'exécutent sur des systèmes d'exploitation distincts (tels que Windows et Linux) de communiquer au moyen du protocole HTTP (HyperText Transfer Protocol) et de son langage, XML (Extensible Markup Language).

Sachant que les protocoles Web sont installés et mis à disposition sur tous les systèmes d'exploitation dominants, le protocole HTTP et le langage XML constituent une solution toute trouvée qui permet aux programmes de s'exécuter et de communiquer sur les différents systèmes coexistant au sein d'un réseau.

Le protocole SOAP spécifie exactement la manière de coder un en-tête HTTP et un fichier XML, afin que deux programmes, présent sur des ordinateurs différents, puissent s'appeler et se transmettre des informations. Le protocole SOAP spécifie également la manière dont le programme appelé renvoie une réponse.

Bien que fréquemment associé au protocole HTTP, SOAP prend en charge d'autres protocoles de transport.

Le protocole SOAP définit le format de message XML que les applications compatibles avec les services Web utilisent pour communiquer et interagir sur le Web. L'environnement hétérogène qu'est le Web exige que les applications prennent en charge un format de message et un protocole de codage des données communs. Le protocole SOAP est une norme permettant de coder en langage XML des messages appelant des fonctions dans d'autres applications.

Le protocole SOAP est analogue aux appels de procédure à distance RPC (Remote Procedure Call) utilisés dans de nombreuses technologies telles que DCOM et CORBA, à ceci près qu'il élimine les complexités d'emploi de ces interfaces. Il permet aux applications d'appeler des fonctions issues d'autres applications, exécutées sur n'importe quelle plateforme matérielle, quels que soient les systèmes d'exploitation et les langages de programmation.

Les appels SOAP ont bien plus de chances de traverser les serveurs de pare-feu. En effet, le langage HTTP est normalement compatible avec le port 80, alors que d'autres appels sont susceptibles de rester bloqués pour des raisons de sécurité. Etant donné que les pare-feu laissent passer les requêtes HTTP, les programmes qui utilisent SOAP pour dialoguer ont l'assurance de pouvoir communiquer en tout point du réseau.

Le protocole SOAP offre notamment les avantages suivants :

  • Il est indépendant des plateformes et des langages.
  • Il simplifie la communication à travers les pare-feu et les serveurs proxy, comme expliqué ci-dessus.
  • Il permet d'exploiter différents protocoles de transport, notamment HTTP et SMTP.

Le protocole SOAP présente toutefois certains inconvénients :

  • Il est généralement beaucoup plus lent que les autres types de middleware standard, tels que CORBA,  car il fait appel à un format XML prolixe. Aussi, avant de développer des applications compatibles SOAP, vous devez parfaitement en comprendre les limites.
  • Lorsque vous utilisez le protocole HTTP sur la couche transport, SOAP ne gère pas les notifications d'événement et se limite généralement au regroupement. Qui plus est, en temps normal, seul un client peut utiliser les services d'un serveur.
  • Rappelons que l'utilisation du protocole HTTP pour la couche transport a tendance à entraîner une latence au niveau des pare-feu, car ils analysent cette couche. En effet, le protocole HTTP est également exploité par les navigateurs Web et de nombreux pare-feu ne font aucune différence entre cet usage et celui de SOAP.
  • Le protocole SOAP affiche différents niveaux de prise en charge, en fonction du langage de programmation utilisé. Par exemple, sa prise en charge dans Python et PHP n'est pas aussi robuste qu'au sein de Java et de .NET.
Cette définition a été mise à jour en août 2015

Pour approfondir sur Outils de développement