WS-ReliableMessaging 2005: what’s new
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.
- Elements at the header level are now called “header block”
- Example Message Exchange (s2.4): sequence explicit creation (2,3) and termination (11,12) are no longer declared as optional steps
- 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.
- (s3.1) Say goodbye to the Expires element
- (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.
- (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.
- (s3.4) CreateSequence underwent heavy restyling. it has now the following children:
- AcksTo: the EP which is supposed to listen to communications like acks and faults
- 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.
- 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)
- SecurityTokenReference: nice new trick, which may associate a security context to the sequence(s, if Offer is present).
- (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:
- Expires: as above.
- 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.
- (s3.5) If you exceptuate explicit prohibition of travelling as a header block, SequenceTermination seems pretty much unchanged
- (old s4) As stated yesterday, all policy moved to another house. Some got lost in the way, like SequenceRef.
- (s4) Faults section now refers explicitly WS-Addressing, and makes full use of its features.
- (old s6.7) Being Sequence creation now explicit, Sequence Refused got extint.
- (s5) Security Considerations is pretty much unchanged, which surprises me a little: I would have expected some elaboration of the new SecurityTokenReference in CreateSequence.