Microsoft remakes WCF for REST and the web

WCF is Windows Communication Foundation, the part of Microsoft’s .NET framework that handles service-oriented architecture. When WCF was first designed Microsoft was betting on SOAP web services. SOAP is still widely used but since then the trend has been towards more web-friendly services based on REST (Representational State Transfer) and JSON (JavaScript Object Notation). Microsoft has always argued that WCF is flexible enough to support such alternatives.

That said, a project which I have become aware of here at QCon London is the WCF Web APIs, presented here by Microsoft’s Glenn Block. WCF Web APIs focus on support for REST, JQuery clients, and programming model simplicity for a variety of other clients such as Silverlight and Windows Phone. The bit that surprised me is that WCF Web APIs are not just another wrapper for WCF; it is a completely new library that does not build on the old WCF Service Model. The fact that it is called WCF at all is confusing, though of course it belongs in that space within the overall .NET Framework.

I have not had time to look in detail at the WCF Web APIs, but from what I have seen and heard they are well worth exploring, even if you have found the old WCF somewhat impenetrable.

3 thoughts on “Microsoft remakes WCF for REST and the web”

  1. “remakes WCF”..? I’d say “reuses the WCF name for a completely different product”. The usual confusion in Microsoft naming / reusing product names…

  2. Hi Tim

    Thanks for the article.

    In terms of the surprise, let me clarify. This actually IS WCF. What we are doing is taking the WCF stack and basically reconfiguring it (as it allows) with a new binding and with components at every level that are specific for HTTP. The biggest difference is when you use this binding, what you get is only for exposing HTTP services and is not for using those services over other “tranports”. The reasoning is to enable a more natural and specific HTTP experience.

    We are also looking at along the way improving our configuration story and testability story. That is possible as we are thinking more about these concerns in the process of writing the new bits.


  3. Additionally we are adding HTTP specific extensibility points namely our processors (OperationHandlers) and MessageHandlers which will only work with our new binding.

Comments are closed.