Binding クラス

定義

クライアントとサービスの間の通信に使用するプロトコル、トランスポート、およびメッセージ エンコーダーを指定するバインド要素を格納します。

public ref class Binding abstract : System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
type Binding = class
    interface IDefaultCommunicationTimeouts
Public MustInherit Class Binding
Implements IDefaultCommunicationTimeouts
継承
Binding
派生
実装

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

    // Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open();

    // The service can now be accessed.
    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();
}

注釈

バインド要素のコレクションを表します。各バインド要素は他のエンドポイントとの通信方法を記述しており、チャネル ファクトリ (クライアント側) およびチャネル リスナー (サービス側) に、整合性を保って組み込まれています。 バインドは、プロトコル チャネル、トランスポート チャネル、およびメッセージ エンコーダーに対応するバインド要素のコレクションを格納しています。 プロトコル チャネルに対しては任意の数のバインド要素が存在できますが、個々のトランスポートとメッセージ エンコーダーに対して存在できるバインド要素はただ 1 つだけです。 バインド内には、一般的に 6 層のバインド要素があります。 スタックの最下位のトランスポート バインド要素とエンコーディング バインド要素だけが必須です。 バインドごとにエンコードが必要であるため、エンコードが指定されていない場合は、Windows Communication Foundation (WCF) によって既定のエンコードが自動的に追加されます。 既定では、HTTP および HTTPS トランスポートに対してはテキスト/XML、その他のトランスポートに対してはバイナリです。

各層のオプションの概要を次の表に示します。

レイヤー Options 必須
トランザクション フロー TransactionFlowBindingElement いいえ
[信頼性] ReliableSessionBindingElement いいえ
セキュリティ 同期、非同期、トランスポート レベル いいえ
形状の変更 CompositeDuplexBindingElement いいえ
トランスポートのアップグレード SSL ストリーム、Windows ストリーム、ピア リゾルバー いいえ
エンコード テキスト、バイナリ、MTOM、カスタム はい
トランスポート TCP、名前付きパイプ、HTTP、HTTPS、MSMQ、およびカスタム はい

各バインド要素は、クライアントでのチャネル ファクトリの構築、およびサービスでのチャネル リスナーの構築に対する仕様を提供します。 たとえば、チャネル ファクトリ スタックを作成するときは、バインド内の各バインド要素に対し、スタック内に 1 つのチャネル ファクトリが存在します。 同様のマッピングが、サービス上のスタックでのチャネル リスナーにも適用されます。 これらのエンドポイントの間でチャネル ベースの接続を確立するには、クライアントとサービスの間の整合性が不可欠です。 その結果、各ファクトリとリスナーは、両者を接続するチャネル スタック内の対応するチャネルの送信と受け入れを処理し、これらのチャネルは通信に使用するメッセージを送受信できます。

Binding の各インスタンスには、Name および Namespace があり、合わせてサービスのメタデータ内でそのインスタンスを一意に識別します。 名前または名前空間が指定されていない場合、WCF によって既定値が自動的に追加されます。 既定の名前は で null 、既定の名前空間は です http://tempuri.org/。 バインディングに対するこのユーザー名は、Scheme プロパティによって指定されるプロトコル名とは異なります。 たとえば、HTTP バインドをさらに追加する場合は、それらに自由に名前を付けて、すべてのスキームを "http" に設定できます。 Scheme に基づくアプリケーションまたはマシンの固有のディスパッチはありません。 したがって、既知のプロトコルに対して追加のハンドラーを登録できないという、よくある問題は避けられます。 また、複数のバージョンのバインドの並行使用も、各バージョンに異なる名前を付けることで、簡単に処理できます。

Binding クラスは、長時間リソースを停滞させることによるサービス拒否 (DOS) 攻撃を軽減するために、IDefaultCommunicationTimeouts インターフェイスを実装します。 この実装により、接続の確立と終了や、メッセージの送受信に関連付けられている読み取りおよび書き込み操作についての通信タイムアウト値が指定されます。 これらのタイムアウト値とその既定の操作を取得および設定するプロパティを、次の表に示します。

Timeout プロパティ 既定値
OpenTimeout 1 分
CloseTimeout 1 分
SendTimeout 1 分
ReceiveTimeout 10 分

Binding を継承してバインドを作成するときは、CreateBindingElements をオーバーライドする必要があります。

