Is Windows Communication Foundation to complex?

Today at ALT.NET’s unconference we had a great discussion initialized by Alan Smith about the state of WCF and the complexity, if any, it imposes on developers. The thesis was that WCF was hard to learn for the “Average developer” and there was a lot of underlying details of communication that might be too visual. Alan showed an example of all the details generated by SvcUtil in it’s default settings. He compared with ASMX web services where “regular” developers could develop new services as simple as they implemented an event handler.

My view on this is kind of simple and ties into discussions I’ve had in the past about The holy abstraction level, the real question to ask is if I and my project is ready for distribution? Am I skilled enough to wield a tool for building services?

ASMX is a bit simpler, sure, if you don’t want real security. Or are looking for reliable sessions or any other more interesting service conversation pattern then request/response over HTTP.

The simple truth is that anything but request / response has a lot of underlying principles that are far from easy. These principles is what WCF aims to be an abstraction layer for. Not HTTP request / response. Sure, there is a lot of things that can be simpler. More things that tools can do for you to make you faster. Some of the simpler conversation patterns could be easier to implement.

But the problem will still be the same, building distributed applications that scale, perform are reliable and secure is not a walk in the park. It requires skill, planning and a lot of thought.

Distributed applications are hard for a reason and no tool will make architecting them easy, any tool that try will fool developers into dangerous traps.

So in short, it’s not WCF that’s too complex, WCF takes complex conversation patterns to the average developer and that makes WCF seem complex at a first glimpse.

If you want to master WCF development, your first step should be to master distributed application design and conversation patterns. When you do; WCF will be an excellent and simple enough tool for you.

4 thoughts on “Is Windows Communication Foundation to complex?

  1. One of the most appealing position I’ve heard is the one made by Christian Weyer. He means that WCF is a foundation and not a framework, and that it’s up to the people within the company that are knowledgeable in WCF to abstract away the details in a company-specific framework. I really like that idea and it would definitely solve some of the compexity issues people tend to dislike with WCF.

    Thinktecture have created their own framework ontop of WCF and use that in their projects, apparently with great success!

  2. That is a great statement. WebService factory is another such tool. Though very helpful it is still important to understand the essence of distributed applications. The wire nor the need for serializing / deserializing will go away with abstraction layers, just hide it. Which opens up for poorly designed and architectured systems.

  3. I like WCF but it should be more developer friendly and I know it can be. I feel that many times when new techniques are developed you often forget to considor the average developer (the big customer) in the process. And I think the WCF would have been much better if the average developer could have been involved when it was created.

  4. I have one problem with WCF. In previous versions, the WCF Data Services .NET and Silverlight client libraries always assumed that all collections had the same base URI. This assumption was in place because the library used the URI provided in the DataServiceContext constructor to generate collection URIs using the OData addressing convention.

Leave a Reply

Your email address will not be published. Required fields are marked *