Il existe 2 types de services web comme je le sais. Le premier est des messages formatés xml personnalisés et le deuxième des messages xml standard SOAP. Quelles sont les différences entre eux? Lequel est mieux, quels sont les avantages et inconvénients de chacune de ces deux approches?
Réponses
Trop de publicités?Par "ordinaire", je suppose que vous entendez les services RESTful. Cette discussion serait longue, donc je vais essayer de vous donner quelques points clés :
-
Les services RESTful sont le type de services Web le plus utilisé. Ils sont étroitement liés à la fonctionnalité et aux principes de HTTP et peuvent être accessibles aussi simplement qu'une requête GET (les autres opérations sont POST, DELETE et PUT). Le concept central est la "ressource" qui est identifiée par une URI. Les formats courants pour REST sont XML et JSON. C'est une technologie assez directe et facile à utiliser, ce qui la rend si largement disponible.
-
Les services Web SOAP sont basés sur XML, la plupart d'entre eux adhérant au style RPC de conception d'applications (appel de méthodes distantes sur un serveur et obtention d'une réponse), et utilisent 3 piliers principaux :
- WSDL - Langage de description de services Web - utilisé pour décrire un service en termes d'opérations disponibles, de paramètres, etc.
- SOAP - Protocole d'accès à un objet simple - utilisé pour construire des messages d'interaction entre les entités impliquées (client, serveur).
- UDDI - Description, découverte et intégration universelles - utilisé pour classer et publier les services Web disponibles dans un référentiel et permettre leur découverte par les utilisateurs potentiels.
Les services Web SOAP ont tendance à avoir un surdébit important et généralement des messages très verbeux, mais ils peuvent être bons si vous avez besoin de mettre en œuvre des fonctionnalités et des interactions plus complexes dans votre application.
Strictement parlant, seuls les services Soap sont des services web. Ils sont basés sur les Spécifications WS-* standardisées par le W3C et Oasis. Parfois, ce que l'on appelle aussi un service web est un endpoint POX (Plain old XML) ou un endpoint REST, qui vous permet simplement d'obtenir un XML brut via une requête HTTP GET.
Les services SOAP transportent leur schéma sous la forme d'un endpoint wsdl (en ajoutant généralement ?wsdl à l'endpoint du service), il existe donc de nombreux outils pour créer des objets proxy et masquer la complexité de l'appel au service web. Avec les services POX, vous devez savoir quel schéma utiliser, par exemple, à partir de la documentation.
Les services SOAP transportent la charge utile à l'intérieur de l'enveloppe SOAP (un schéma XML avec un en-tête et un corps contenant la charge utile). Avoir un en-tête indépendant de la charge utile permet de réacheminer le contenu, de signer et de crypter, d'authentifier, etc., sans connaître le contenu. Mais vous payez en termes de surcharge supplémentaire dans le message lui-même.
POX, en revanche, laisse tout cela au serveur web et repose généralement sur HTTP pour l'authentification et la compression. Le chiffrement et la signature doivent être effectués par votre système. C'est peu coûteux en termes de surcharge mais aussi en termes de découverte.
Ce qui fonctionne le mieux pour vous dépend largement de votre scénario. Si vous travaillez dans un monde .Net ou Java, il est souvent plus simple de créer un proxy et de l'utiliser pour travailler avec les services web en tant qu'objets distants. Vous bénéficiez ainsi d'une infrastructure bien conçue et d'une expérience de programmation confortable. Si votre environnement ne prend pas en charge la génération de proxy ou s'il doit être appelé depuis n'importe quel endroit, POX pourrait être la solution beaucoup plus légère à privilégier.
"Le service web" fait référence à un concept plus abstrait et général. Nous pouvons dire que tout ce qui peut être servi sur le web est un service web. Les services web SOAP ou les services RESTful sont des types spéciaux de services web qui ont une large acceptation et leurs propres normes. Alors que les services SOAP sont construits sur une nouvelle norme basée sur XML, l'approche RESTful utilise les méthodes HTTP existantes, donc plus largement acceptée (à mon expérience).