0

クライアントとサーバー間の双方向通信が必要なシステムがあります。場合によっては、クライアントがサーバーとの通信を開始して、質問をしたり、ステータスをクエリしたり、データを取得したりする必要があります。{反復的なタスク、監視、レポート生成、アラートなどを実行する AI システムと、サーバーと対話できるようにします。} 他の例では、サーバーはステータスの変化またはアラートをクライアントに報告する必要があります。私たちは .NET を使用してシステムを実装しており、さまざまなアーキテクチャを検討してきました。

A) TCP チャネルを開き、低レベルで通信を管理します。これは私たちのニーズを満たしているように見えますが、主に私たちのチームには低レベルの通信プロトコルの経験が不足しているため、かなり不安定でした。

B) 両方のシステムがホストとして機能する .NET リモート処理を使用します。クライアントはサーバーをリモート ホストとして登録し、接続が確立されると、サーバーは先に進み、別のチャネルでクライアントをリモート ホストとして登録します。これは基本的なメッセージングでは問題ないように見えますが、クライアントとサーバーの間で「会話」を維持する必要がある場合があります。このアーキテクチャで複数のクライアントを使用するのは少し難しいようです。

C) 双方向通信を忘れて、ポーリング アーキテクチャを使用して新しいメッセージをサーバーにポーリングします。問題なく動作しますが、過度にチャット システムが作成され、クライアントとサーバー間の「会話」が困難になります。

最善のアプローチについて何か考えはありますか?推奨される別のアプローチはありますか?

4

4 に答える 4

1

Duplex Services in WCFを見てください。これは、低レベルの配管について心配することなく、必要なものを取得する 1 つの方法かもしれません。

于 2009-06-08T14:58:07.220 に答える
1

私は、このような双方向通信のプロトコルとしてXMPPを使用して、(「概念実証」レベルで、まだ実稼働環境に展開していない) 良い経験をしてきました。主に対話型チャット アプリの観点から考えられていますが、実際には汎用プロトコルであり、.NET 実装が含まれています。Microsoft の代替手段は MSMQ かもしれません。

于 2009-06-08T15:01:32.003 に答える
0

WCF は適切な選択と思われます。クライアント/サーバー チャット アプリケーションを実装する方法を説明する、 CodeProjectに関するかなり優れたチュートリアルがあります。

ここには一連の Web キャストと同じ著者による本もあります

于 2009-06-08T14:59:07.623 に答える