2011-12-08 4 views
0

私はPollingDuplexが私の問題のために行く正しい方法であるかどうか把握しようとしています。Silverlightクライアント通知のPollingDuplexは正しいですか?

ここに私のシナリオです: 1.サードパーティのアプリケーションは、クライアントのIPアドレスを持つUDPパケットをサーバーアプリケーションに送信します。 2.サーバーアプリケーションは、指定されたクライアントに通知し、何らかのデータを送信する必要があります。

クライアントはSilverlightアプリケーションです。

私はいくつかのガイドとサンプルコード(http://petermcg.wordpress.com/2008/09/03/silverlight-polling-duplex-part-1-architecture/)を見てきましたが、私はしませんPollingDuplexを使用してクライアントがサーバー上でどのように識別されているかを理解する。私はクライアントがサーバーに登録し、メッセージを継続的にポーリングすることを理解しています。適切なクライアントだけがそのクライアントに指定されたメッセージを受け取るようにするにはどうすればよいですか?つまり、サーバー上のメッセージをすべてのポーリングクライアントにブロードキャストするのではなく、1つの特定のクライアントにのみ送信するようにしてください。

ご迷惑をおかけして申し訳ありません。

答えて

1

Net.TCPとHttpDuplexBindingのどちらを使用していても、クライアントはOperationContext.Current.Channel.SessionIdで識別できます。具体的には、WCFがOperationContext.Current.GetCallbackChannel<IMyCustomServiceInterface>()を使用して話すために使用する実際のチャンネルを取得できます。それらをメモリに格納することができます。おそらく、クライアントから渡された他の識別子に関連付けられています。また、問題のクライアントと通信する必要がある場合(たとえば、UDPパケットのデータを渡すなど)その特定の格納されたチャネル。クライアントに通知されます。私は特にその癖や安定性とパフォーマンスの問題とは別に、HttpDuplexBindingをお勧めしませんしながら、ということに注意してください

、それべきあなたが、そしてNet.TCPとまったく同じようにやっている何のため作品。クライアントは技術的にサーバーを "ポーリング"しますが、それはあなたから隠されています。サーバー上で知っていることは、特定のチャンネルでメソッドを呼び出すことだけです。基になるバインディングコードは、適切なクライアントが通知を受け取れるようにすることに注意します。

0

ポーリングデュプレックスは、実際にはSilverlightのみに存在する完全なクライアントサイドの実装です(通常の.NETフレームワークバージョンはありません。ただし、Microsoftの独自のコンサルティングサービスがCodeplexのハイプロファイルクライアント向けに開発されています)。サーバー側には特別なことは何もありません。

これは実際にマイクロソフトが独自に制作したものではありません。 http://forums.silverlight.net/p/89970/239380.aspx

セッションでTCPを使用して独自のクライアント側のポーリングメカニズムを使用する方がよい場合があります(よりスケーラブルな)真の二重サポートを提供するSilverlight 4(接続はステートレスではないためtrueプッシュ通知をサポートするため): http://www.silverlightshow.net/items/WCF-NET.TCP-Protocol-in-Silverlight-4.aspx

+0

Net.TCPを使用する提案を2番目にします。私たちはHttpPollingDuplexバインディングで多くの時間を費やしていましたが、それが機能するには多かれ少なかれ、非常に脆弱であり、フォールトへの接続に多くの時間がかかったようには思えませんでした。 Net.TCP WCFバインディングに切り替えると、私たちはもっと幸せになりました。 HttpPollingDuplexを使用する実際の理由は2つだけです。(1)セキュリティで保護された接続(SSLなど)が必要な場合。または(2)ポート4502-4534 + 943が開いていることに依存することはできません。 –

+0

私はPollingDuplexがフレークであることに同意します。 – Gilles

関連する問題