Поделиться через


ChannelDispatcher Класс

Определение

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

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

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

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

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

ChannelDispatcher(IChannelListener)

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

ChannelDispatcher(IChannelListener, String)

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

ChannelDispatcher(IChannelListener, String, IDefaultCommunicationTimeouts)

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

Свойства

AsynchronousTransactedAcceptEnabled

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

BindingName

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

ChannelInitializers

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

DefaultCloseTimeout

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

DefaultOpenTimeout

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

Endpoints

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

ErrorHandlers

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

Host

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

Host

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

(Унаследовано от ChannelDispatcherBase)
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)

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

Attach(ServiceHostBase)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Detach(ServiceHostBase)

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

Detach(ServiceHostBase)

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

(Унаследовано от ChannelDispatcherBase)
EndClose(IAsyncResult)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

OnBeginClose(TimeSpan, AsyncCallback, Object)

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

OnBeginOpen(TimeSpan, AsyncCallback, Object)

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

OnClose(TimeSpan)

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

OnCloseAsync(TimeSpan)

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

OnCloseAsync(TimeSpan)

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

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

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

OnClosing()

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

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

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

OnEndOpen(IAsyncResult)

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

OnFaulted()

Вставляет операцию обработки объекта связи после перехода объекта в состояние Faulted в связи с вызовом синхронной операции ошибки.

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

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

OnOpenAsync(TimeSpan)

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

OnOpenAsync(TimeSpan)

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

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

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

OnOpening()

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

Open()

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

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

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

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

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

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

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

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

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

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

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

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

События

Closed

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

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

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

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

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

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

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

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

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

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

Явные реализации интерфейса

IAsyncCommunicationObject.CloseAsync(TimeSpan)

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

(Унаследовано от CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

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

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

Методы расширения

CloseHelperAsync(ICommunicationObject, TimeSpan)

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

OpenHelperAsync(ICommunicationObject, TimeSpan)

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

GetInternalCloseTimeout(CommunicationObject)

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

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