Blog Home  Sign In RSS 2.0 Atom 1.0 CDF  

  def Softwaremaker() :
         return "William Tay", "<Challenging Conventions />"

  knownType_Serialize, about = Softwaremaker()
 

 Monday, February 19, 2007
« BizTalk Server 2006 R2 and WCF Integrati... | Main | Small is beautiful »

This is a continuation of my previous post: WS-ReliableMessaging Simplified - WHY

While this blog sits in my draft folder while I am busy solving and fire-fighting other real-world problems, I just found out that my fellow distributed and connected systems enthusiast, Matevz has penned down the WHATs and HOWs of WS-ReliableMessaging faster than me, AND with even greater details !!!

So, instead of replicating that effort, it would be better for me to do a high level post about the HOWs of WS-ReliableMessaing. The below diagram of WS-ReliableMessaging explains the sequencing really well.

WS-ReliableMessaging - HOW

 

Let me explain the concepts of WS-ReliableMessaging in terms of a conversation between Alice and Bob:

Alice: Let me call Bob on his mobile telephone.(CreateSequence)
(Ring Ring ... Bob Picks up the phone)
Bob: Hello ? (CreateSequenceResponse)
Alice: Hi Bob, this is Alice(CreateSequenceResponse)
Bob: Hi Alice (CreateSequenceResponse, Identifier)
Alice: I would like to have a meeting with you tomorrow at 1000 hours (MessageNumber=1)
Bob:
Cool. Roger. I got that. Sure, let meet tomorrow at 1000 hours.
Alice: Can we meet at my office in North Ryde ? (MessageNumber=2)
(Bob walks into a GSM blind spot ...)

Alice: Oh yeah, and Bob, please bring those M&A files for clearance for our senior VP (MessageNumber=3)
Alice: Hello Bob, did you get that ? Please repeat. (AckRequested)
Bob: Yes, I got that you are saying that we should meet up at 1000 hours at your office. Period (SequenceAcknowledgement)
Alice:
No, you are not getting the full picture. You need to bring those M&A files for clearance for our senior VP (Resend MessageNumber=3). Kindly repeat what I just said (AckRequested)
Bob: Yeah. Got it. We should meet up at 1000 hours at your office and I will bring those M&A files for clearance for our senior VP. (SequenceAcknowledgement)
Alice:
Bingo. Good. Please make a reservation for 1200 hours for lunch at "Steaks by the Bay" as well. (MessageNumber=4)
(Bob's phone went dead ...)
Alice: Hello ? Bob, did you get that ? (AckRequested)
Alice:
Hello ? Bob, did you get that ? (AckRequested)
Alice: Hello ? Bob, did you get that ? (AckRequested)
Alice: Hmmm. Something is wrong. Let me call Bob again. (AcknowledgementInterval is up)
(Ring Ring ... Bob Picks up the phone)
Alice: Hi Bob, this is Alice. Sorry, I think I got cut-off from the earlier call. (CreateSequence)
Bob: Hi Alice. Sorry, yeah, my fault. I pressed the wrong button (CreateSequenceResponse with prev Identifier establised)
Alice:
I was wondering if you can make a reservation for 1200 hours for lunch at "Steaks by the Bay" after that 1000 meeting tomorrow. (MessageNumber=1) Please acknowledge. (AckRequested)
Bob: Sure, of course. I will make a reservation for 1200 hours for lunch at "Steaks by the Bay" (SequenceAcknowledgement)
Alice: Alright then. Lets end this phone call. See you tomorrow. Thanks and Bye. (TerminateSequence of this Identifier)
Bob: See you tomorrow, Alice. (TerminateSequenceResponse)

Of course, the above is a simplistic view and there is a lot more to WS-ReliableMessaging than what I have just illustrated above with buffers, inactivitytimeouts due to infrastructure faults, in-order deliveries, maxRetryCount, maxTransferWindowSize, etc. But you get the jizz of this picture of why InOrder, idempotent-aware ReliableMessaging is needed in complex real-world enterprise-scale distributed communications.

If you want to know the WHATS and all in better detail, do visit Matevz's post here and a continuation here.

Monday, February 19, 2007 2:57:18 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer  Comments [0]
  • Blog reactions