System.ServiceModel.Channel ...


.NET Framework クラス ライブラリ
Binding クラス

更新 : 2007 年 11 月

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

名前空間 :  System.ServiceModel.Channels
アセンブリ :  System.ServiceModel (System.ServiceModel.dll 内)
構文

Visual Basic (宣言)
Public MustInherit Class Binding _
    Implements IDefaultCommunicationTimeouts
Visual Basic (使用法)
Dim instance As Binding
C#
public abstract class Binding : IDefaultCommunicationTimeouts
Visual C++
public ref class Binding abstract : IDefaultCommunicationTimeouts
J#
public abstract class Binding implements IDefaultCommunicationTimeouts
JScript
public abstract class Binding implements IDefaultCommunicationTimeouts
解説

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

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

オプション

必須

トランザクション フロー

TransactionFlowBindingElement

×

信頼性

ReliableSessionBindingElement

×

セキュリティ

同期、非同期、トランスポート レベル

×

形状の変更

CompositeDuplexBindingElement

×

トランスポートのアップグレード

SSL ストリーム、Windows ストリーム、ピア リゾルバ

×

エンコーディング

テキスト、バイナリ、MTOM、カスタム

トランスポート

TCP、名前付きパイプ、HTTP、HTTPS、MSMQ、およびカスタム

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

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

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

Timeout プロパティ

既定値

OpenTimeout

1 分

CloseTimeout

1 分

SendTimeout

1 分

ReceiveTimeout

10 分

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

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


C#
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();
}
継承階層

System..::.Object
  System.ServiceModel.Channels..::.Binding
    System.ServiceModel..::.BasicHttpBinding
    System.ServiceModel.Channels..::.CustomBinding
    System.ServiceModel..::.MsmqBindingBase
    System.ServiceModel..::.NetNamedPipeBinding
    System.ServiceModel..::.NetPeerTcpBinding
    System.ServiceModel..::.NetTcpBinding
    System.ServiceModel..::.WebHttpBinding
    System.ServiceModel..::.WSDualHttpBinding
    System.ServiceModel..::.WSHttpBindingBase
スレッド セーフ

この型のすべてのパブリック static (Visual Basic では Shared) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォーム

Windows Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
バージョン情報

.NET Framework

サポート対象 : 3.5、3.0

.NET Compact Framework

サポート対象 : 3.5
参照

参照

タグ :


Page view tracker