私は非常に一般的な問題へのアプローチを探しています。最近のプライベートプロジェクトでは、単一のGUIからさまざまなアプリケーションを制御したいと考えています。
アイデアをより明確にするために、私のプロジェクトについて少し説明します。さまざまな設定と機能を備えた拡張現実プログラムを作成したいと思います。ビデオはウェブカメラで録画され、ARのグラフィック評価はゲームエンジン(Unrealなど)でプログラムされます。 ARの単一の機能を起動またはシャットダウンできるプログラム用の単一のGUIが必要です。
これはどのように達成できますか?
あなたが考えているのは プラグイン アーキテクチャだと思います。たとえば、ChromeやChrome拡張機能です。
アイデアは、既知の場所にいくつかのパッケージ化されたモジュールを期待するメインプログラムがあり、このパッケージは、メインプログラムが実行時にそれを使用できるように、いくつかのインターフェイス/プロトコルに準拠することがわかっているということです。
メインプログラムの起動時にプラグインをスキャンして、検出されたプラグインをユーザーに表示し、ユーザーが選択したプラグインを有効/無効にすることができます。
プラットフォームが指定されていないため、具体的にするのは難しいです。これをある種のリファレンスとして見ることができます Androidの例 ですが、一般的なプラットフォーム用のプラグイン可能なアーキテクチャリファレンスのタイプを見つけることができるはずです。
拡張現実システムに必要な基本モデルは、イベントベースのアーキテクチャのようです。
この記事 このようなアーキテクチャの基本原則を説明し、イベント処理スタイルを特定します。
このようなイベントベースのアーキテクチャを実装するための実用的な手法はすべて、メッセージベースのシステム、共有メモリ、ソケットベースなどの何らかのメカニズムを含みます [〜#〜] ipc [〜#〜] hocプロトコルまたは標準化されたWebサービスプロトコル)。選択は、OSとパフォーマンスの制約によって異なります。
しかし、1つの疑問が残ります。本当に異なるアプリケーションが必要ですか?そうでない場合は、マルチスレッドアプリケーションを検討する必要があります。これにより、非常に低いレイテンシでデータの共有が容易になり、CPUを最大限に活用できます。コンピューティングを多用する拡張現実モデルの場合、これは本当に興味深い代替手段になる可能性があります。もちろん、このアプローチは、Rafiが言及したプラグインアプローチと互換性があります。