2

私のプログラム:

  1. 異なるクライアントがサーバーに接続 (ユーザー ログイン)

  2. 次に、サーバーは 小さなデータ (1KB 未満) をすべてのサーバーに毎秒 (またはそれ以下)プッシュし始めます。

私の質問:

  1. どのサービスを使用すればよいですか? WCFは正しいものですか?
  2. WCFの場合、どのプロトコルを使用しますか? http、TCP ... ?

最初は、WCF が適していると思いました。基本的なシンプルを実装しました。その後、突然、これがクライアントからサーバーへの接続にすぎないことに気付きました。サーバーはクライアントと同じ方法で通信できません。クライアントでもサービスを開始しない限り、サーバーになります。

最後に、私が言及した速度要因と使用する適切なプロトコルを考慮して、サーバーとクライアント間のこの双方向通信をどのように実装する必要があるかを尋ねています。

アップデート

わかりました、いくつかの詳細を追加させてください。これは実際には、教師クライアント < > サーバー < > 生徒クライアント通信プログラムです。Teacher は、WPF のinkCanvas に何かを描画します。この図面は、すべての生徒のクライアントにプッシュされることになっています。そのため、このデータはサーバーによってプッシュされる必要があります。通信は双方向でなければなりません。

4

4 に答える 4

1

2 つの WPF アプリケーション間で通信するために、まったく同じ機能を実装しました。あなたの質問に答えるには、はい、私の意見では、WCF が最善の方法です。WCF を使用して一方向通信を既に実装していると思います。サーバーがクライアントとやり取りできるようにするには、コールバックを実装する必要があります。まず、こちらの記事をご覧ください。

于 2013-04-28T16:55:03.133 に答える
0

サーバーがクライアントにデータをプッシュするのではなく、クライアントにサーバーからデータをプルさせる方がよいでしょう。これはデュプレックスでも可能ですが、ほとんどの ISP またはサーバー環境では、セキュリティ上の理由からファイアウォール内からの送信メッセージが許可されないため、あまりお勧めできません。

これが私の提案です:

サーバーがクライアントにプッシュするのではなく、クライアントアプリケーションが時々サーバーからプルするようにします。この方法では、サーバーは一定の接続を維持する必要がありません。これは、サーバーが拡張されず、さらに重要なことに、1 つのアプリケーション (つまりサーバー) からの通信接続が非常に高価なリソースであるためです。

アプローチを再設計します。

于 2013-04-28T16:25:30.143 に答える
0

net.tcp を使用して Windows サービスでホストされる WCF サーバーを作成しましたが、データを複数のクライアントに確実にプッシュできます。このフレームワークは、リッスン、受け入れ、および複数の接続の多くを実行するため、多くのメリットが得られます。

あなたのシナリオで難しいのは、教えるクライアントからのデータを生徒のクライアントと共有することです。私の知る限り、あるクライアントサーバー接続から別のクライアントサーバー接続にデータを転送する組み込みの方法はありません。

素朴だが簡単な方法の 1 つは、教師のデータを一時的な場所 (ファイルやデータベースのようなもので、ミューテックス ロックのようなもの) に保存し、生徒にデータを転送するときに一時的な場所から読み取ることです。

または、アーキテクチャをPeer-To-Peerに変更できます。

于 2013-04-28T17:06:47.517 に答える