Re: Usefulness of WSDL

"RL 'Bob' Morgan" <rlmorgan@washington.edu> Fri, 09 November 2007 21:33 UTC

Return-path: <discuss-bounces@apps.ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1IqbU7-000550-7F; Fri, 09 Nov 2007 16:33:51 -0500
Received: from discuss by megatron.ietf.org with local (Exim 4.43) id 1IqbU5-0004yJ-3c for discuss-confirm+ok@megatron.ietf.org; Fri, 09 Nov 2007 16:33:49 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1IqbU4-0004yA-QI for discuss@apps.ietf.org; Fri, 09 Nov 2007 16:33:48 -0500
Received: from mxout1.cac.washington.edu ([140.142.32.134]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1IqbU1-0008T5-7j for discuss@apps.ietf.org; Fri, 09 Nov 2007 16:33:48 -0500
Received: from smtp.washington.edu (smtp.washington.edu [140.142.32.141] (may be forged)) by mxout1.cac.washington.edu (8.13.7+UW06.06/8.13.7+UW07.09) with ESMTP id lA9LXid5003454 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 9 Nov 2007 13:33:44 -0800
X-Auth-Received: from D-140-142-21-197.dhcp4.washington.edu (D-140-142-21-197.dhcp4.washington.edu [140.142.21.197]) (authenticated authid=rlmorgan) by smtp.washington.edu (8.13.7+UW06.06/8.13.7+UW07.09) with ESMTP id lA9LXhBh017896 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Fri, 9 Nov 2007 13:33:43 -0800
Date: Fri, 9 Nov 2007 13:33:22 -0800 (PST)
From: "RL 'Bob' Morgan" <rlmorgan@washington.edu>
X-X-Sender: rlmorgan@perf.cac.washington.edu
To: Lisa Dusseault <ldusseault@commerce.net>
Subject: Re: Usefulness of WSDL
In-Reply-To: <B5F1E31A-AD2B-42DB-A12E-8C26843A870C@commerce.net>
Message-ID: <Pine.LNX.4.64.0711091244250.21288@perf.cac.washington.edu>
References: <B5F1E31A-AD2B-42DB-A12E-8C26843A870C@commerce.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-PMX-Version: 5.3.3.310218, Antispam-Engine: 2.5.2.313940, Antispam-Data: 2007.11.9.130500
X-Uwash-Spam: Gauge=IIIIIII, Probability=7%, Report='__CT 0, __CT_TEXT_PLAIN 0, __HAS_MSGID 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __SANE_MSGID 0'
X-Spam-Score: -1.0 (-)
X-Scan-Signature: 5a9a1bd6c2d06a21d748b7d0070ddcb8
Cc: Apps Discuss <discuss@apps.ietf.org>
X-BeenThere: discuss@apps.ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: general discussion of application-layer protocols <discuss.apps.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=unsubscribe>
List-Post: <mailto:discuss@apps.ietf.org>
List-Help: <mailto:discuss-request@apps.ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=subscribe>
Errors-To: discuss-bounces@apps.ietf.org

> I see WSDL proposed for some spec in the IETF every so often but 
> nobody's ever explained to me what it solves.

The motivations for Interface Definition Languages (IDLs), of which WSDL 
is an example, and of Remote Procedure Call (RPC) systems, of which IDLs 
are a component (and of which WS-* is an example), are straightforward. 
Among other places they are described in RFCs 1057 and 1831, which 
document Sun's ONC RPC (1831 is standards-track even).  The seminal paper, 
as mentioned in 1831, is

   Birrell, A. D.  & Nelson, B. J., "Implementing Remote Procedure
   Calls", XEROX CSL-83-7, October 1983.

for which a cursory search doesn't reveal an online instance.  (Some might 
flame at calling WS-* "RPC", so OK, substitute "RPC-like distributed 
computing system" instead.)

The idea is that protocols are hard to write, and software implementing 
protocols is hard to write.  So an RPC system creates a meta-protocol; a 
concrete protocol to do real operations is created by writing an interface 
definition in an IDL.  The IDL serves as generator for both a protocol 
spec and an API spec; the IDL is fed into a language-specific stub 
generator which produces libraries for use in that language for that 
interface (ie, that protocol).  The programmer just uses those libraries 
like she would any other libraries when implementing a system.  Voila, the 
pain of writing protocol implementations, and protocols, vanishes.

This argument has been so compelling that dozens (maybe hundreds) of RPC 
systems have been invented, and many widely deployed, over the years. 
Each promises to solve the problems that have led to the previous ones not 
meeting the hype of their promoters.  And of course the gap between hype 
and adoption has led to some of them being among the highest-profile 
computing failures (see "DCE"), at least in popular opinion.

I think the story has remained largely the same for the last 25 years or 
so.  Using an RPC system is undeniably better than the usual system 
integration alternative of making up a new protocol from scratch, which 
anyone doing system integration knows leads to appalling protocol 
interfaces on systems of all kinds.  But RPC systems never seem to escape 
this niche of home-grown interfaces for a small purpose with a few 
consumers.  Probably there are lots of reasons why this has been so.  I'd 
guess among the most important is that IDL toolkits inevitably become 
language- and vendor-centric, so the theoretical cross-platform agility 
and interop doesn't happen in real life.  So people with real scalable 
distributed systems work to do focus on real protocols and accept the 
burden of writing implementations of them more or less from scratch (often 
these days based on HTTP+REST).  (Obviously there are many perspectives 
and counterexamples, it's a big Internet.)

Given that Internet protocols specified in RFCs are presumably intended 
for those widely distributed and widely implemented cases, it seems like 
RPC/IDL technology, including WS-*/WSDL, is generally inappropriate. 
Obviously there have been exceptions, as RFCs 1831-3 and 3530 demonstrate.

  - RL "Bob"