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) |
Компонент, который принимает каналы и связывает их со службой. |