This topic has not yet been rated - Rate this topic

ChannelDispatcher Class

A component that accepts channels and associates them with a service.

Namespace:  System.ServiceModel.Dispatcher
Assembly:  System.ServiceModel (in System.ServiceModel.dll)
public class ChannelDispatcher : ChannelDispatcherBase

The ChannelDispatcher type exposes the following members.

  Name Description
Public method ChannelDispatcher(IChannelListener) Initializes a new instance of the ChannelDispatcher class.
Public method ChannelDispatcher(IChannelListener, String) Initializes a new instance of the ChannelDispatcher class.
Public method ChannelDispatcher(IChannelListener, String, IDefaultCommunicationTimeouts) Initializes a new instance of the ChannelDispatcher class.
Top
  Name Description
Public property BindingName Gets the name of the binding used to configure the service.
Public property ChannelInitializers Gets a set of IChannelInitializer objects that you can use to inspect and add state to channels when they are first created.
Protected property DefaultCloseTimeout Gets the default interval of time allowed for the channel dispatcher to close. (Overrides CommunicationObject.DefaultCloseTimeout.)
Protected property DefaultOpenTimeout Gets the default interval of time allowed for the channel dispatcher to open. (Overrides CommunicationObject.DefaultOpenTimeout.)
Public property Endpoints Gets the endpoint dispatchers which forward messages to the channel endpoints.
Public property ErrorHandlers Gets a set of IErrorHandler objects that can be used to insert custom error handling functionality for an endpoint.
Public property Host Gets the host for the service associated with the dispatcher. (Overrides ChannelDispatcherBase.Host.)
Public property IncludeExceptionDetailInFaults Gets or sets a value that indicates whether to include the details about an exception in a fault.
Protected property IsDisposed Gets a value that indicates whether the communication object has been disposed. (Inherited from CommunicationObject.)
Public property IsTransactedAccept Gets a value that indicates whether the accept method calls on the listener are done under a transaction.
Public property IsTransactedReceive Gets a value that indicates whether the receive method calls on the listener are done under a transaction.
Public property Listener Gets the listener associated with the channel dispatcher. (Overrides ChannelDispatcherBase.Listener.)
Public property ManualAddressing Gets or sets a value that indicates whether the channel dispatcher adds addressing headers to request-reply messages.
Public property MaxPendingReceives Gets or sets the maximum pending messages per channel.
Public property MaxTransactedBatchSize Gets or sets the maximum size for a transacted batch.
Public property MessageVersion Gets or sets the SOAP message and WS-Addressing versions that are used or expected.
Public property ReceiveContextEnabled Gets or sets whether ReceiveContext is enabled.
Public property ReceiveSynchronously Gets or sets a value that specifies whether the dispatcher uses synchronous calls to read messages from channels.
Public property SendAsynchronously Gets or sets whether messages are sent asynchronously.
Public property ServiceThrottle Gets or sets the service throttle for the service associated with the channel dispatcher.
Public property State Gets a value that indicates the current state of the communication object. (Inherited from CommunicationObject.)
Protected property ThisLock Gets the mutually exclusive lock that protects the class instance during a state transition. (Inherited from CommunicationObject.)
Public property TransactionIsolationLevel Gets or sets the default isolation level for transactions.
Public property TransactionTimeout Gets or sets a value that specifies the default timeout for new transactions created by the dispatcher on behalf of the service.
Top
  Name Description
