Illuminating Indigo

Indigo, or more correctly the Windows Communication Foundation, isn’t the easiest technology to grasp in a 30 second elevator conversation. But then neither is .NET, or Biztalk, or any technology that is reasonably complicated and doesn’t have an obvious front-end. Or in other words, technology where there’s nothing to "see".

To get a sense of people’s understanding of the technology I’ve been asking a few people what they think WCF (which I’ll call it for now, until someone comes up with something punchy) is all about. The answers were of this ilk:

- "Sort of advanced web services"

- "The next generation of WSE for .NET"

- "Really deep integration of communication technologies into the operating system"

To shed a little light I’m going to spend just a few paragraphs giving you my take on the 30,000 foot view of WCF, and hopefully provide you with something you can use. I’m going to have to assume you’re pretty cool with web services generally otherwise this will take too long. And I’m also going to assume that you know WCF is baked into Windows Vista, and is available as a download for XP and WS2003.

So let’s start with some basics:

WCF is .NET technology that does 3 broad things:

1. Makes sense on the soup that is the current state of communications technologies on the Microsoft platform. So it brings together a whole lot of technology into something coherent and reasonably easy to use.

2. Supports all the latest standards so that you’re able to build applications that use the latest and most appropriate technology.

3. Has deep-rooted service orientation support. Or in other words, WCF is about web services to and through the core.

Let me expand on those points.

Firstly, note that WCF is .NET technology. In other words, if you’re developing now in C# or VB.NET or one of the other .NET languages then you’re already well set up for using WCF. And of course this is all managed code.

Second, when I’m talking about the communications soup I’m referring to all of these things: ASP.NET web services, .NET Remoting, .NET Enterprise Services, Web Services Enhancements, and Microsoft Message Queuing (MSMQ). Each of these technologies is powerful, and reasonably complicated, in its own right. But you may find yourself having to use a combination of them if you’re building even a moderately complicated system, and you’ll probably find that getting to grips with all of them is anything but trivial. WCF replaces all of these technologies with a single approach, built on .NET. Which means that WCF can handle even very complex systems that require sophisticated communication technology.

As for supporting the latest standards, well if you’ve stuck your head into the web services story recently you’ll have come across the WS-* term: WS-Security, WS-Trust, WS-Secure Conversation, etc etc. It’s not trivial stuff and it takes some getting into. So why has it got so much attention? Because it moves us from the simple web services that initially woke up the IT world (SOAP, WSDL, etc) to something that can actually solve the kind of problems businesses face, such as proper security, the ability to handle transactions, and reliable end-to-end communication. The bottom line here is that WCF incorporates them all: there’s nothing else to download and install, and you can be sure that your WCF applications will take advantage of the latest specifications and agreements. Why is that important? Because it means that WCF applications are interoperable with virtually any other web-service enabled systems.

The final point is that WCF is designed from the ground up to support service oriented development. Why should you care? Because of two things:

1 – You want your WCF applications to last, and not become outdated almost as soon as they’re written (I’m avoiding the term future-proof because it’s pretty much a nonsense term).

2 – You want to be sure that your WCF applications will interoperate with other systems, whether they’re built on Microsoft technology, Java, Linux, Apple, Mainframes, or new-wave abacuses. Because WCF embraces the cream of current thinking in terms of how best to achieve service orientation, you can be assured that it will deliver a truly world-class and interoperable solution*.

This has turned out longer than I hoped - it would make a very long elevator ride - so I’m going to stop here. But hopefully it does start to give you a flavour. If you want to dig deeper, take a look at David Chappel’s excellent article on MSDN. I’ve based this blog entry on David’s article and I’d recommend taking a look at it if you want to flesh things out.

*Ok, so that sounds like marketing-speak, if you want to go a little deeper this is what WCF is about: Sharing schema not class, autonomous services, explicit boundaries and policy-based compatibility. A web search will uncover tons on information about these topics, eg here , or here, or Benjamin Mitchell's blog; but there are plenty of others if you want to explore.

This posting is provided "AS IS" with no warranties, and confers no rights.