ChannelDispatcher Класс

Определение

Компонент, который принимает каналы и связывает их со службой.

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

Примеры

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 прослушивания) с экземпляром службы. Каждый ServiceHost объект может иметь множество ChannelDispatcher объектов, каждый из которых связан с другим прослушивателем и URI прослушивания для этой службы.

Когда поступает сообщение, ChannelDispatcher запрашивает каждый из связанных EndpointDispatcher объектов, может ли конечная точка принять сообщение, и передает его тому, который может. Объект EndpointDispatcher отвечает за обработку сообщений от ChannelDispatcher адреса назначения сообщения, соответствующего AddressFilter свойству, и действие сообщения соответствует свойству ContractFilter .

Все свойства, управляющие временем существования и поведением сеанса канала, доступны для проверки или изменения ChannelDispatcher объекта. EndpointDispatcherПомимо этих объектов, к ним относятся пользовательские IChannelInitializer объекты, IChannelListenerServiceHostсвязанные и InstanceContextсвязанные с ним объекты.

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

Имя Описание
ChannelDispatcher(IChannelListener, String, IDefaultCommunicationTimeouts)

Инициализирует новый экземпляр класса ChannelDispatcher.

ChannelDispatcher(IChannelListener, String)

Инициализирует новый экземпляр класса ChannelDispatcher.

ChannelDispatcher(IChannelListener)

Инициализирует новый экземпляр класса ChannelDispatcher.

Свойства

Имя Описание
AsynchronousTransactedAcceptEnabled

Возвращает значение, показывающее, являются ли вызовы метода трансактированных методов прослушивателя асинхронными.

BindingName

Возвращает имя привязки, используемой для настройки службы.

ChannelInitializers

Возвращает набор IChannelInitializer объектов, которые можно использовать для проверки и добавления состояния в каналы при первом создании.

DefaultCloseTimeout

Возвращает интервал времени по умолчанию, разрешенный для закрытия диспетчера каналов.

DefaultOpenTimeout

Возвращает интервал времени по умолчанию, разрешенный для открытия диспетчера каналов.

Endpoints

Возвращает диспетчеры конечных точек, которые перенаправляет сообщения в конечные точки канала.

ErrorHandlers

Возвращает набор объектов, которые можно использовать для вставки пользовательских IErrorHandler функций обработки ошибок для конечной точки.

Host

Возвращает узел для службы, связанной с диспетчером.

IncludeExceptionDetailInFaults

Возвращает или задает значение, указывающее, следует ли включать сведения об исключении в ошибку.

IsDisposed

Возвращает значение, указывающее, был ли удален объект связи.

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

Возвращает значение, указывающее, выполняются ли вызовы метода приема прослушивателя в транзакции.

IsTransactedReceive

Возвращает значение, указывающее, выполняются ли вызовы метода получения прослушивателя в рамках транзакции.

Listener

Возвращает прослушиватель, связанный с диспетчером каналов.

ManualAddressing

Возвращает или задает значение, указывающее, добавляет ли диспетчер каналов адресации заголовки для сообщений запроса и ответа.

MaxPendingReceives

Возвращает или задает максимальное количество ожидающих сообщений на канал.

MaxTransactedBatchSize

Возвращает или задает максимальный размер для транзакционного пакета.

MessageVersion

Возвращает или задает сообщение SOAP и WS-Addressing версии, используемые или ожидаемые.

ReceiveContextEnabled

Возвращает или задает, включена ли функция ReceiveContext.

ReceiveSynchronously

Возвращает или задает значение, указывающее, использует ли диспетчер синхронные вызовы для чтения сообщений из каналов.

SendAsynchronously

Возвращает или задает, отправляются ли сообщения асинхронно.

ServiceThrottle

Возвращает или задает регулирование службы для службы, связанной с диспетчером каналов.

State

Возвращает значение, указывающее текущее состояние объекта связи.

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

Получает взаимоисключающую блокировку, которая защищает экземпляр класса во время перехода состояния.

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

Возвращает или задает уровень изоляции по умолчанию для транзакций.

TransactionTimeout

Возвращает или задает значение, указывающее время ожидания по умолчанию для новых транзакций, созданных диспетчером от имени службы.

Методы

Имя Описание
Abort()

Вызывает немедленное переход объекта связи из текущего состояния в закрывающемся состоянии.

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

Присоединяет диспетчер каналов к узлу.

BeginClose(AsyncCallback, Object)

Начинает асинхронную операцию закрытия объекта связи.

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

Начинает асинхронную операцию закрытия объекта связи с заданным временем ожидания.

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

Начинает асинхронную операцию для открытия объекта связи.

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

Начинает асинхронную операцию открытия объекта связи в течение указанного интервала времени.

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

Вызывает переход объекта связи из текущего состояния в закрытое состояние.

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

Вызывает переход объекта связи из текущего состояния в закрытое состояние в течение указанного интервала времени.

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

Запрещает прослушивателю принимать новые каналы.

Detach(ServiceHostBase)

Отсоединяет узел службы от диспетчера каналов.

EndClose(IAsyncResult)

Завершает асинхронную операцию закрытия объекта связи.

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

Завершает асинхронную операцию для открытия объекта связи.

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

Определяет, равен ли указанный объект текущему объекту.

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

Вызывает переход объекта связи из текущего состояния в состояние сбоя.

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

Возвращает тип объекта связи.

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

Служит хэш-функцией по умолчанию.

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

Возвращает Type текущего экземпляра.

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

Создает неглубокую копию текущей Object.

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

Прерывает прослушиватель, связанный с диспетчером.

OnBeginClose(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию закрытия прослушивателя каналов для диспетчера, который должен быть завершен в течение указанного интервала времени.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию, чтобы открыть прослушиватель каналов для диспетчера, который должен быть завершен в течение указанного интервала времени.

OnClose(TimeSpan)

Закрывает прослушиватель канала, связанный с диспетчером в течение указанного интервала времени.

OnClosed()

Предоставляет трассировку закрытия диспетчеров конечных точек, связанных с диспетчером каналов.

OnClosing()

Вызывается во время перехода объекта связи в закрываемое состояние.

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

Завершает асинхронную операцию, чтобы закрыть прослушиватель каналов для диспетчера.

OnEndOpen(IAsyncResult)

Завершает асинхронную операцию, чтобы открыть прослушиватель каналов для диспетчера.

OnFaulted()

Вставляет обработку в объект связи после перехода в состояние сбоя из-за вызова синхронной операции сбоя.

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

Открывает прослушиватель, связанный с диспетчером каналов.

OnOpened()

Заполняет и проверяет таблицу фильтров, используемую для отправки в конечные точки.

OnOpening()

Проверяет, подключен ли диспетчер каналов к узлу.

Open()

Вызывает переход объекта связи из созданного состояния в открытое состояние.

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

Вызывает переход объекта связи из созданного состояния в открытое состояние в течение указанного интервала времени.

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

Создает исключение, если объект связи удаляется.

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

Вызывает исключение, если объект State связи, который свойство не задано для Created состояния.

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

Создает исключение, если объект связи не находится в Opened состоянии.

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

Возвращает строку, представляющую текущий объект.

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

События

Имя Описание
Closed

Происходит при переходе объекта связи в закрытое состояние.

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

Происходит при переходе объекта связи в состояние закрытия.

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

Происходит при переходе объекта связи в состояние сбоя.

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

Происходит при переходе объекта связи в открытое состояние.

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

Происходит при переходе объекта связи в открытое состояние.

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

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