Ответ 1
В WCF есть целая куча точек расширяемости, которые вы можете использовать для таких вещей. К ним относятся:
- IDispatchMessageInspector
- IErrorHandler
- IParameterInspector
- Поведение (IServiceBehavior, IEndpointBehavior, IOperationBehavior)
Кроме того, вы можете создавать собственные классы ServiceHost для использования либо напрямую, либо через ServiceHostFactory, а затем есть целая модель стека каналов, которая довольно расширяема (если бит иногда сложнее).