In WCF applications, there is a distinction between messages that are destined for a corresponding channel and messages that are destined for the application itself. Channel messages support some channel-related functionality, such as establishing a secure conversation or establishing a reliable session. These messages are not available to the application runtime; they are processed before the application layer is involved.
Application messages contain data that is destined for a client or service operation that you or your customer has created. These messages are available to the application-level extension system in message or object form, depending upon your needs.
All messages pass through the channel system; only application messages are passed from the channel system into the application. To create new channel-level functionality, you must extend the channel system. To create new application-level functionality, you must extend the service or client runtime (dispatchers and channel factories, respectively). For more information about extending the application runtime, see Extending ServiceHost and the Service Model Layer.
Extending Security
To build custom security mechanisms such as tokens and credentials, you must extend the security system. For more information, see Extending Security.
Extending Metadata
To expose your metadata in differently than the default, you must extend the metadata system. For more information, see Extending the Metadata System.
Extending Serialization
Extending Bindings