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 物件,而其中每一個物件都會與該服務的不同接聽程式 (Listener) 和接聽 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 |
取得或設定異動的預設隔離等級 (Isolation Level)。 |
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) |
元件,它會接受通道且使通道與服務產生關聯。 |