Contrairement à ce que certains pensent, un « Web Service » au sens où le terme est couramment utilisé, n’a pas grand chose à voir avec un serveur Web. Il s’agit en fait d’un programme informatique dont le but est de permettre à des « machines » (applications informatiques, appareils électroniques…) d’interagir sur un réseau sans le besoin d’un humain. (même si bien sur, un humain peut aussi être utilisateur d’un Web Service)
Pour cela il est nécessaire de définir précisément la structure des messages, comment ces communications ont lieu, le protocole utilisé… et ce, afin que la machine soit capable de comprendre le contenu du message et d’y répondre de manière autonome.
Un Web Service fonctionne en publiant une API (souvent décrite via le Web Services Description Language ou WSDL) accessible par un point d’accès (comme une URL) auquel peuvent être envoyé des messages utilisant cette API. Par exemple, on peut considérer un Web Service météo qui en recevant un message de demande de température avec certains paramètres (date, ville…) répondra avec la température recherchée.
En général, les Web Services sont basé sur des échanges de messages XML utilisant SOAP au dessus du protocole HTTP. Ceux-ci sont relativement complexes mais robustes et très utilisés dans l’industrie. De nombreuses fonctionnalités ont été standardisées (les fameux WS-*) au sein de consortiums tels que le W3C ou OASIS et peuvent être mélangées pour créer des applications complexes comme si on empilait des briques : par exemple ajouter de la sécurité avec WS-Security, faire des transactions avec WS-Transaction, véhiculer des messages indépendamment de la couche transport avec WS-Addressing…
On distingue également un deuxième type de Web Services, basé sur REST, plus simple et plutôt utilisé pour des applications internet.
Il est intéressant de noter que les Web Services sont souvent à la base de ce que l’on appelle les SOA (Architectures Orientées Services).