サーバーと WinForms デスクトップ アプリケーションでホストされる WCF サービスがあります。私は彼らの間で双方向通信を実装したいと思っています。これについての最善の方法はどれですか?
私はいくつか調べてみましたが、よく言及されている 2 つの方法は、Web ソケットを使用してコールバック コントラクターを実装することです。
これらの方法のどれを採用するか、またはより良い方法があるかどうかについて、いくつかのアドバイスとガイダンスを求めています。
私は学校のプロジェクトに Callback Contract を使用しましたが、その目的をうまく果たしました。適切に実装されていれば、サーバーとクライアントの間であらゆる種類のデータを転送できます。コールバックはコントラクトと同じ方法で定義されます。これは非常に単純で、Code Project でいくつかの例を探すことをお勧めします。このCallback example のように、最小限のコードで説明されています。また、ほとんどの書籍では、サーバーからの応答の例として Callback が使用されています。:)
この質問に winforms のタグを付けると、おそらく Web ソケットとの関連性が低くなります。
コールバックを使用できます (モードの詳細についてはDuplexを探してください)。
ただし、両側に複雑な機能があり、クライアントのファイアウォールが問題にならない場合は、2 つの wcf "サービス" を作成できます。1 つはクライアント マシンで実行され、もう 1 つはサーバーで実行されます。これにより、さらに柔軟に対応できます (サーバーの再起動、クライアントの再起動などの問題について)。