.net MEF (Managed Extensibility Framework) と MAF (System.AddIn) の両方を読みましたが、オンライン レビューで混乱しました。
MEF は MAF より新しく、より魅力的に見えますが。MEF を使用して拡張機能を .NET アプリケーションにリンクする方法がわかりません。たとえば、MAF では、以下を含む拡張ロジック全体 (アドイン) を開発できます。
- メイン dll、たとえば X.dll
- X.dll によって参照されるすべての dll
- データベース、一部のテキストファイルなど、X.dll が必要とする外部リソース
その後、ホストは X.dll 内のメソッドを呼び出すだけで、結果を待つことができます。
一方、MEF では、すべての DLL を「プラグイン」などの同じフォルダーに配置する必要があります。したがって、X.dll を検出してリンクするには、「プラグイン」にある必要があります。ホストからの着信要求を完了するために X.dll が必要とするリソースは?
私の本当の質問は次のとおりです。あるチームが、他のチームによって開発された拡張機能に依存するか、単にインターネットからダウンロードしてインストールすることによって処理機能を拡張できるホスト アプリケーションを設計する場合、MEF はそのようなプロジェクトで効果的なテクノロジですか? または、チームは MAF に固執する必要がありますか?
PS:私の質問は、セキュリティの観点からどちらが優れているかではありません...など.テキストのコーパスとヒューリスティック データベースを必要とするスペル チェッカー拡張機能。これら 2 つのリソースは拡張機能に必要ですが、ホスト自体には必要ありません。
さらに、前の例で、X.dll を実行するために Y.dll が必要な場合、y.dll は拡張子ではないため、単純に両方の dll を「Plugins」フォルダに入れることはできません。