SOAP (auparavant appelé Simple Object Access Protocol) est un
protocole simplifié permettant l'échange d'informations dans un environnement
décentralisé et réparti. Un message SOAP correspond à une transmission d'informations entre un expéditeur et un récepteur. Il est possible de combiner plusieurs messages SOAP pour effectuer des patterns de requête/réponse.
Bien que n'étant pas associé à un mode de transport particulier, SOAP est le plus souvent transmis via HTTP, de manière à assurer une compatibilité avec les infrastructures Internet existantes. SOAP permet de lier et d'utiliser les services Web reconnus en définissant un chemin de messages pour le routage des messages. SOAP est utilisé pour émettre des requêtes UDDI pour les services Web.
La norme JAX-WS (API Java™ des services Web XML) permet la prise en charge de SOAP 1.1 et de SOAP 1.2. Si WebSphere Application
Server version 7.0 ou ultérieure ou WebSphere Application
Server Liberty Profile est installé, le plan de travail prend en charge SOAP 1.1 et SOAP 1.2.
SOAP 1.1
SOAP 1.1 est un transport indépendant des protocoles et peut être utilisé en association avec un ensemble de protocoles.
Dans
les services Web qui sont développés et implémentés avec WebSphere
Application Server, SOAP est utilisé conjointement au protocole HTTP, à la structure d'extension HTTP et au service JMS (Java
Message Service). SOAP est également indépendant du système d'exploitation et
n'est lié à aucune technologie de composant ou de langage de programmation. La technologie utilisée pour l'implémentation du client n'a pas d'importance,
tant que le client peut émettre des messages XML. De la même façon, le service peut
être implémenté dans n'importe quel langage, tant qu'il peut traiter des messages
SOAP. Les serveurs et les clients peuvent se trouver sur toute
plateforme adaptée.
SOAP est un protocole basé sur XML, qui définit trois parties pour chaque message :
- L'enveloppe. L'enveloppe définit une structure décrivant le contenu du message et la
manière de le traiter. Un message SOAP est une enveloppe, sans en-tête ou avec des en-têtes, qui contient un corps exactement. L'enveloppe est l'élément de niveau supérieur du document XML, qui fournit un conteneur pour les informations de contrôle, l'adresse d'un message et le message lui-même. Les en-têtes transportent les informations de contrôle telles que les attributs de qualité de service. Le corps contient l'identification du message et ses paramètres. Les en-têtes et le corps sont des éléments enfant de l'enveloppe.
- Les règles de codage. Le jeu de règles de codage exprime des instances de types de données définis par l'application. Les règles de codage définissent un mécanisme de sérialisation pouvant être utilisé pour échanger différentes instances de types de données définis par l'application. SOAP définit un schéma de type de données indépendant du langage de programmation, basé sur XSD, ainsi que des règles de codage pour tous les types de données définis d'après ce modèle. Le codage SOAP n'est pas conforme à la spécification WS-I et par conséquent, son utilisation littérale (qui n'est pas le codage) est suggérée pour les services Web interopérables et elle est requise pour la conformité WS-I.
- Les styles de communication. Les communications peuvent reposer sur un format d'appel de procédure éloignée (RPC) ou sur un format orienté messages (Document).
SOAP prend en charge deux styles différents de communication :
- Appel de procédure éloignée (RPC) : RPC est l'appel d'une opération renvoyant un résultat. En général, il est utilisé avec le codage SOAP, qui n'est pas compatible avec WS-I.
- Style document : le style document est également appelé style orienté documents ou orienté messages. Il fournit une couche d'abstraction plus profonde et nécessite un travail de programmation plus important.
Dans les environnements informatiques répartis, les styles de codage définissent la manière dont les valeurs des données définies dans l'application peuvent être traduites depuis et vers un format de protocole spécifique. Le processus de traduction est appelé sérialisation et désérialisation. La spécification SOAP 1.1 définit le style de codage SOAP :
- Codage SOAP : le style de codage SOAP permet de sérialiser/désérialiser les valeurs des types de données à partir du modèle de données SOAP. Ce style de codage est défini dans la norme SOAP 1.1 et n'est pas compatible avec la spécification WS-I.
La spécification WSDL définit le style de codage XML littéral :
- XML littéral : l'adjectif littéral fait ici référence au fait que le document doit être lu tel quel, non codé. Le document est sérialisé en XMI, ce qui signifie que le message XML est conforme au schéma de la spécification WSDL. Lors de l'utilisation du codage littéral, chacune des parties du message fait référence à une définition de schéma concrète. Le codage littéral est conforme à la spécification WS-I.
SOAP 1.2
La spécification SOAP 1.2 est également une recommandation W3C
(World Wide Web Consortium) et les outils inclus dans ce plan de travail respectent les normes présentées dans SOAP 1.2.
La spécification SOAP 1.2 est fournie en trois parties, plus quelques assertions et un ensemble de tests :
SOAP 1.2 fournit une définition plus spécifique du modèle de processus SOAP, qui supprime la plupart des ambiguïtés qui conduisent parfois à des problèmes d'interopérabilité en l'absence de profils WS-I (Web Services-Interoperability). SOAP 1.2 doit réduire les risques de problèmes d'interopérabilité avec les implémentations de SOAP 1.2 d'un fournisseur à l'autre.
Parmi les principales modifications de la spécification SOAP 1.2, citons :
- Possibilité de définir officiellement des protocoles de transport autres que le protocole HTTP, aussi longtemps que les fournisseurs respectent la structure de liaison qui est définie dans SOAP 1.2. Alors que HTTP est omniprésent, il n'est pas aussi fiable que TCP/IP, MQ, etc.
- En effet, SOAP 1.2 est basé sur l'ensemble d'informations XML (XML Infoset). Cet ensemble d'informations permet de décrire le document XML à l'aide du schéma XSD mais ne sérialise pas nécessairement le document à l'aide de la sérialisation XML 1.0. SOAP 1.1 est basé sur la sérialisation XML 1.0.
L'ensemble d'informations facilite l'utilisation d'autres formats de sérialisation, tels que le format de protocole binaire. Vous pouvez utiliser un format de protocole binaire pour réduire le message en un format plus compact dans lequel certaines informations de balisage prolixe ne sont peut-être pas requises.