WCF is a very powerful framework for creating distributed, service-oriented applications, and if you want to stick to defining a few operations, exposing them to a service over one of the pre-defined bindings, and consuming them in a client, you can look at any of the many “hello world” examples out there and that will be enough. However, if you want to do something a little differently, almost everything (as seen in the WCF MSDN Forum and other sources of user feedback) can be accomplished using one of the extensibility points in WCF.

The biggest problem is which one. There are over 30 different points in which one can hook up code in the whole WCF pipeline (including serialization and the service model) that most people simply get too confused about which one is the right for their specific scenario (and sometimes a solution actually needs code in more than one of those places to work together).

The ongoing blog series at http://blogs.msdn.com/b/carlosfigueira/archive/2011/03/14/wcf-extensibility.aspx attempts to shed some light in this topic. There will be posts for each an every extensibility point in the WCF framework - the definition of extensibility point being some place where code can be inserted in the "normal" flow of execution of WCF - with a real world example for each of them.