私の開発作業で繰り返されるテーマは、社内プラグイン アーキテクチャの使用または作成です。構成ファイル (XML、.conf など)、継承フレームワーク、データベース情報、ライブラリなど、さまざまな方法でアプローチするのを見てきました。私の経験では:
- データベースは、構成情報を保存するのに最適な場所ではありません。特に、データが混在している場合はそうです。
- 継承階層でこれを試みるには、コーディングするプラグインに関する知識が必要です。つまり、プラグイン アーキテクチャはそれほど動的ではありません。
- 構成ファイルは単純な情報を提供するのには適していますが、より複雑な動作を処理することはできません
- ライブラリはうまく機能しているように見えますが、一方向の依存関係は慎重に作成する必要があります。
私は、これまで取り組んできたさまざまなアーキテクチャから学びたいと考えているため、コミュニティからの提案も求めています。SOLID プラグイン アーキテクチャをどのように実装しましたか? あなたの最悪の失敗 (またはあなたが見た最悪の失敗) は何ですか? 新しいプラグイン アーキテクチャを実装する場合、どうしますか? あなたが関わった SDK またはオープン ソース プロジェクトには、優れたアーキテクチャの最良の例がありますか?
私が自分で見つけたいくつかの例:
- Perl のModule::PlugableとPerl での依存性注入のためのIOC
- 依存性注入のためのさまざまな Spring フレームワーク(Java、.NET、Python)。
- Javaのリストを含むSO の質問( Service Provider Interfacesを含む)
- Dr. Dobbsの記事を指している C++のSO の質問
- ASP.NET MVC の特定のプラグインのアイデアに関するSO の質問
これらの例は、さまざまな言語の強みを発揮しているようです。優れたプラグイン アーキテクチャは必ず言語に結び付けられていますか? ツールを使用してプラグイン アーキテクチャを作成するのが最善ですか、それとも独自の次のモデルで行うのが最善ですか?