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 オブジェクトは、特定の URI (リッスン URI と呼ばれます) にある IChannelListener をサービスのインスタンスと関連付けます。 各 ServiceHost オブジェクトは、そのサービスの異なるリスナーおよびリッスン URI に関連付けられた多数の ChannelDispatcher オブジェクトを持つことができます。

メッセージが到着すると、ChannelDispatcher が、関連する各 EndpointDispatcher オブジェクトにエンドポイントがメッセージを受け入れ可能かどうかを問い合わせ、受け入れ可能ならメッセージを渡します。 メッセージの送信先アドレスが EndpointDispatcher プロパティに一致しており、メッセージ アクションが ChannelDispatcher プロパティに一致しているときは、AddressFilter オブジェクトが、ContractFilter から送信されたメッセージの処理を担当します。

ChannelDispatcher オブジェクトに定義されているチャネル セッションの有効期間および動作を制御するすべてのプロパティは、検査および変更可能です。 EndpointDispatcher に加えて、これらにはカスタム IChannelInitializer オブジェクト、IChannelListenerServiceHost、および関連付けられた 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()

通信オブジェクトを、直ちに現在の状態から Closing 状態に遷移させます。

(継承元 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()

通信オブジェクトが Closing 状態に遷移しているときに呼び出されます。

(継承元 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

通信オブジェクトが Closing 状態に遷移すると発生します。

(継承元 CommunicationObject)
Faulted

通信オブジェクトが Faulted 状態に遷移すると発生します。

(継承元 CommunicationObject)
Opened

通信オブジェクトが Opened 状態に遷移すると発生します。

(継承元 CommunicationObject)
Opening

通信オブジェクトが Opening 状態に遷移すると発生します。

(継承元 CommunicationObject)

明示的なインターフェイスの実装

IAsyncCommunicationObject.CloseAsync(TimeSpan)

チャネルを受け入れ、それをサービスと関連付けるコンポーネント。

(継承元 CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

チャネルを受け入れ、それをサービスと関連付けるコンポーネント。

(継承元 CommunicationObject)

拡張メソッド

CloseHelperAsync(ICommunicationObject, TimeSpan)

チャネルを受け入れ、それをサービスと関連付けるコンポーネント。

OpenHelperAsync(ICommunicationObject, TimeSpan)

チャネルを受け入れ、それをサービスと関連付けるコンポーネント。

GetInternalCloseTimeout(CommunicationObject)

チャネルを受け入れ、それをサービスと関連付けるコンポーネント。

適用対象