ChannelDispatcher Класс

Определение

Компонент, который принимает каналы и связывает их со службой.A component that accepts channels and associates them with a service.

public ref class ChannelDispatcher : System::ServiceModel::Dispatcher::ChannelDispatcherBase
public class ChannelDispatcher : System.ServiceModel.Dispatcher.ChannelDispatcherBase
type ChannelDispatcher = class
    inherit ChannelDispatcherBase
Public Class ChannelDispatcher
Inherits ChannelDispatcherBase
Наследование

Примеры

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();
Dim baseAddress As New Uri("http://localhost:8001/Simple")
Dim serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)

serviceHost.AddServiceEndpoint(GetType(ICalculator), New WSHttpBinding(), "CalculatorServiceObject")

' Enable MEX.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
serviceHost.Description.Behaviors.Add(smb)

serviceHost.Open()

Dim icl As IChannelListener = serviceHost.ChannelDispatchers(0).Listener
Dim dispatcher As New ChannelDispatcher(icl)
Console.WriteLine("servicehost has {0} ChannelDispatchers", serviceHost.ChannelDispatchers.Count)
Dim dispatchers As ChannelDispatcherCollection = serviceHost.ChannelDispatchers

For Each disp As ChannelDispatcher In dispatchers
    Console.WriteLine("Binding name: " & disp.BindingName)
Next disp

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()

Комментарии

Объект ChannelDispatcher связывает интерфейс IChannelListener по определенному URI (называемом «URI прослушивания») с экземпляром службы.A ChannelDispatcher object associates an IChannelListener at a particular URI (called a listen URI) with an instance of a service. Каждый объект ServiceHost может иметь множество объектов ChannelDispatcher, каждый из которых связан со своим прослушивателем и URI прослушивания для данной службы.Each ServiceHost object can have many ChannelDispatcher objects, each associated with a different listener and listen URI for that service.

При поступлении сообщения диспетчер каналов ChannelDispatcher запрашивает все связанные объекты EndpointDispatcher, может ли данная конечная точка принять это сообщение, и передает его соответствующей конечной точке.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. Объект EndpointDispatcher отвечает за обработку сообщений от ChannelDispatcher, если адрес назначения сообщения соответствует свойству AddressFilter и действие сообщения соответствует свойству ContractFilter.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.

Все свойства, которые управляют временем существования и поведением сеанса канала, доступны для проверки или изменения в объекте ChannelDispatcher.All properties that control the lifetime and behavior of a channel session are available for inspection or modification on the ChannelDispatcher object. Кроме EndpointDispatcher, к ним относятся пользовательские объекты IChannelInitializer, IChannelListener, ServiceHost, связанные объекты и InstanceContext.In addition to the EndpointDispatcher, these include custom IChannelInitializer objects, the IChannelListener, the ServiceHost, the associated and InstanceContext.

Конструкторы

ChannelDispatcher(IChannelListener)

Инициализирует новый экземпляр класса ChannelDispatcher.Initializes a new instance of the ChannelDispatcher class.

ChannelDispatcher(IChannelListener, String)

Инициализирует новый экземпляр класса ChannelDispatcher.Initializes a new instance of the ChannelDispatcher class.

ChannelDispatcher(IChannelListener, String, IDefaultCommunicationTimeouts)

Инициализирует новый экземпляр класса ChannelDispatcher.Initializes a new instance of the ChannelDispatcher class.

Свойства

AsynchronousTransactedAcceptEnabled

Получает значение, указывающее, являются ли вызовы метода приема на прослушивателе в рамках транзакции асинхронными.Gets a value that indicates whether the transacted accept method calls on listener are asynchronous.

BindingName

Возвращает имя привязки, используемое для настройки службы.Gets the name of the binding used to configure the service.

ChannelInitializers

Возвращает набор объектов IChannelInitializer, которые можно использовать для проверки и добавления состояния к каналам при их создании.Gets a set of IChannelInitializer objects that you can use to inspect and add state to channels when they are first created.

DefaultCloseTimeout

Возвращает длительность временного интервала по умолчанию, выделенного для операции закрытия диспетчера каналов.Gets the default interval of time allowed for the channel dispatcher to close.

DefaultOpenTimeout

Возвращает длительность временного интервала по умолчанию, выделенного для операции открытия диспетчера каналов.Gets the default interval of time allowed for the channel dispatcher to open.

Endpoints

Возвращает диспетчеры конечных точек, которые пересылают сообщения конечным точкам канала.Gets the endpoint dispatchers which forward messages to the channel endpoints.

ErrorHandlers

возвращает набор объектов IErrorHandler, которые можно использовать для вставки пользовательских функций обработки ошибок для конечной точки.Gets a set of IErrorHandler objects that can be used to insert custom error handling functionality for an endpoint.

Host

