MIME-RPC (was Re: REST)

Paul Prescod paul@prescod.net
Thu, 17 Jan 2002 09:48:55 -0800


"S. Alexander Jacobson" wrote:
> 
>...
> 
> If the whole point of REST is to re-use what is
> already in use, why not use MIME types!

REST uses MIME types. The question is just where the appropriate
boundary between MIME and XML is. But REST doesn't need a new
specification to use MIME types. It just uses them.

>... 
> No.  That is not my intention.  For highly
> structured documents, like a purchase order, I
> assume you define some new mime-type (that may
> itself be an XML document). 

It is my assertion that most of the interesting web services will be
organized around these new mime-types (or at least XML namespaces). So I
don't see MIME-RPC as being a big part of the REST model.

 The nice thing about
> MIME-RPC is that it defines coherent semantics for
> passing complex (and perhaps opaque) types between
> applications.
> 
> XML-RPC and SOAP both send base64encoded and
> provide no clear semantics for how to interpret
> the data sent.

SOAP with attachments uses MIME types. 

>...
> They are ugly but they realistically solve major
> problems with both SOAP and XML-RPC.

Okay, but REST doesn't really incorporate SOAP or XML-RPC, so they
aren't the appropriate comparison point.

> REST is wrong about using HTTP methods.
> 1. You may want to send messages over non HTTP
>         transports

A few issues here:

 * HTTP can be tunnelled over any transport.

 * AFAIK, there do not yet exist non-HTTP transports that work properly
with the REST model.

 * Arguably it is easier to adapt HTTP to new usage modes (through
extensions or tunnelling) than to adapt other protocols to REST.

> 2. A lot of web infrastructure alread assumes only
> GET/POST style requests and generic expansion of
> these limits interop.

This is true. That's why you must often work around with POST. But if
you're going to be REST-compatible then you should provide a mapping
between your workaround and real HTTP methods so that a MIME-RPC DELETE
is the same as an HTTP DELETE.

> 3. Many people will want to use this protocol who
> do not have sufficient control over the httpd to
> add new HTTP methods (e.g. ISP security policy
> only allows GET/POST and they are restricted in
> various ways when hitting ~user style accounts).

This is basically the same problem as above.

> > MIME-RPC's numeric types should probably be XML Schema numeric types
> > rather than inventing Yet Another Type System.
> 
> Nothing is stopping you from defining your own
> mime-types.  The ones in the spec are there for
> ease of use, readability, and compatibility with
> deployed applications.

My point is that XML Schema types are increasingly available in all
languages. MIME-RPC is going to impair interoperability if it defines
types otherwise.

>....
> A major point of MIME-RPC is that they can send
> whatever they want in whatever format they want.
> They just have to document it as a MIME
> content-type.  One of the reasons for MIME-RPC was
> the incredible difficulty XML-RPC and SOAP have in
> sending highly structured data (objects) as
> arguments.

Okay, but you agree that the Web as we know it has no such problem. With
or without MIME-RPC, it is easy to pass highly structured data (objects)
over the Web. You define a MIME type (or at least an XML namespace) and
send your data. That's all you have to do!

 Paul Prescod