次の方法で共有


BindingElement クラス

定義

送信および受信メッセージの処理に使用されるさまざまな種類のチャネルのチャネル ファクトリとチャネル リスナーを作成するバインドの要素。

public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
継承
BindingElement
派生

次の例では、トランスポート バインド要素をカスタム バインドに追加した後、受信メッセージを受け入れることのできるチャネル リスナーを作成する方法を示します。

CustomBinding binding = new CustomBinding();
binding.Elements.Add(new HttpTransportBindingElement());
BindingParameterCollection paramCollection = new BindingParameterCollection();
IChannelListener<IReplyChannel> listener = binding.BuildChannelListener<IReplyChannel>
    (new Uri("http://localhost:8000/ChannelApp"), paramCollection);

listener.Open();
IReplyChannel channel = listener.AcceptChannel();
Console.WriteLine("Listening for messages");
channel.Open();
RequestContext request = channel.ReceiveRequest();
Message msg = request.RequestMessage;
Console.WriteLine("Message Received");
Console.WriteLine("Message Action: {0}", msg.Headers.Action);

if (msg.Headers.Action == "hello")
{
    Message reply = Message.CreateMessage(MessageVersion.Default, "wcf");
    request.Reply(reply);
}

msg.Close();
channel.Close();
listener.Close();
Dim binding As New CustomBinding()
binding.Elements.Add(New HttpTransportBindingElement())
Dim paramCollection As New BindingParameterCollection()

Dim listener As IChannelListener(Of IReplyChannel)
listener = binding.BuildChannelListener(Of IReplyChannel)(New Uri("http://localhost/channelApp"), paramCollection)

listener.Open()
Dim channel As IReplyChannel = listener.AcceptChannel()
Console.WriteLine("Listening for messages")
channel.Open()
Dim request As RequestContext = channel.ReceiveRequest()
Dim msg As Message = request.RequestMessage
Console.WriteLine("Message Received")
Console.WriteLine("Message Action: {0}", msg.Headers.Action)

If (msg.Headers.Action = "hello") Then

    Dim reply As Message = Message.CreateMessage(MessageVersion.Default, "wcf")
    request.Reply(reply)
End If

msg.Close()
channel.Close()
listener.Close()

注釈

バインドは、この抽象基本クラスを継承するバインド要素を順番に並べたセットで構成されます。 TransportBindingElement クラスは BindingElement クラスから継承されます。

チャネル モデルだけを使用する場合は、トランスポートに対するバインドとバインド要素の作成は省略できます。 チャネル ファクトリとリスナーがパブリックになっていれば、これらを使用して、必要なことをすべて行うことができます。

Windows Communication Foundation (WCF) サービス モデルでは、バインディングを使用してチャネル スタックを作成するファクトリ パターンが使用されます。 WCF サービス モデルを使用する場合は、トランスポート バインド要素を使用する必要があります。 このバインド要素をバインド内に配置することをお勧めします (この方法を使用すると、トランスポート用に独自のカスタム バインドを作成する必要がありません)。 最良の方法は、バインドとバインド要素の両方を作成し、チャネル ファクトリとリスナーをアセンブリの内部に隠すことです。

送信側では、バインドを使用して IChannelFactory が作成されます。これにより、次々にチャネル スタックが作成され、スタック内の最上位チャネルへの参照が返されます。 アプリケーションは、このチャネルを使用して、メッセージを送信できます。

同様に、受信側では、バインドを使用して、入力メッセージをリッスンする IChannelListener を作成します。 IChannelListener では、チャネル スタックを作成し、最上位チャネルへのアプリケーション参照を渡すことによって、リッスンしているアプリケーションにメッセージが提供されます。 アプリケーションは、このチャネルを使用して、入力メッセージを受信します。

注意

暗号化する必要のあるメッセージ ヘッダーを追加している場合、ChannelProtectionRequirements を求められたときに、GetProperty<T>(BindingContext) メソッドから、要件と共に ChannelProtectionRequirements インスタンスを返す必要があります。

コンストラクター

BindingElement()

BindingElement クラスの新しいインスタンスを初期化します。

BindingElement(BindingElement)

指定したバインド要素を使用して、BindingElement クラスの新しいインスタンスを初期化します。

メソッド

BuildChannelFactory<TChannel>(BindingContext)

指定した種類のチャネルを生成するよう、バインド コンテキストからチャネル ファクトリを初期化します。

BuildChannelListener<TChannel>(BindingContext)

指定した種類のチャネルを受け入れるよう、バインディング コンテキストからチャネル リスナーを初期化します。

CanBuildChannelFactory<TChannel>(BindingContext)

指定した種類のチャネルに対するチャネル ファクトリをバインド要素が作成できるかどうかを示す値を返します。

CanBuildChannelListener<TChannel>(BindingContext)

指定した種類のチャネルに対するリスナーをバインド要素が作成できるかどうかを示す値を返します。

Clone()

派生クラスでオーバーライドされると、バインド要素オブジェクトのコピーを返します。

Equals(Object)

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

(継承元 Object)
GetHashCode()

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

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

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

GetType()

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

(継承元 Object)
MemberwiseClone()

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

(継承元 Object)
ToString()

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

(継承元 Object)

適用対象