Возвращает узел для службы, связанной с диспетчером.Gets the host for the service associated with the dispatcher.

IncludeExceptionDetailInFaults

Возвращает или задает значение, указывающее, следует ли включать сведения об исключении в сообщение об ошибке.Gets or sets a value that indicates whether to include the details about an exception in a fault.

IsDisposed

Возвращает значение, указывающее, удален ли объект связи.Gets a value that indicates whether the communication object has been disposed.

(Унаследовано от CommunicationObject)
IsTransactedAccept

Возвращает значение, указывающее, выполняются ли вызовы метода приема на прослушивателе в рамках транзакции.Gets a value that indicates whether the accept method calls on the listener are done under a transaction.

IsTransactedReceive

Возвращает значение, указывающее, выполняются ли вызовы метода получения на прослушивателе в рамках транзакции.Gets a value that indicates whether the receive method calls on the listener are done under a transaction.

Listener

Возвращает прослушиватель, связанный с диспетчером каналов.Gets the listener associated with the channel dispatcher.

ManualAddressing

Возвращает или задает значение, указывающее, добавляет ли диспетчер каналов заголовки адресации в сообщения типа запрос-ответ.Gets or sets a value that indicates whether the channel dispatcher adds addressing headers to request-reply messages.

MaxPendingReceives

Возвращает или задает максимальное количество ожидающих сообщений на канал.Gets or sets the maximum pending messages per channel.

MaxTransactedBatchSize

Возвращает или задает максимальный размер транзакционного пакета.Gets or sets the maximum size for a transacted batch.

MessageVersion

Возвращает или задает используемые или ожидаемые версии сообщения SOAP и WS-Addressing.Gets or sets the SOAP message and WS-Addressing versions that are used or expected.

ReceiveContextEnabled

Возвращает или задает значение, указывающее, включен ли ReceiveContext.Gets or sets whether ReceiveContext is enabled.

ReceiveSynchronously

Возвращает или задает значение, указывающее, использует ли диспетчер синхронные вызовы для чтения сообщений из каналов.Gets or sets a value that specifies whether the dispatcher uses synchronous calls to read messages from channels.

SendAsynchronously

Возвращает или задает значение, показывающее, отправляются ли сообщения в асинхронном режиме.Gets or sets whether messages are sent asynchronously.

ServiceThrottle

Возвращает или задает регулирование для службы, связанной с диспетчером каналов.Gets or sets the service throttle for the service associated with the channel dispatcher.

State

Возвращает значение, которое указывает на текущее состояние объекта связи.Gets a value that indicates the current state of the communication object.

(Унаследовано от CommunicationObject)
ThisLock

Возвращает взаимно исключающую блокировку, которая защищает экземпляр класса в процессе перехода между состояниями.Gets the mutually exclusive lock that protects the class instance during a state transition.

(Унаследовано от CommunicationObject)
TransactionIsolationLevel

Возвращает или задает уровень изоляции по умолчанию для транзакций.Gets or sets the default isolation level for transactions.

TransactionTimeout

Возвращает или задает значение, указывающее время ожидания по умолчанию для новых транзакций, созданных диспетчером от имени службы.Gets or sets a value that specifies the default timeout for new transactions created by the dispatcher on behalf of the service.

Методы

Abort()

Вызывает мгновенный переход объекта связи из текущего состояния в состояние закрытия.Causes a communication object to transition immediately from its current state into the closing state.

(Унаследовано от CommunicationObject)
Attach(ServiceHostBase)

Прикрепляет диспетчер каналов к узлу.Attaches the channel dispatcher to the host.

BeginClose(AsyncCallback, Object)

Начинает асинхронную операцию закрытия объекта связи.Begins an asynchronous operation to close a communication object.

