ABC...Easy as 1-2-3, Indigo for you-and-me!

Yesterday I went to San Francisco and spent 8 hours attending "Indigo Day" at the VSLive! conference. The focus of the keynote and the 6 conference sessions was a high-level overview of the programming model and features of the up-coming Indigo CTP which, in the words of Eric Rudder, will ship in "March", even if it's on the 38th.

What I found most interesting is the newly revised conceptual model that makes it easy to understand, configure and develop Service Oriented messaging applications. Here's my highly distilled "Indigo Minute":

Indigo is based on a concept is called the "ABC" model which stands for Address, Binding and Contract. When you configure an endpoint (something you can talk to and/or from) in the Indigo environment you have to specify these three things. Address is, of course, how does someone find you, Binding is what "language" (HTTP, TCP, port, protocol, etc.) they use to talk to you and Contract is the content of the messages you want to exchange.

One of the coolest things about Indigo is that they have enabled the ability to specify these things via code, via attributes and via configuration. This allows some things, for example endpoint names and ports/protocols, to be "late bound" by the IT Pro doing the deployment of your Indigo-based application while allowing the developer to retain control of the content of the data exchange.

In addition, Indigo provides one additional significant programming paradigm in which you can declare your "Contract" independent of your application implementation. What this means is that you can freely substitute conformant services that implement the same contract even if the types names (classes and interfaces) are different. This provides not only for multiple-implementations from different vendors but also an upgrade strategy for revisions.

When Indigo ships, you'll be able to create a secure, high performance messaging application with built-in reliable delivery and configurability with the same relative degree of quantum leap that VB developers had in the days of Win16/Win32.