基本的なプラグインアーキテクチャを使用するために開発したプログラムがあります。事実上、プログラムがロードされると、リフレクションを使用して、特定のインターフェイスに適合するdllをディレクトリで検索し、それらをロードします。現在使用されるプラグインのリストがすべてであるように見えます。
したがって、dllファイルをチェックする私の現在の慣行はまだベストプラクティスですか、それとも各dllをロードするためのより良い方法がありますか?
ありがとう。
基本的なプラグインアーキテクチャを使用するために開発したプログラムがあります。事実上、プログラムがロードされると、リフレクションを使用して、特定のインターフェイスに適合するdllをディレクトリで検索し、それらをロードします。現在使用されるプラグインのリストがすべてであるように見えます。
したがって、dllファイルをチェックする私の現在の慣行はまだベストプラクティスですか、それとも各dllをロードするためのより良い方法がありますか?
ありがとう。
あなたの質問から、あなたはあなた自身の種類のプラグインアーキテクチャを構築した(または構築しようとしている)ように見えます。.NETにはすでに探しているものがあるので、それほど良い考えではありません。
.NETには、プラグインを許可する2つの方法があります。
(1) System.Addin-私はそれについてほとんど聞いたり読んだりしていません。ただし、ここでいくつかの記事を見ることができます
。MSDNマガジンのSystem.Addinの記事<-2007年の
System.AddinツールとCodeplexの例に注意してください。
(2)さて、MEF、MEFは素晴らしいです!プラグインアーキテクチャをシステムに導入するための優れた簡単な方法です。MEFもSilverlightの一部であり、VisualStudio2010はそれを使用します。プラグインを使用してdllを動的にロードする必要があることがわかります。MEFを使用すると、ソフトウェアでパッケージ化するクラスを独自のアセンブリ(.exe)に含めることができるようにアプリを設計でき、MEFを使用して動的に検索できます。必要なクラスを持つ将来のdll。MEFでは、手順全体が非常に簡単です。
MikeTaultyはMEFで素晴らしいビデオシリーズを持っています
CodeprojectのMEF記事-パート 1CodeprojectのMEF記事-パート2
個人的には、MEFを使用する必要があると思います。その新しい、簡単で、ビジュアルスタジオでもMEFを使用しているので、次の内容を確認できます
。MEFとMAFのどちらを選択するか(System.AddIn)
FileSystemWatcherクラスを使用して、ディレクトリの変更を監視できます。
publicvoid CreateWatcher()
{
//Create a new FileSystemWatcher.
FileSystemWatcher watcher = newFileSystemWatcher();
//Set the filter to only catch DLL files.
watcher.Filter = "*.dll";
//Subscribe to the Created event.
watcher.Created += new
FileSystemEventHandler(watcher_FileCreated);
//Set the path to C:\Temp\
watcher.Path = @"C:\Temp\";
//Enable the FileSystemWatcher events.
watcher.EnableRaisingEvents = true;
}
それからそれはプラグアンドプレイの事件になります:)
MEFを参照してください 。これは、プラグインデザインを作成するための非常に強力なアーキテクチャソリューションです。
これはいい。または、構成ファイルにロードするアセンブリを定義することもできます。そのフォルダーに多数のDLLがあるとアプリケーションに影響があり、誰かがDLLをそのフォルダーにプッシュする可能性があるため、セキュリティ上の問題が発生する可能性があります。
あなたのデザインは大丈夫だと思います。
シナリオでは、MEFとそのDirectoryCatalogを使用して、特定のフォルダーからプラグインをロードすることをお勧めします。MEFの再構成機能のおかげで、ファイルシステムウォッチャーを追加で構成し、フォルダーの変更時にDirectoryCatalogを更新すると、実行時に新しいプラグインをプルできるようになります。ところで、私がMEFトークの1つで行った素晴らしい再構成サンプルを見ることができます。