This becomes really the week where I found a lot of great resources on the web. Today I discovered the perfect post to learn everything about WCF Extensibility.
Carlos Figueira has written a series of posts about the (many) extensibility points from WCF (up to .NET Framework 4.0). Great stuff!
Table of Contents
1. Service model extensibility
1.1. Behaviors
1.1.1. IServiceBehavior
1.1.2. IContractBehavior
1.1.3. IEndpointBehavior
1.1.4. IOperationBehavior
1.2. WCF Runtime
1.2.1. Message interception
1.2.1.1. I[Client/Dispatch]MessageInspector
1.2.1.2. IParameterInspector
1.2.2. Mapping between message and operation parameter
1.2.2.1. I[Client/Dispatch]MessageFormatter
1.2.3. Mapping between message and CLR operations
1.2.3.1. I[Client/Dispatch]OperationSelector
1.2.3.2. IOperationInvoker
1.2.4. Instance [context] creation / initialization
1.2.4.1. IInstanceProvider
1.2.4.2. IInstanceContextProvider
1.2.5. Error handling
1.2.5.1. IErrorHandler
1.2.6. Others
1.2.6.1. Initializer interfaces (IInstanceContextInitializer / IChannelInitializer / ICallContextInitializer)
1.2.6.2. IInteractiveChannelInitializer
1.3. Exposing / consuming metadata
1.3.1. IWsdlExportExtension
1.3.2. IWsdlImportExtension (and IOperationContractGenerationExtension / IServiceContractGenerationExtension)
1.3.3. IPolicy[Import/Export]Extension
1.4. Configuration
1.4.1. BehaviorExtensionElement
1.4.2. BindingElementExtensionElement / StandardBindingElement / StandardBindingCollectionElement
1.5. Web Hosting
1.5.1. ServiceHostFactory
1.6. WCF REST (3.5 / 4.0 model)
1.6.1. QueryStringConverter
1.6.2. Extending WebHttpBehavior
1.7. Others
1.7.1. Extensible objects: IExtensibleObject<T> and IExtension<T>
2. Channel extensibility
2.1. Protocol channels (client)
2.2. Protocol channels (server)
2.3. Message encoders
2.4. Transport channels
2.4.1. Request transport channels - part 1 (synchronous path)
2.4.2. Request transport channels - part 2 (interaction with runtime extensions)
2.4.3. Request transport channels - part 3 (asynchronous path)
2.4.4. Reply transport channels
2.4.5. Duplex transport channels
3. Serialization extensibility
3.1. Serialization callbacks (On[Ser/Deser]ializ[ing/ed])
3.2. IDataContractSurrogate
3.3. DataContractResolver
3.4. IExtensibleDataObject / IDeserializationCallback / IObjectReference
4. Miscellaneous extensibility scenarios
4.1. Hooking into the tracing mechanism
4.2. Custom serialization in Silverlight 4
4.3. Extensibility in Windows Phone / Silverlight 3
4.4. WCF RIA Services
5. Wrapping up