クライアントとサーバー間の双方向通信が必要なシステムがあります。場合によっては、クライアントがサーバーとの通信を開始して、質問をしたり、ステータスをクエリしたり、データを取得したりする必要があります。{反復的なタスク、監視、レポート生成、アラートなどを実行する AI システムと、サーバーと対話できるようにします。} 他の例では、サーバーはステータスの変化またはアラートをクライアントに報告する必要があります。私たちは .NET を使用してシステムを実装しており、さまざまなアーキテクチャを検討してきました。
A) TCP チャネルを開き、低レベルで通信を管理します。これは私たちのニーズを満たしているように見えますが、主に私たちのチームには低レベルの通信プロトコルの経験が不足しているため、かなり不安定でした。
B) 両方のシステムがホストとして機能する .NET リモート処理を使用します。クライアントはサーバーをリモート ホストとして登録し、接続が確立されると、サーバーは先に進み、別のチャネルでクライアントをリモート ホストとして登録します。これは基本的なメッセージングでは問題ないように見えますが、クライアントとサーバーの間で「会話」を維持する必要がある場合があります。このアーキテクチャで複数のクライアントを使用するのは少し難しいようです。
C) 双方向通信を忘れて、ポーリング アーキテクチャを使用して新しいメッセージをサーバーにポーリングします。問題なく動作しますが、過度にチャット システムが作成され、クライアントとサーバー間の「会話」が困難になります。
最善のアプローチについて何か考えはありますか?推奨される別のアプローチはありますか?