WS-ReliableMessaging is updated

The WS-ReliableMessaging specification has been updated and published on MSDN.  A few points:

  • Here's my summary of the changes between this version and the previous version:
    • Supports Negative Acknowledgements
    • AckRequest takes a MessageNumber as a child element
    • Explicit support for CreateSequence and TerminateSequence requests
    • Policy support for Create and Terminate Sequence
    • Fault defined for CreateSequence

There are other minor differences of course (like namespaces and better explanations in certain parts), but I think I got the major differences.

  • This is the next step in the Workshops process.  The first WS-ReliableMessaging spec was released.  There was this feedback Workshop to introduce the spec and to get initial feedback.  Then there was this interoperability Workshop where implementations were tested against one another.  Now we have an updated spec.
  • We also published a paper entitled Reliable Messaging in a Service Oriented Architecture that attempts to explain not only the updates to the spec but gives a quick overview of the general Reliable Messaging issue in regards to Web services.  It is a quick and nice read and does specifically address at least one issue that was considered a problem in the initial specification.  Message Persistence was brought up in an article by Dave Chappell as being an issue that was not addressed in the specification.  The paper specifically addresses the message persistence issue:

Message persistence (durability) considerations do not affect the wire protocol and are not addressed by it. As mentioned above (in the discussion about acknowledgements), WS-RM ensures transfer, not processing. Persistence requirements have to do with the storing of the message on the destination until it is processed, and are thus the responsibility of the implementation.

Since persistence is a common aspect of reliable systems, an implementation of WS-RM would typically provide it (at least as an option). If provided, a typical implementation would only acknowledge transfer after the transferred message was persistently buffered.

It is interesting to note that because persistence is not related to the wire protocol, applications can be programmed with the same simplified communication error-handling model regardless of the persistence capabilities of the system.

Basically, this is saying that WS-ReliableMessaging is a wire protocol spec and it isn't going to talk about implementation details like message persistence.