Scatter list of new or (IMHO) notable features of the 2005 version of WS-ReliableMessaging. Overall I'd say that it changed very little, promising symptom of maturity of the specification.

  1. Elements at the header level are now called "header block"
  2. Example Message Exchange (s2.4): sequence explicit creation (2,3) and termination (11,12) are no longer declared as optional steps
  3. Sequence (s3) now includes a more pervasive /@any extension mechanism. Extensions must not contradict the semantic of the spec element. If a receiver doen't understand an extension, it should ignore it.
  4. (s3.1) Say goodbye to the Expires element
  5. (s3.1) There is now the chance to send a message with empty body, a Sequence with just a LastMessage child and a special Action (http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage) in the case in which you wish to close the sequence but you don't have any more application data to send.
  6. (s3.4) As suspected in the example, explicit outbound sequence creation is now mandatory. An inbound sequence can be "invited" by sending an explicit offer. More below.
  7. (s3.4) CreateSequence underwent heavy restyling. it has now the following children:
    1.  AcksTo: the EP which is supposed to listen to communications like acks and faults
    2.  Expires: it just moved, after all? No, there's more. Destination can accept the value or use a shorter one. There's a special value for "no expiration" (P0S). If you don't specify an Expires, P0S will be the default value.
    3.  Offer: the source offers the destination a "return queue", that's to say an inbound sequence. Offer must contain the Identifier of the inbound sequence, and may contain Expires (same semantic as above)
    4.  SecurityTokenReference: nice new trick, which may associate a security context to the sequence(s, if Offer is present).
  8. (s3.4) SequenceResponse carries the Identifier of the created sequence, as usual. Now it is explicitly forbidden to use that element as a header block. new children:
    1.  Expires: as above.
    2.  Accept: declares that destination is willing to dance with source and accepts its Offer. It contains AcksTo, which is the endpoint on the destination which will listen to the acks/faults from the source about the offered sequence.
  9. (s3.5) If you exceptuate explicit prohibition of travelling as a header block, SequenceTermination seems pretty much unchanged
  10. (old s4) As stated yesterday, all policy moved to another house. Some got lost in the way, like SequenceRef.
  11. (s4) Faults section now refers explicitly WS-Addressing, and makes full use of its features.
  12. (old s6.7) Being Sequence creation now explicit, Sequence Refused got extint.
  13. (s5) Security Considerations is pretty much unchanged, which surprises me a little: I would have expected some elaboration of the new SecurityTokenReference in CreateSequence.