[MOBY-l] Messaging document
Lincoln Stein
lstein at cshl.org
Wed Feb 26 16:15:48 UTC 2003
Gosh, I'm not going to get my messaging technical report done in
time for the conference call. Here's what I've got so far. I'll write
more this afternoon and hopefully give you an update.
Lincoln
MOBY PROJECT: TECHNICAL REPORT ON WEB MESSAGING LAYER
Date: February 24, 2003
Author: Lincoln Stein
Version: early
This report concerns the messaging layer of the Moby project, that
point at which semantic information is exchanged between the
data consumer (i.e. the biologist) and the data provider (i.e. the
model organism system administrator).
There are a wide variety of possible messaging systems. Here are a
number of prominent ones listed in rough chronological order.
1) Custom messaging system using raw TCP/IP
2) Custom messaging system using BEEP (an IEEE applications
protocol framework)
3) ASN.1 exchange
4) Microsoft DCOM
5) REST
6) CORBA
7) XML-RPC
8) SOAP
For the purposes of this assessment, I ignored 1, 2, 3 and 4. I
rejected custom messaging because it is a fallback position. We
should only reinvent the wheel if we are absolutely certain that none
of the other will meet our requirements. Exchange of messages via
ASN.1 streams and Microsoft DCOM can rightly be treated as legacy
solutions that have found important places in niche applications but
are not accepted as solutions for enabling the exchange of semantic
information across administrative domains. SOAP arises from, and
supersedes, XML-RPC, and so are folded together. This leaves REST,
CORBA, and SOAP.
I will now consider these in chronological order.
REST
----
REST stands for REpresentation State Transfer, and is a term coined by
Roy Fielding in his graduate thesis to describe a style of information
architecture that had already become the de facto standard for the
World Wide Web. According to Fielding, REST is suited for scaleable
applications in which relatively large hypermedia representations of
information resources are exchanged within the "anarchic network."
The key concepts of REST are:
a) Resources are identified using stable addresses, the URI.
b) Resources are never exchanged themselves. Instead representations
of resources are exchanged. A particular resource, such as a database
entry, may be represented in multiple ways, e.g. as an HTML file or a
postscript file. Resources are viewed as changing with time.
c) REST has many nouns, but very few verbs. Its verbs follow the CRUD
paradigm, and consist of PUT, GET, POST and DELETE. Its nouns are an
extensible set of hypermedia representations.
d) REST is stateless, and places the burden of maintaining session
information squarely on the client.
e) REST is close to the transport layer, and allows but does not
require applications to be concerned with performance issues
such as caching, parsing, and rendering latency.
Probably the most unique aspect of REST is its use of URIs to address
each resource. For example, in a DAS application, a URI can be used
to identify a particular segment of a genome:
http://my.site/das/d-melanogaster/r3.1/2R/60000/80000
This identifies the genome of drosophila melanogaster, assembly
release version 3.1, chromosome arm 2R from the position 60,000 to
80,000 base pairs.
CORBA
-----
SOAP
----
------------------------------
Bibliography:
REST = REpresentational State Transfer
REST + SOAP
http://www.intertwingly.net/stories/2002/07/20/restSoap.html
Roy Fielding's Dissertation:
Architectural Styles and the Design of Network-based Software
Architectures
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
REST definitions:
"Resource" -- A Thingy
"Representation" -- A materialized version of a resource containing
data, metadata, and meta-metadata.
"Control data" -- The purpose of a message between software
components.
"Connector" -- infrastructural library component such as BIND, libwww.
"Component" -- application such as netscape or Apache
Principles:
1) URIs should change as infrequently as possible.
2) A resource is the semantic of what the author intends to identify,
not the value corresponding to the semantic at the time the reference
is created.
3) The things that the user manipulates is a representation of a
resource, not the resource itself!
FrontPage RESTwiki
http://internet.conveyor.com/RESTwiki/moin.cgi/FrontPage
Roots of the REST/SOAP Debate
Paul Prescod
ConstantRevolution Consulting
paul at prescod.net
http://www.prescod.net/rest/rest_vs_soap_overview/
--
Lincoln Stein
lstein at cshl.org
Cold Spring Harbor Laboratory
1 Bungtown Road
Cold Spring Harbor, NY 11724
(516) 367-8380 (voice)
(516) 367-8389 (fax)
More information about the moby-l
mailing list