さらに、独自のバインド要素を定義し、前の表で定義されている層の間のどこにでも挿入できます。 詳細については、CustomBinding クラスを参照してください。

コンストラクター

Binding()

既定の名前と名前空間を使用して、Binding クラスの新しいインスタンスを初期化します。

Binding(String, String)

サービスの指定したバインディングを使用して、Binding クラスの新しいインスタンスを初期化します。

プロパティ

CloseTimeout

接続の終了を待機する時間間隔を取得および設定します。これを超えるとトランスポートで例外が発生します。

MessageVersion

バインディングで構成されるクライアントとサービスが使用するメッセージ バージョンを取得します。

Name

バインディングの名前を取得または設定します。

Namespace

バインドの XML 名前空間を取得または設定します。

OpenTimeout

接続の確立を待機する時間間隔を取得および設定します。これを超えるとトランスポートで例外が発生します。

ReceiveTimeout

アプリケーション メッセージが受信されない間に、接続が非アクティブになってから切断されるまでの時間を取得または設定します。

Scheme

派生クラスとして実装された場合、バインドによって作成されるチャネルおよびリスナー ファクトリが使用するトランスポートを指定する URI スキームを設定します。

SendTimeout

書き込み操作の完了を待機する時間間隔を取得および設定します。これを超えるとトランスポートで例外が発生します。

メソッド

BuildChannelFactory<TChannel>(BindingParameterCollection)

指定した種類のチャネルを作成し、バインド パラメーターのコレクションで指定されている機能を満たすチャネル ファクトリ スタックを、クライアント上に構築します。

BuildChannelFactory<TChannel>(Object[])

指定した種類のチャネルを作成し、オブジェクト配列で指定されている機能を満たすチャネル ファクトリ スタックを、クライアント上に構築します。

BuildChannelListener<TChannel>(BindingParameterCollection)

指定した種類のチャネルを受け入れ、バインド パラメーターのコレクションで指定されている機能を満たすチャネル リスナーを、サービス上に構築します。

BuildChannelListener<TChannel>(Object[])

指定した種類のチャネルを受け入れ、指定した機能を満たすチャネル リスナーを、サービス上に構築します。

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

指定した種類のチャネルを受け入れ、指定した機能を満たすチャネル リスナーを、サービス上に構築します。

BuildChannelListener<TChannel>(Uri, Object[])

指定した種類のチャネルを受け入れ、指定した機能を満たすチャネル リスナーを、サービス上に構築します。

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

指定した種類のチャネルを受け入れ、指定した機能を満たすチャネル リスナーを、サービス上に構築します。

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

指定した種類のチャネルを受け入れ、指定した機能を満たすチャネル リスナーを、サービス上に構築します。

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

指定した種類のチャネルを受け入れ、指定した機能を満たすチャネル リスナーを、サービス上に構築します。

BuildChannelListener<TChannel>(Uri, String, Object[])

指定した種類のチャネルを受け入れ、指定した機能を満たすチャネル リスナーを、サービス上に構築します。

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

指定したバインド パラメーターのコレクションを満たすチャネル ファクトリ スタックを、現在のバインドがクライアント上に構築できるかどうかを示す値を返します。

CanBuildChannelFactory<TChannel>(Object[])

オブジェクト配列で指定した要件を満たすチャネル ファクトリ スタックを、現在のバインドがクライアント上に構築できるかどうかを示す値を返します。

CanBuildChannelListener<TChannel>(BindingParameterCollection)

指定したバインド パラメーターのコレクションを満たすチャネル リスナー スタックを、現在のバインドがサービス上に構築できるかどうかを示す値を返します。

CanBuildChannelListener<TChannel>(Object[])

オブジェクトの配列で指定した条件を満たすチャネル リスナー スタックを、現在のバインドがサービス上に構築できるかどうかを示す値を返します。

CreateBindingElements()

派生クラスでオーバーライドされると、現在のバインドの一部であるバインド要素を格納するコレクションを作成します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetProperty<T>(BindingParameterCollection)

バインド スタックの適切な層から、要求のあった型指定されたオブジェクト (ある場合) を返します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ShouldSerializeName()

バインドの名前をシリアル化する必要があるかどうかを示す値を返します。

ShouldSerializeNamespace()

バインドの名前空間をシリアル化する必要があるかどうかを示す値を返します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象