私はWCFの初心者であり、プロジェクトを開始するためにいくつかの支援が必要です。
インターネットを介して複数のクライアントと通信(メッセージングシステム)する必要があるマネージドアプリケーション(サーバー)があります。その逆も同様です。
これを達成するための最良のアプローチは何ですか?wsDualBindingを使用していますか?
アップデート
代わりにNetTcpBindingモードを使用することにしました。
私はWCFの初心者であり、プロジェクトを開始するためにいくつかの支援が必要です。
インターネットを介して複数のクライアントと通信(メッセージングシステム)する必要があるマネージドアプリケーション(サーバー)があります。その逆も同様です。
これを達成するための最良のアプローチは何ですか?wsDualBindingを使用していますか?
アップデート
代わりにNetTcpBindingモードを使用することにしました。
これは、サービスが公開する必要のある機能と、サポートする必要のあるクライアントのタイプによって異なります。HTTPベースのバインディングはどれもインターネット上で機能しますが、それは単にデータのエンコード方法の問題です。
組み込みのバインディングとそれらがサポートするものの概要は、http://msdn.microsoft.com/en-us/library/ms731092.aspxにあります。
しかし、最も一般的なものは次のとおりです。
デュアルバインディングについて具体的に質問したので:
サーバーからクライアントへのコールバックを作成できる必要があるアプリケーションを作成している場合は、デュアルバインディングが実際の唯一のオプションです。ただし、チャットについて具体的におっしゃっていたので、デュアルチャネルサービスはあまりうまく機能しないと思います。
WCFでコールバックが機能する方法は、クライアントがデュアルチャネルを使用してサービスを呼び出し、コールバックインターフェイスの実装を提供する必要があることです。サーバーはこれを使用して、サービスメソッドの呼び出し中にクライアントを呼び出すことができます。コールバックコンテキストはサービス呼び出しごとであるため、その呼び出しが返されると、無効になります。つまり、サーバーはクライアントを非同期的に「呼び出す」ことはできず、クライアントがサーバーを「ポーリング」するのを待つ必要があります。そして、あなたがそれをするつもりなら、あなたはもうコールバックを本当に必要としません。
正直なところ、インタラクティブな双方向チャットアプリケーションにWCFを使用することはないと思いますが、そのための2つの可能なオプションを考えることができます。
WSDualHttpBinding
インターネットには適していません。コールバックは、ファイアウォールとNASの制限がないローカルネットワーク(イントラネット)でのみうまく機能します。
詳細については、この投稿を参照してください。
wsDualHttpBindingを使用してインターネット経由でWCFサービスに接続するとタイムアウトします
WsHttpBinding
サーバー間の通信を設定する場合に使用します(WPFで機能するはずです)。
WebHttpBinding
Javascriptのデータを使用する場合に使用します。