2009-03-06 9 views
2

通常、WCF TCPチャネルはホストに接続し、その上でメソッド呼び出しを行うことができます。WCFの "reverse" tcpチャネルを作成することは可能ですか?

私はクライアントへのアウトバウンド接続を作成したいと思いますが、一度接続が確立されると、クライアントは従来の接続のように自分のサービスに対してメソッド呼び出しを行うことができます。

は、私は、これはカスタムチャネルのいくつかの種類があると思われるが、 a)は、これはすでに bは行われていた場合、私がしようとすると

注意を避ける必要があります任意の落とし穴があったかどうか)疑問に思った - 私はありませんことをデュプレックススタイルのコールバックについて話しているのではなく、クライアントとサーバが、従来のスタイルの会話をして、標準のwcfディスパッチャを介してクライアントの要求に応答する場所 - クライアントではなくサーバである。

Sizは、デュプレックス契約を使用するのと同じくらい簡単だと示唆しています。わずかに要件を拡張する: a)クライアントはサーバーへの接続を禁止されています。したがって、デュプレックスチャネルが別個のtcp接続を確立すると、これは動作しません。私は自分のテストから、tcpの下で接続を発信しているとは思っていません(だれでも確認できますか?)

b)クライアントが "コールバック契約"メカニズムリバース接続を設定することは、それらをすべてセットアップするために多くの「登録」スタイルの呼び出しが必要になるため、扱いにくいものになります。理想的には、私は一度に複数のサービスを設定したいと思っています - これはこのアプローチを使って可能ですか?

答えて

3

MSDN hereをご覧ください。 NetTcpBindingは、デュプレックス通信をサポートします。

あなたのケースでは、WCF用語にマッピングすると、すべてのクライアントが実際にサービスをホストし、ホストは実際には複数のホストに接続するクライアントになります。デュプレックスチャネルを使用すると、両方向にメッセージを送信できます。

デュプレックス通信は、コールバック機能ではなく、契約全体を意味します。クライアントがホストへのデュプレックス接続を開くと、コールバックコントラクトハンドルに沿ってサーバーからの着信コールをリッスンする独自のサーバーの実行が終了します。クライアント - >サーバーまたはサーバー - >クライアントに送信されるすべてのメッセージは、すべての標準WCFインフラストラクチャを経由します。

これは正確にあなたの質問に答えるわけではありません。ただし、任意のチャネルを作成するには、最初に何らかの種類のサーバーに接続するために接続イニシエータが必要です。したがって、これを行う最も簡単な方法はデュプレックス接続です。

+0

私が理解しているように、デュプレックスは単にコールバック機能を提供できることを意味します。私はコールバックについて話すのではなく、クライアントがコミュニケーションを促進し、通常のディスパッチングなどに参加できるようにすることです。 –

関連する問題