2011-02-01 8 views
0

私は、次のシナリオがあります。WCFアーキテクチャ質問

WCFホストサーバ< - 私も持っている> WCFクライアント2

- > WCFラップトップクライアント< - - に接続されたネットワークをに接続しますWCF HOST SERVERは、WCF HOST SERVERが存在するサーバーマシン上にUIを持っています。このクライアントは、HOST SERVER上のサービスを呼び出します。

私は接続されたWCF LAPTOP CLIENTSを一覧表示するためにWCF HOST CLIENTを接続しました。 私はデュプレックス接続を使用しています。そのため、接続されたラップトップクライアントのうちの1つをダブルクリックすると、デュプレックスシャネルが選択されたWCFラップトップクライアントに返信されます。

しかし、文字列メッセージの代わりに、大規模なデータファイルをWCFのラップトップクライアントにストリーミングする必要があります。デュプレックスはストリーミングを許可しないため、コールバックチャネルを使用してストリーミングすることはできません。

注:このためにNetTcpBindingを使用する必要があります。

すべてのWCFラップトップクライアントは、同じIPとPORTを使用します。

そこで問題は、私はWCFのホストクライアントのUIに接続されたラップトップを選択することができる方法で、バック選択laptlopにストリームオブジェクトを送信しますか?コールバックチャネルはラップトップがどこにあるかを知っているので、その特定のラップトップに新しいwcf接続(または新しいソケット接続)を開くために何とかその情報を使用できますか?私はGUIDを使用して各ラップトップをWCF HOST CLIENTに登録し、それを使用してどのWCF LAPTOP CLIENTが文字列メッセージを返すかを決定します。

私が試したこと: WCF LAPTOP CLIENTでコールバックメッセージを使用して、HOST SERVERから別のサービスを呼び出そうとしました。これは正常に動作し、HOST SERVERから特定のラップトップクライアントに文字列メッセージを返しますが、契約の不一致エラーが発生するため、バイトデータを返すことができません。

大きなファイルをサーバーからラップトップに送信し、そのファイルをネットワークではなくラップトップにのみ接続されているWCF CLIENT 2に転送するだけです。 WCFのクライアント2は、実際にXPが入った小さな箱です。ファイルを送信するラップトップが分からない限り、すべてのラップトップがそれを受信し、選択したラップトップのみでファイルを受信し、接続されたボックスに転送する必要があります。私はラップトップとボックス間の転送を行うためにソケット接続を使用しています。

洞察または助けていただければ幸いです。

答えて

0

ストリーミングを許可するサーバー側で別のサービスをホストすることもできます。他のサービスを使用してダウンロードを行うには、デュプレックスチャネル経由でラップトップにメッセージを送信し、場所とある種の識別子を付けてください。