WS-Eventing,
from BEA, MS, and Tibco.
The good news is that finally, we’ve got a Web services spec that
tackles the hard problem, interfaces. Yes, WS-Eventing is an application protocol
(do we have to bind SOAP to it too?)
The bad news is that it continues the track record of abusing other application protocols
(if indeed it’s objective is to be used with them, which I can only assume is the case); the
more that goes in the SOAP envelope, the less suitable it is for use with them,
as it just duplicates what they already provide. Once again we see
WS-Addressing
as the culprit; wsa:Action and wsa:To exist to replace their counterparts in
any underlying application protocol. For example, for HTTP, the counterparts of
wsa:Action and wsa:To are the
request method and request URI,
respectively.
A point of frustration for me is that the semantics
of subscription itself are largely uniform. What I mean is,
wouldn’t it be great if all Web services supported “subscribe”?
So why not use HTTP
like I’ve done,
which is built for uniform semantics? Using a SOAP envelope with MONITOR and
for the resultant notifications would be really sweet.
One pleasant surprise is the form that notifications take, as in
this example. Notice
the use of wsa:Action; the value is no longer a method, but is instead a
type. Woot! That’s the first time I’ve seen the “action” semantic
used properly
in any Web services work. Presumably this is due to notification
semantics being entirely geared towards simply getting some data to
some other application; basically, POST. Of course,
technically, I don’t believe any “action” is required in this case,
as there’s no intent on behalf of the notification sender beyond
simple data submission; the intent is determined and assigned by the
recipient of the notification. But that’s still progress!
Another upside is the use of fine grained URIs for identifying the
endpoints, e.g. “http://www.other.example.com/OnStormWarning”, rather
than something like “http://www.other.example.com/RPCrouter”.
Overall, very disappointing from a protocol and pub/sub POV, but the
progress on resource identification, uniform semantics (even if it’s
accidental 8-), and intent declaration is quite encouraging.
Perhaps the next attempt will be done as an HTTP extension with a
SOAP binding to MONITOR (the existing binding to POST would suffice
for notifications).