Noah Slater wrote:
On 16 Aug 2010, at 21:38, Miles Fidelman wrote:

There have been some of these built on top of HTTP, but the purist in me really 
dislikes violating layering.
I'm a little out of my depth here, but is that really the case? The things 
you're talking about sound like patterns to me, not layer-specific details. 
What makes that pattern any less applicable at a higher level in the network 
stack?
well, the whole point of protocol layering is to isolate different functions in different layers - as soon as the same function is available in multiple layers, things just get very confusing and brittle

a simple example that I think will illustrate the difference (note - it's easier to read stacks from the bottom up)

a RESTful stack that doesn't violate layering:

RSS - specific encoding of data
HTTP - client-server protocol - deals primarily with addressing data items and encodings
TLS - adds security to a connection
TCP - reliable connections
IP - unreliable datagram transport across multiple networks (glues individual networks into an internet)
802.x - unreliable data over a single local network
USB (or whatever) - hardware level device connection

vs.

WS-* protocols: try to do everything, including things that are already available at lower layers (addressing, security, connections, ...)
SOAP:
HTTP:
TLS
TCP
IP
802.x
USB

essentially, a lot of what the WS-* protocols do is reinvent things that have been worked out and incorporated into lower layer protocols - the result is that:

1. the WS-* protocols tend to do a poor, and complicated, job of functions that are available in lower layers of the network stack, and simply ignore those capabilities, and/or,

2. an awful lot of SOAP-based applications generate transactions that contain huge numbers of empty XML headers

The impact, in practice: We recently wrote an application that translated OpenSearch formatted queries into SOAP formatted queries, for execution by an EBRIM Registry/Repository, and then translated the responses back into OpenSearch format (actually RSS). When you looked inside the transactions, you'd see:

a 1-line OpenSearch query turns into 1 line of SQL, surrounded by about 100 lines of empty XML headers

the response starts as 100+ lines of XML, mostly empty headers, that can be compressed into about 10 lines of XML in RSS format

Layering ends up being about managing complexity. Doing things at the right layer simplifies things, doing it at the wrong layer makes things intractable.

Miles





--
In theory, there is no difference between theory and practice.
In<fnord>  practice, there is.   .... Yogi Berra


Reply via email to