ChannelDispatcher 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
接受通道以及将通道与服务相关联的组件。
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 对象将在特定 URI(称为侦听 URI)的 IChannelListener 与服务的实例相关联。 每个 ServiceHost 对象都可以拥有多个 ChannelDispatcher 对象,这多个对象每个都可与该服务的不同侦听器和侦听 URI 相关联。
当消息到达时,ChannelDispatcher 会查询每个相关的 EndpointDispatcher 对象以确定终结点是否可以接受消息,并将该消息传递到可以接受消息的终结点。 当消息的目标地址与 EndpointDispatcher 属性相匹配并且消息操作与 ChannelDispatcher 属性相匹配时,AddressFilter 对象负责处理来自 ContractFilter 的消息。
控制通道会话的生存期和行为的所有属性都可以在 ChannelDispatcher 对象上检查或修改。 除了 EndpointDispatcher 之外,这些属性还包括自定义 IChannelInitializer 对象、IChannelListener、ServiceHost 以及相关的 InstanceContext。
构造函数
属性
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 |
获取或设置由代表该服务的调度程序创建的新事务的默认超时值。 |
方法
事件
Closed |
当通信对象转换到已关闭状态时发生。 (继承自 CommunicationObject) |
Closing |
当通信对象转换到正在关闭状态时发生。 (继承自 CommunicationObject) |
Faulted |
在通信对象转换到出错状态时发生。 (继承自 CommunicationObject) |
Opened |
当通信对象转换到已打开状态时发生。 (继承自 CommunicationObject) |
Opening |
当通信对象转换到正在打开状态时发生。 (继承自 CommunicationObject) |
显式接口实现
IAsyncCommunicationObject.CloseAsync(TimeSpan) |
接受通道以及将通道与服务相关联的组件。 (继承自 CommunicationObject) |
IAsyncCommunicationObject.OpenAsync(TimeSpan) |
接受通道以及将通道与服务相关联的组件。 (继承自 CommunicationObject) |
扩展方法
CloseHelperAsync(ICommunicationObject, TimeSpan) |
接受通道以及将通道与服务相关联的组件。 |
OpenHelperAsync(ICommunicationObject, TimeSpan) |
接受通道以及将通道与服务相关联的组件。 |
GetInternalCloseTimeout(CommunicationObject) |
接受通道以及将通道与服务相关联的组件。 |