When I first gained knowledge that Microsoft were developing "Indigo" well over two years ago, I must confess, I missed the point. I first saw demos of WCF at a conference around that time, and my initial reaction was "show me something I can't do already". And yet three months into developing with WCF and I can't stop praising the product. It is one of those rare beasts in technology that just feels so very right to use; and that is in itself a first in communication API's. I don't think anyone was truely happy with either ASMX web services, remoting or WSE.
But saying WCF is great because it feels right is underselling its importance. The real key to why WCF is so important is because the core programming model is neutral to the non functional requirements you have for communcation. This means that you can focus on designing your data and service contracts without having to make prior decisions on which transport, messaging or security protocols and policies you need to adopt.
A key part of successful software development is defined in the Lean Software Development book, which is to "decide at the last responsible moment". This concept states that making a decision too early is risky because you know too few facts to draw sensible conclusions, whereas making a decision too late could mean that you could delay whole parts of the project by doing so.
Using WCF supports making decisions at the last responsible moment, and this is a revolution for communications APIs. For example, selecting how you want to implement communication security becomes a matter of configuration; do you want to secure the communication by using a secure transport (such as HTTPS), or do you want to send the message over TCPIP and encrypt the message and use kerberos authentication? Now, this is just a matter of configuration.
Being able to just configure your service to your communication needs also enables another important scenario. It enables the development of Domain Specific Language tools (DSL) for your communication requirements. A DSL tool for WCF will enable you to use a rich tool to design and configure your service. This is the equivilent to being able to use the Windows Forms designer to design your forms; the increase in productivity is immense. There are already some software factory assets available for WCF. Firstly, you can use the Visual Studio 2005 Class Designer to design you data and service contracts. Secondly, the Service Configuration Editor enables you to manage your service configurations through a user interface. Finally, you can also get a great productivity boost from using the WCF Service Factory, which is currently a community preview release.
The final benefit of WCF is not just in your initial communication design decisions, or in productivity. WCF also delivers major benefits when changes occur in your communication needs. I say when changes occur, because as software developers, we have to accept (even if it is painful) that change happens. So, think about what that would mean if you had a web service that you then needed to turn into something you would use over the LAN using TCP and binary? You would end up rewriting your code to use .Net remoting, which would be a costly excercise that you probably wouldn't undertake, even if TCP and binary messages were the most suitable methods of communication.