Tag Archives: web services

Pourquoi je ne veux plus entendre parler de SOAP

S stands for simple, dans ce dialogue imaginaire Pete Lacey a brillament regroupé tous les arguments qui expliquent pourquoi d’ici 2-3 ans toute la stack SOAP/WS-* va subir le même sort que les EJB 1/2. On va tout jeter à la poubelle et standardizer à la place ce qui marche déjà à savoir des documents XML (ou autre) directement sur HTTP, bref REST.
Juste un extrait du dialogue qui résume bien le caractère schizophrène de SOAP/WS-*

[…]

Dev: Well, I could mostly make things work, but only if I stick with one SOAP stack. Also, I can’t say I like the idea of remote procedure calls and serializing objects.

SoapGuy: Remote procedure calls! Serialized objects! Where did you get the impression that SOAP was about RPCs? SOAP is all about document-based message passing, my friend.

[…]

Dev: Reflect on my code? I thought it was all about documents, not serialized objects.

SoapGuy: Didn’t you hear me? It’s all about the tools. Anyway, we can’t expect you to write XML Schema and WSDL by hand. Besides, its just plumbing. You don’t need to see it.

Dev: Whoa, back up. What was that word? Wizzdle?

SoapGuy: Oh, haven’t I mentioned WSDL?

[…]

(via Loud Thinking)

Mince, avec un peu d’avance  (décalage horaire oblige) Tim Bray a écrit un billet très similaire. Bref, il faut vraiment le lire ce dialogue!

WS-I : Web services (non)Interoperability

Vous avez sans doute déjà entendu parle de WS-I. Voici un extrait de leur page about:

WS-I is an open industry organization chartered to promote Web services interoperability across platforms, operating systems and programming languages. The organization’s diverse community of Web services leaders helps customers to develop interoperable Web services by providing guidance, recommended practices and supporting resources. All companies interested in promoting Web services interoperability are encouraged to join the effort.

WS-I regroupe tous les mammouths de la profession, de Microsoft à IBM en passant par Oracle, SAP, Intel,… La préoccupation principale de WS-I est l’intéropérabilité, on ne peut que saluer une telle initiative. Elle part d’un constant simple: bien que les web services soient basés sur des spécifications ouvertes du W3C SOAP, WSDL, XML,… Il n’est pas rare que deux implémentations de ces spécifications n’arrivent pas à intéropérer à 100%. D’où WS-I basic profile une spécification dont le but est décrit dans l’abstract de la spec:

This document defines the WS-I Basic Profile 1.0, consisting of a set of non-proprietary Web services specifications, along with clarifications and amendments to those specifications which promote interoperability.

Le point central est donc bien l’intéropérabilité, dont même notre ministre de la culture connait l’importance depuis les débats du projet de loi DADVSI.

Poursuivons la lecture de la spécification WS-I basic profile… Section 1.1 Guiding Principles:

No guarantee of interoperability

It is impossible to completely guarantee the interoperability of a particular service. However, the Profile does address the most common problems that implementation experience has revealed to date.

Un doute immense m’envahit, pourtant non, le sénat français n’est pas membre de WS-I! Tout ça pour ça, s’était trop beau, en fait ce n’est que du flan. Le but de l’initiative est de garantir l’intéropérobérabilité des web services et la spec démarre par: pas de garantie de l’intéropérabilité??? “Il est impossible de complètement garantir l’intéropérabilité” C’est impossible où les membres de WS-I ne veulent pas?

babel.jpgA quand remonte la dernière fois où vous n’avez pas réussir à faire communiquer entre elles 2 cartes réseaux de marque différentes? Pour peu que les constructeurs ne fassent pas n’importe quoi, l’ethernet n’est-il pas un standard qui garanti l’intéropérabilité de la couche physique?

A quand remonte la dernière fois où vous n’avez pas réussi à pinger un mac depuis un PC? Pour peu que les éditeurs y mettent un peu du leur, TCP/IP n’est-il pas un standard qui garanti l’intéropérabilité de la couche transport?

A quand remonte la dernière fois où vous n’avez pas réussi à lire avec différents parseurs un même document xml correctement formé? XML n’est-il pas un standard qui garantie l’intéropérabilité des documents?

Lisez cet article de Tim Berners-Lee: The Stack of Specifications, vous y retrouverez toutes ces spécifications ainsi que les liens vers les documents de référence, aucun ne contient les mots “No guarantee of interoperability”, bien au contraire.
Pourquoi les implémentations des web services n’adopteraient pas ce principe simple à la base de l’intéropérabilité:

In general, an implementation must be conservative in its sending behavior, and liberal in its receiving behavior. That is, it must be careful to send well-formed datagrams, but must accept any datagram that it can interpret (e.g., not object to technical errors where the meaning is still clear).

Lentement mais surement l’intéropérabilité s’est imposé à notre industrie en partant des couches les plus bases. A chaque couche des protocoles basés sur des principes simples, robustes et transparents ce sont imposés. Il nous reste à conquérir la couche applicative. Quand je vois ce qui est écrit dans une spec comme WS-I basic profile j’ai du mal à croire que ce soit un jour les web services qui garantissent l’intéropérabilité au niveau de la couche applicative.

WS-machiavellian ?

I remember talking with Andrew Layman, one of the SOAP architects at Microsoft. He let slip that it was actually a Microsoft objective to make the standard sufficiently complex that only the tools would read and write this stuff, and not humans. So that was a strategy tax that was imposed by the big companies on some of this technology, where they made it more complicated than it needed to be so they could sell tools.

Tim O’Reilly (source: WS-* vs. the REST )