Unless you have been living under a rock, you have probably heard of the acronym WCF that has been circulating the Microsoft media domain. Of course, it stands for Windows Communication Foundation. It is one of the WinFX...err .NET 3.0...subsystems that will become available with the upcoming release of Windows Vista. Unfortunately, WCF seems to be getting a lot less press than its sibling WPF. Let's see if we can steal some of the thunder from the UI guys. ;p
For those focused on distributed applications and service oriented archicture, WCF will present a significant advancement in your ability to deliver solutions capable of interoperability and more. Since I am one of those guys that loves to bury myself in the nuts and bolts of distributed systems, this is of particular interest to me. This is the first of what I hope is many, many posts about WCF. As I continue to absorb more knowledge about the technology, I hope to share a lot of it with you here. However, before we start getting into the details of any technology, it is always a good idea to understand why it is relevant in the first place.
Over the last few years, there have been quite a few options for the technologies used to create distributed systems. For basic interoperability, a popular choice was ASP.NET web services (ASMX). If both the client and server are .NET applications, .NET Remoting could potentially be the "right" choice. For advanced options such as distributed transactions and object pooling, Enterprise Services was the logical choice. You also have the advanced web service capabilities introduced in WSE (Web Services Enhancements), particularly around security and reliability. On top of that, there is also MSMQ (Microsoft Message Queuing) for message-based solutions.
Those are a lot of different choices. Don't get me wrong. Choices aren't necessarily a bad thing. However, it can certainly cause confusion as to which one is the best one for your situation. In addition, the act of combining these technologies into an application can lead to additional complications. This is where WCF comes into play.
It will make your life extremely easier as a service oriented developer by providing a unified programming model that encapsulates all of the previously mentioned options and more. In doing so, you can focus on the development of the service logic rather than worrying with the underlying communication protocols. With WCF, it is a simple matter of a configuration change to switch from HTTP to TCP to MSMQ. Of course, there is much, much more to WCF than this. However, this is simply an introductory post to whet your appetite.
So, there you have it. In a nutshell, those are the reasons for the importance of WCF and why it should matter to you. Stay tuned for much. much more about WCF as I continue to examine the details of the technology.