I’ve already documented my experiences from day one and day two of the Indigo Ascend training that I went to in Sydney last week. This will be my final post where I talk about the training specifically, future posts about Indigo will zoom in on particular aspects of the technology.

On the third day we looked at some of the extensibility points of Indigo and learned about some of the internal mechanims that glue all those extensibility points together. I was hoping to include some code samples in this post that I had written but I’m still struggling grasping all things that I need to implement to get my own custom binding and transport up and running – but if I did that then this post may not arrive until the end of the week!

Fortunately the folks on the Indigo team has done the job for me and created a sample transport and associated binding for UDP. If you have the WinFX SDK installed you can grab it from the following directory:

UdpSamplePath

As you can see the implementation is quite hairy, but I think I have a pretty good conceptual understanding of how it all hangs together.

First up there is a listener listening for incoming connections (I’ve just talking about the service-side here) – and, while the service is running there is a continuous loop running where the listener is asked for a channel.

A channel represents a logical connection and processing pipeline for a message coming into the system, it handles doing things like decoding the message from its underlying transport format and giving it a logical message-orientated representation.

Messages are finally handled by service code when the dispatcher receives the message off the end of the channels and converts it to a call to a method marked with an operation contract. I like to think of it as a pump sucking goop up a straw

Anyway – I hope to actually grok most of this stuff this week and keep posting about it - distributed comms is so intresting.