7

完全にモジュールベースのシステムを開発するつもりです。システムベースには、プラグインを見つけて起動し、それらのモジュールが通信する方法を提供できるようにするためのサポートが必要です。理想的には、新しいモジュールを自由に挿入し、未使用のモジュールを自由に削除できるようにする必要があります。モジュールは、利用可能な場合は互いの機能を使用できる必要があります。

このシステムは、さまざまなモジュールで多くのことが発生するシミュレーション システムの基礎として使用する必要があり、他のモジュールはそれに基づいて何かを実行する必要があります。

私が開発しようとしているシステムは Java になります。私の見方では、各モジュールのサブフォルダーを含むフォルダーを作成する予定です。このフォルダーには、名前、発生する可能性のあるイベントなどの情報を含むモジュールを説明する XML が含まれています。この問題を解決するには、カスタム ClassLoader を作成する必要があると思います。

問題は、私のアイデアが実際に通用するかどうかわからないということです。もちろん、実用的なプロトタイプを構築するつもりです。しかし、私はこれまで完全にモジュール化されたシステムに取り組んだことがなく、この問題を解決する最善の方法が何であるかがよくわかりません。

どこから始めればよいですか?この種のシステムの開発中によくある問題や落とし穴はありますか? 分離を維持しながらモジュールを相互に通信させるにはどうすればよいですか (つまり、モジュールを削除しても、それを使用していた別のモジュールは正常なままです)。どこから始めるべきかについてのアイデアを得ることができる、私が読むことができるガイド、仕様、または記事はありますか? それらが Java に基づいていればもっと良いのですが、これは要件ではありません。なぜなら、私が今探しているのはコードではなくアイデアだからです。

フィードバックをお待ちしております。

4

4 に答える 4

10

あなたは間違いなくOSGiを見るべきです。Javaのコンポーネント/プラグイン メカニズムを目指しています。これにより、コードを (いわゆるバンドルで) モジュール化し、実行時にバンドルを更新できます。実装パッケージを他のバンドルによる望ましくないアクセスから完全に隠すこともできます。API のみを提供します。

Eclipse は、OSGi を実装して使用した最初の主要なオープンソース プロジェクトでしたが、OSGi を十分に活用していませんでした (プラグインのインストールや再起動なしの更新はありません)。ただし、ゼロから始めると、プラグイン システムの非常に優れたフレームワークが得られます。

Apache Felixは完全なオープンソース実装です ( Eclipse Equinoxなど、他にもあります)。

于 2008-09-16T22:42:44.037 に答える
2

あまり詳しく説明しなくても、Springに目を向ける必要があります。また、OSGI または Eclipse RCP フレームワークに精通していれば、覚えておく必要のあるいくつかの基本的な概念も得られます。

于 2008-09-16T22:39:27.540 に答える
2

もう 1 つのオプションは、Java 1.6 で追加され たServiceLoaderです。

于 2008-09-16T23:12:46.803 に答える
1

それを行うには多くの方法がありますが、リフレクションを使用することで簡単に行うことができます。file の XML ファイル名を記述します (これは実際にはクラスになります)。それがどのタイプであるかを確認し、リフレクションで作成し直すことができます。クラスは、外部ファイル/クラスが実際にモジュールの 1 つであるかどうかを確認できる共通のインターフェイスを持つことができます。Reflexionに関する情報を次に示します。

モジュール/プラグインを作成するための最初の適切なステップを提供する、この SourceForge one link textのような事前コード化されたフレームワークを使用することもできます。

于 2008-09-16T22:40:39.860 に答える