Public method Abort Causes a communication object to transition immediately from its current state into the closing state. (Inherited from CommunicationObject.)
Protected method Attach Attaches the channel dispatcher to the host. (Overrides ChannelDispatcherBase.Attach(ServiceHostBase).)
Public method BeginClose(AsyncCallback, Object) Begins an asynchronous operation to close a communication object. (Inherited from CommunicationObject.)
Public method BeginClose(TimeSpan, AsyncCallback, Object) Begins an asynchronous operation to close a communication object with a specified timeout. (Inherited from CommunicationObject.)
Public method BeginOpen(AsyncCallback, Object) Begins an asynchronous operation to open a communication object. (Inherited from CommunicationObject.)
Public method BeginOpen(TimeSpan, AsyncCallback, Object) Begins an asynchronous operation to open a communication object within a specified interval of time. (Inherited from CommunicationObject.)
Public method Close() Causes a communication object to transition from its current state into the closed state. (Inherited from CommunicationObject.)
Public method Close(TimeSpan) Causes a communication object to transition from its current state into the closed state within a specified interval of time. (Inherited from CommunicationObject.)
Public method CloseInput Stops the listener from accepting new channels. (Overrides ChannelDispatcherBase.CloseInput().)
Protected method Detach Detaches the service host from the channel dispatcher. (Overrides ChannelDispatcherBase.Detach(ServiceHostBase).)
Public method EndClose Completes an asynchronous operation to close a communication object. (Inherited from CommunicationObject.)
Public method EndOpen Completes an asynchronous operation to open a communication object. (Inherited from CommunicationObject.)
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Fault Causes a communication object to transition from its current state into the faulted state. (Inherited from CommunicationObject.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Protected method GetCommunicationObjectType Gets the type of communication object. (Inherited from CommunicationObject.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method OnAbort Aborts the listener associated with the dispatcher. (Overrides CommunicationObject.OnAbort().)
Protected method OnBeginClose Begins an asynchronous operation to close a channel listener for the dispatcher that must be completed within a specified interval of time. (Overrides CommunicationObject.OnBeginClose(TimeSpan, AsyncCallback, Object).)
Protected method OnBeginOpen Begins an asynchronous operation to open a channel listener for the dispatcher that must be completed within a specified interval of time. (Overrides CommunicationObject.OnBeginOpen(TimeSpan, AsyncCallback, Object).)
Protected method OnClose Closes the channel listener associated with the dispatcher within a specified interval of time. (Overrides CommunicationObject.OnClose(TimeSpan).)
Protected method OnClosed Provides a trace of the closing of the endpoint dispatchers associated with the channel dispatcher. (Overrides CommunicationObject.OnClosed().)
Protected method OnClosing Invoked during the transition of a communication object into the closing state. (Inherited from CommunicationObject.)
Protected method OnEndClose Completes an asynchronous operation to close a channel listener for the dispatcher. (Overrides CommunicationObject.OnEndClose(IAsyncResult).)
Protected method OnEndOpen Completes an asynchronous operation to open a channel listener for the dispatcher. (Overrides CommunicationObject.OnEndOpen(IAsyncResult).)
Protected method OnFaulted Inserts processing on a communication object after it transitions to the faulted state due to the invocation of a synchronous fault operation. (Inherited from CommunicationObject.)
Protected method OnOpen Opens the listener associated with the channel dispatcher. (Overrides CommunicationObject.OnOpen(TimeSpan).)
Protected method OnOpened Populates and validates filter table used to dispatch to the endpoints. (Overrides CommunicationObject.OnOpened().)
Protected method OnOpening Checks whether the channel dispatcher is attached to a host. (Overrides CommunicationObject.OnOpening().)
Public method Open() Causes a communication object to transition from the created state into the opened state. (Inherited from CommunicationObject.)
Public method Open(TimeSpan) Causes a communication object to transition from the created state into the opened state within a specified interval of time. (Inherited from CommunicationObject.)
Protected method ThrowIfDisposed Throws an exception if the communication object is disposed. (Inherited from CommunicationObject.)
Protected method ThrowIfDisposedOrImmutable Throws an exception if the communication object the State property is not set to the Created state. (Inherited from CommunicationObject.)
Protected method ThrowIfDisposedOrNotOpen Throws an exception if the communication object is not in the Opened state. (Inherited from CommunicationObject.)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Public event Closed Occurs when a communication object transitions into the closed state. (Inherited from CommunicationObject.)
Public event Closing Occurs when a communication object transitions into the closing state. (Inherited from CommunicationObject.)
Public event Faulted Occurs when a communication object transitions into the faulted state. (Inherited from CommunicationObject.)
Public event Opened Occurs when a communication object transitions into the opened state. (Inherited from CommunicationObject.)
Public event Opening Occurs when a communication object transitions into the opening state. (Inherited from CommunicationObject.)
Top

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.


Uri baseAddress = new Uri("http://localhost:8001/Simple");
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);

serviceHost.AddServiceEndpoint(
    typeof(ICalculator),
    new WSHttpBinding(),
    "CalculatorServiceObject");

// Enable MEX.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
serviceHost.Description.Behaviors.Add(smb);

serviceHost.Open();        

IChannelListener icl = serviceHost.ChannelDispatchers[0].Listener;
ChannelDispatcher dispatcher = new ChannelDispatcher(icl);
Console.WriteLine("servicehost has {0} ChannelDispatchers", serviceHost.ChannelDispatchers.Count);
ChannelDispatcherCollection dispatchers = serviceHost.ChannelDispatchers;

foreach (ChannelDispatcher disp in dispatchers)
{
    Console.WriteLine("Binding name: " + disp.BindingName);
}

Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();

// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();


.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