Microsoft Code Name “Indigo” is an advanced infrastructure and programming model for creating connected applications. It's like nothing that has come before. That's a bold statement, so allow me to put it in perspective for you.
I wrote my first communication program over 20 years ago and remember it well. It was a lengthy program written in assembly language that ran on a minicomputer. It allowed files to be transferred over a phone line at 300 baud. The program was able to communicate with only a handful of other minicomputers equipped with the same software. I had to handle every detail of communication, including sending commands to the modem, creating a protocol for transferring chunks of data, and devising a strategy for handling errors. I was proud of this program: every bit of functionality had required discrete work on my part.
In the years that followed, communication programming changed a lot but didn't necessarily get much easier. Networking and the Internet and broadband gave us more capabilities, but developers now had to contend with a frightful number of protocols and formats that wouldn't stand still. Security complicated things further but was critically important. Standards meant to be simple, such as XML, became complex over time. Even as technologies such as Web applications, distributed objects, message queuing, and interoperable Web services arrived to shoulder more of the load, the sheer number of technologies that developers had to master became a problem in itself. These technologies didn't always integrate well and were sometimes at odds with one other. Communication programming simply hasn't been easy—until now.
A few moments ago, I wrote a communication program using Indigo on a PC. It is written in C# and is a mere 20 lines in length. It can stream data over networks and the Internet at high speed, potentially to millions of destinations. Although I wrote no code to deal with the intricacies of communication, the program is a marvel of sophisticated connectivity. It is transport neutral and is able to use HTTP, TCP, or named pipes to communicate. It uses advanced Web services standards that allow it to interact with other platforms. The receiving end can accept multiple transfers in parallel. It reliably transfers information and is able to resume in the face of a communication disruption. The program is also secure, positively identifying its destination and encrypting messages for confidentiality. I'm also proud of what this program can do, and I'm delighted that it took less than five minutes to write.
Clearly, this is a departure from the past. Indigo breaks free of the supposed truism that more functionality comes at the cost of more complexity for the developer.