Un Service Web est un programme informatique 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, et en temps réel.
Il existe plusieurs technologies derrière le terme Services Web:
Le World Wide Web est une application conçue selon l'architecture REST. L'architecture du Web remplace donc les concepts applicatifs clients et serveurs par les concepts agents et ressources. Des agents interagissent avec des ressources pour créer, accéder, modifier ou supprimer une ressource. Jusqu'à présent, on parlait surtout de l'interaction entre agents utilisateurs, principalement les navigateurs avec les ressources.
Aujourd'hui, on parle de plus en plus de l'interaction entre agents ressources; c'est à dire la relation entre les ressources: une ressource devient l'agent d'une autre ressource, mais reste elle-même une ressource accéssible par d'autres agents. C'est exactement l'architecture décrite par l'exemple d'implémentation applicative des Mashups.
Les Services Web traitent donc d'agents ressources là où le mode opératoire classique du Web parle d'agents utilisateurs. mais les deux concepts reposent sur la même architecture: REST
Il n'y a donc pas de différences fondamentales entre l'interaction d'un navigateur avec une ressource et celle d'un Service Web avec une ressource. La principale différence se situe au niveau du format de la représentation des données: HTML pour les navigateurs ou agents utilisateurs, XML ou JSON pour les Services Web ou agents ressources...
On peut donc définir un Service Web comme l'implémentation logicielle d'une ressource, identifiée par une URL, et accessible en utilisant les protocoles internet. Les agents s'occupent du contenu, de la représentation de leur état, pas du type de contenu. Il faut donc voir les Services Web comme le moyen de manipuler l'information, et non comme un simple fournisseur de services.
Les Services Web WS-* désignent l'implémentation logicielle des spécifications WS-* et reposent tous sur un ensemble de protocoles et de standards de base utilisés pour l'échange de données entre applications dans des environnements hétérogènes:
Ces Services Web WS-* sont par ailleurs définis selon le type d'architecture SOA
Les logiciels écrits dans divers langages de programmation et sur diverses plateformes peuvent employer des Services Web WS-* pour échanger des données à travers des réseaux informatiques comme Internet. L'OASIS et le World Wide Web Consortium (W3C) sont les comités de coordination responsables de l'architecture et de la standardisation des services Web. Pour améliorer l'interopérabilité entre les réalisations de service Web, l'organisation WS-I a développé une série de profils pour faire évoluer les futures normes impliquées.
Les services Web implémentent de la logique métier rendue consommable (on consomme un service web ⇒ utiliser) par l'utilisation de standards (majoritairement TCP/IP, URI/URN/URL, MIME, HTTP/SMTP/..., SOAP, SSL/TLS, ... pour le transport, puis XML pour le contenu), ce qui permet à n'importe quelle technologie utilisant ces standards de pouvoir l'exploiter, facilitant ainsi l'interopérabilité des applications.
La création de services Web se justifie par l'architecture orientée service, c’est-à-dire la volonté de rendre accessible un service qui implémente une logique métier cachée à des utilisateurs.
Dans le cadre de contrats d'échange de données en Business to Business (entreprise ↔ entreprise), comme en Business to Consumer (entreprise ↔ client/utilisateur), un autre intérêt pour lequel des services Web sont employés est le fait qu'ils se fondent sur le protocole HTTP (qui utilise le port 80 par défaut). Pour comprendre ceci, gardez à l'esprit que beaucoup d'entreprises se sont protégées en employant des firewalls qui filtrent et bloquent beaucoup de trafic d'Internet pour des raisons de sécurité. Dans ce milieu, beaucoup de (presque tous les) ports sont fermés au trafic entrant et sortant et les administrateurs de ces firewalls ne sont pas désireux de les ouvrir. Le port 80, cependant, est toujours ouvert parce qu'il est employé par le protocole HTTP utilisé par les navigateurs Web. Avec cet avantage, les services web représentent une sorte de tunneling.
Des services Web peuvent être déployés en employant un logiciel de serveur d'application :