(Унаследовано от CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию закрытия объекта связи с заданным временем ожидания.Begins an asynchronous operation to close a communication object with a specified timeout.

(Унаследовано от CommunicationObject)
BeginOpen(AsyncCallback, Object)

Начинает асинхронную операцию открытия объекта связи.Begins an asynchronous operation to open a communication object.

(Унаследовано от CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию открытия объекта связи в течение заданного интервала времени.Begins an asynchronous operation to open a communication object within a specified interval of time.

(Унаследовано от CommunicationObject)
Close()

Вызывает переход объекта связи из текущего состояния в состояние Closed.Causes a communication object to transition from its current state into the closed state.

(Унаследовано от CommunicationObject)
Close(TimeSpan)

Вызывает переход объекта связи из его текущего состояния в состояние Closed в течение заданного интервала времени.Causes a communication object to transition from its current state into the closed state within a specified interval of time.

(Унаследовано от CommunicationObject)
CloseInput()

Заставляет прослушиватель прекратить прием новых каналов.Stops the listener from accepting new channels.

Detach(ServiceHostBase)

Открепляет узел службы от диспетчера каналов.Detaches the service host from the channel dispatcher.

EndClose(IAsyncResult)

Завершает асинхронную операцию закрытия объекта связи.Completes an asynchronous operation to close a communication object.

(Унаследовано от CommunicationObject)
EndOpen(IAsyncResult)

Завершает асинхронную операцию открытия объекта связи.Completes an asynchronous operation to open a communication object.

(Унаследовано от CommunicationObject)
Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
Fault()

Вызывает переход объекта связи из текущего состояния в состояние Faulted.Causes a communication object to transition from its current state into the faulted state.

(Унаследовано от CommunicationObject)
GetCommunicationObjectType()

Возвращает тип объекта связи.Gets the type of communication object.

(Унаследовано от CommunicationObject)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
OnAbort()

Прерывает работу прослушивателя, связанного с диспетчером.Aborts the listener associated with the dispatcher.

OnBeginClose(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию закрытия прослушивателя канала для диспетчера, которая должна завершиться в течение указанного временного интервала.Begins an asynchronous operation to close a channel listener for the dispatcher that must be completed within a specified interval of time.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию открытия прослушивателя канала для диспетчера, которая должна завершиться в течение указанного временного интервала.Begins an asynchronous operation to open a channel listener for the dispatcher that must be completed within a specified interval of time.

OnClose(TimeSpan)

Закрывает прослушиватель канала, связанный с диспетчером, в течение указанного временного интервала.Closes the channel listener associated with the dispatcher within a specified interval of time.

OnClosed()

Обеспечивает трассировку закрытия диспетчеров конечных точек, связанных с диспетчером каналов.Provides a trace of the closing of the endpoint dispatchers associated with the channel dispatcher.

OnClosing()

Вызывается в процессе перехода объекта связи в состояние закрытия.Invoked during the transition of a communication object into the closing state.

(Унаследовано от CommunicationObject)
OnEndClose(IAsyncResult)

Завершает асинхронную операцию, чтобы закрыть прослушиватель канала для диспетчера.Completes an asynchronous operation to close a channel listener for the dispatcher.

OnEndOpen(IAsyncResult)

Завершает асинхронную операцию, чтобы открыть прослушиватель канала для диспетчера.Completes an asynchronous operation to open a channel listener for the dispatcher.

OnFaulted()

Вставляет операцию обработки объекта связи после перехода объекта в состояние Faulted в связи с вызовом синхронной операции ошибки.Inserts processing on a communication object after it transitions to the faulted state due to the invocation of a synchronous fault operation.

(Унаследовано от CommunicationObject)
OnOpen(TimeSpan)

Открывает прослушиватель, связанный с диспетчером каналов.Opens the listener associated with the channel dispatcher.

OnOpened()

Заполняет и проверяет таблицу фильтров, используемую для перенаправления к конечным точкам.Populates and validates filter table used to dispatch to the endpoints.

OnOpening()

Проверяет, прикреплен ли диспетчер каналов к узлу.Checks whether the channel dispatcher is attached to a host.

Open()

Вызывает переход объекта связи из состояния Created в состояние Opened.Causes a communication object to transition from the created state into the opened state.

(Унаследовано от CommunicationObject)
Open(TimeSpan)

Вызывает переход объекта связи из состояния Created в состояние Opened в течение заданного интервала времени.Causes a communication object to transition from the created state into the opened state within a specified interval of time.

(Унаследовано от CommunicationObject)
ThrowIfDisposed()

Вызывает исключение, если объект связи удален.Throws an exception if the communication object is disposed.

(Унаследовано от CommunicationObject)
ThrowIfDisposedOrImmutable()

Создает исключение, если для свойства объекта связи State не установлено значение Created.Throws an exception if the communication object the State property is not set to the Created state.

(Унаследовано от CommunicationObject)
ThrowIfDisposedOrNotOpen()

Создает исключение, если объект связи не находится в состоянии Opened.Throws an exception if the communication object is not in the Opened state.

(Унаследовано от CommunicationObject)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

События

Closed

Происходит при переходе объекта связи в состояние Closed.Occurs when a communication object transitions into the closed state.

(Унаследовано от CommunicationObject)
Closing

Происходит при переходе объекта связи в состояние закрытия.Occurs when a communication object transitions into the closing state.

(Унаследовано от CommunicationObject)
Faulted

Происходит при переходе объекта связи в состояние Faulted.Occurs when a communication object transitions into the faulted state.

(Унаследовано от CommunicationObject)
Opened

Происходит при переходе объекта связи в состояние Opened.Occurs when a communication object transitions into the opened state.

(Унаследовано от CommunicationObject)
Opening

Происходит при переходе объекта связи в состояние открытия.Occurs when a communication object transitions into the opening state.

(Унаследовано от CommunicationObject)

Применяется к