A ChannelDispatcher object associates an IChannelListener at a particular URI (called a listen URI) with an instance of a service. Each ServiceHost object can have many ChannelDispatcher objects, each associated with a different listener and listen URI for that service.
When a message arrives, the ChannelDispatcher queries each of the associated EndpointDispatcher objects whether the endpoint can accept the message, and passes the message to the one that can. The EndpointDispatcher object is responsible for processing messages from a ChannelDispatcher when the destination address of a message matches the AddressFilter property and the message action matches the ContractFilter property.
All properties that control the lifetime and behavior of a channel session are available for inspection or modification on the ChannelDispatcher object. In addition to the EndpointDispatcher, these include custom IChannelInitializer objects, the IChannelListener, the ServiceHost, the associated and InstanceContext.