基本的なオンラインの共同 IDE 用の Java アプリケーションを構築しています。このアプリケーションでは、クライアントはサーバーにコマンドを送信し、サーバーはこれらのコマンドをシリアル化し、結果を各クライアントに返します。コードのパフォーマンス、効率、および単純さを最大化するアーキテクチャ スタイルを決定しようとしています。
現在、私はクライアント サーバー モデルとパブリッシュ サブスクライブ モデルの一種のハイブリッドを使用しています。クライアントは、コマンド (つまり、コードの編集、リモート コンパイルなどの要求) をサーバーに送信します。特定のクライアント コマンドの場合、クライアント側のファイルは、サーバーがコマンドに応答するまで実際には変更されません。このプロジェクトの主要な目標の 1 つは、IDE でリアルタイムの共同作業を可能にすることであるため、キーストロークが入力されるたびにクライアント コマンドが送信されます。これはクライアントサーバーの側面です。
ただし、クライアントは他のクライアントからリレーされたイベントも受信する必要があるため、純粋なクライアント/サーバーのセットアップではありません。ExecutorService クラスを使用して、このパブリッシュ/サブスクライブ動作を実装しています。
私の質問は、このようなアプリケーションに対応する特定のアーキテクチャ スタイルはありますか? アプリケーションの目標を達成するための別のアプローチはありますか? それとも、私はすでに最高のアーキテクチャ スタイルを使用していますか?