Jorgen responds
to my comments on a
presentation
he gave last week.
Re my comment that architectural styles are pattern languages, not patterns,
I can only point to Roy’s dissertation on this, where he suggests the association
between an Alexendar “pattern language” and an “architectural style”, by suggesting
indirectly that both are a system of patterns that constrain the form of the resultant
system. “Stateless”, “Uniform interface”, “Layered Client Server”, etc.. are
constraints, and when coordinated together, form the REST architectural style.
Re the stateful/stateless point (both parts), I don’t see how whether the targetted
endpoint does additional dispatch or not, matters to this issue, unless of course that
dispatch operation uses some state (which is not required of an OO style, AFAICT).
You suggest that all object oriented styles are stateful, yet REST is stateless, and
it’s object oriented in that messages are targetted at identifiable objects.
Re SQL, and to add to my last blog, it’s true that a SQL row may be a
resource, but it’s not the case that all resources (as defined in 2396)
can be manipulated via SQL.
Re POST, perhaps we miscommunicated, but by “partial update” I thought you
meant that the meaning of POST permitted the updating of partial state
changes to be communicated to the client, which it doesn’t. It is
true that the effect of a POST may be a “partial update” of the state of the
resource, but the issue is that a client will not know that. All a successful
response to a POST can mean to a client is “thanks, I accept this data”.
So I’d say that your comparison to SQL UPDATE is inaccurate, because after a
successful UPDATE, the client knows the state of some part of some table.
UPDATE is more like PUT for this reason, whose successful invocation informs
that client that the state of the resource is what they asked for it to be.
Jorgen writes;
And there I was thinking this statement would be an olive branch for you, Mark ;-)
Heh, yah, I appreciated the attempt, but I felt it was pretty early to propose
a synergy existed before you really understood REST. Oh, and please don’t take
that the wrong way 8-); understanding REST isn’t a matter of smarts, it’s
just a matter of recognizing what it is (or more specifically, what an application
protocol is, at least in my experience as an ex-CORBA lover). I’m confident that
you’ll understand soon enough because of your broad experience, and your eagerness
to learn.
I still don’t see any real conflict – you can still have requests returning XML data, the only question would be whether the request data must be in XML format or whether it can be encoded into a URL/URI.
Depends what you mean by “request data”. A typical Web services centric solution,
because its normally early bound, requires that the request data include a
method name. REST, because it’s late bound, requires only that you provide
an identifier. From a cost-of-coordination perspective, the latter is
vastly superior.
You can use Web Services standards and do pure REST.
Equally you can use Web Services standards and _not_ do REST.
Of course. As I said before, I consider this a bug, not a feature.
Roy defined the
null architectural style
which could be said to be another style in which you can do REST
or not. The way it does this is by being entirely devoid of constraints,
which has the “disadvantage” (cough 8-) of also being entirely devoid of any
desirable properties.
I’m not suggesting that you believe that the null style is a useful thing,
but I’ve heard from a lot of Web services folks who feel that architectural
constraints are a bad thing. From a software architecture point of
view, this is madness. Have they never heard of entropy? 8-/
Fundamentally, cacheability IS a big factor as the client implicitly caches a local copy of the resource data at least for a time.
Sure, it is important, but as a side effect of the client maintaining the state
(i.e. the interaction being stateless). If the style were said to “revolve around”
anything, this (statelessness) could be one of the big things, sure.
I am not sure Roy Fielding’s dissertation would agree with your assertions here, Mark – see bottom of page 14:
Roy’s comment about combining styles doesn’t suggest how styles are combined.
As I see it, if you’re using an architectural style with constraints A, B, and C which yield
desirable properties X and Y, and then you want to add property Z which is known to be obtained
via constraints D and E, then in order to get Z without giving up X and Y, your new style
needs to have constraints A, B, C, D, and E.
FWIW, this model of constraints and properties has been around for some time, since
at least Perry and Wolf’s
“Foundations for the study of software architecture” (using that terminology, anyhow). Some of the folks you quote, like Shaw,
Garlan, Kazman, etc.. have accepted this model. I don’t see how what I’m saying is
controversial in this regard.
I’m glad to hear you’re giving the presentation again, and I look forward to
following up on this with you.