Tim Berners-Lee wrote:
> This for me is part of a more general concern I have about a lack
> of layering in WS architecture. There is very little encapsualation
and
> data hiding. Messages are sent around with many levels exposed, and
> without a clear architectural indication of what should be
> processed first.
[Not by any means speaking for Microsoft, but reflecting on what I
learned from the W3C WS Architecture effort a couple of years ago.]
My sense is that most WS people would consider this a feature rather
than a bug. Arguably the whole point of XML is data visibility, not
data hiding. (I remember long, LONG discussions with Mark Baker in the
old WS Arch group about the REST notion of HTTP header visibility vs
content-level visibility that XML enables.... leading to a TAG issue,
IIRC?). Likewise the OO theorists are wrestling the tradeoffs between
encapsulation and cross-cutting concerns, leading to "aspect oriented
programming" ideas that do something like what SOAP does. My favorite
explanation of this is in Steve Maine's weblog (maybe the Indigo group
at MS liked this so much they decided to hire him?):
" Any system that uses a set of hierarchical concepts to describe the
world must eventually tackle the problem of orthogonal content - it's
what lead the OO people to start thinking of aspect-oriented programming
and what drives the usage of SOAP in the WS-* stack.
SOAP addresses the orthogonal content problem by introducing a common
frame around the blobs of arbitrary XML we send to services. The SOAP
envelope model defines two parts of a message: stuff that's specific to
the service goes in the body, and orthogonal content goes in the
headers. This gives a common solution to the problem of orthogonal
content - which is something that the ad-hoc non-SOAP message formats
would have had to invent anyway. By separating the messages into headers
and bodies, SOAP offers both a general way to deal with orthogonal
content and also provides a generic extensibility mechanism. Over time,
we can change the behavior of the SOAP infrastructure to account for
things like security by introducing new headers without affecting the
body of the message."
http://hyperthink.net/blog/PermaLink,guid,ce8a55da-06c7-48bf-952a-786962
5710f8.aspx
> A layered structure would also point to an addressing
> syntax in which an address was formed of an identifier at the
> top layer appended to an (opaque to that layer) address used
> at lower layers
Read farther down in the post linked above for a nice explanation of why
WS-Addressing is useful. Anyway, the point of WS-Addressing is not to
push back on the URI syntax of the address, but against the idea that
the logical address exists exclusively at the protocol layer and not
inside the message. In enterprise-scale operations, there are often
multiple protocols, multiple intermediate stores/queues, and a general
reluctance to expose the inner workings or structure to random people
out on the Web.
In short, WS-Addressing addresses (sorry!) very real challenges people
have had trying to merge Web front ends and enterprise back ends.