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