.NET 3.5 C# デスクトップ アプリケーションを開発しています。プラグインを介して拡張可能である必要があります。
MEF と Mono.AddIn の違いについて説明し、情報に基づいた決定を下すのに役立つ記事などはありますか?
それとも、これら両方のフレームワークの経験があり、それらについてコメントできますか?
ありがとう、パトリック
.NET 3.5 C# デスクトップ アプリケーションを開発しています。プラグインを介して拡張可能である必要があります。
MEF と Mono.AddIn の違いについて説明し、情報に基づいた決定を下すのに役立つ記事などはありますか?
それとも、これら両方のフレームワークの経験があり、それらについてコメントできますか?
ありがとう、パトリック
[注: 私は Mono.Addins を使用する MonoDevelop に取り組んでいますが、先週、MEF チームの Glenn Block と MEF と Mono.Addins の違いについて詳しく説明しました]
MEF はコードの作成に基づいていますが、基礎となる抽象化は非常に柔軟です。対照的に、Mono.Addins はメタデータのツリーに基づいており、データ/メタデータ/コードを定義の豊富なスキーマにプラグインできるため、拡張機能でデータ/メタデータとコードを追加できます。
Mono.Addins は、すぐに使用できるアドイン管理/パッケージ化/リポジトリ/更新システムを提供します。MEF の場合、この時点で独自にビルドする必要があります。
MEF の参入障壁はわずかに低く、使いやすさと基礎となる抽象化に多くの設計作業が費やされています。さらに、これは .NET 4 の一部であるため、.NET 4 を使用して開発しているユーザーのコミュニティがはるかに大きくなります。
この時点で、データ/メタデータとコードをプラグインする必要があり、既製のパッケージング システムが必要な場合は、Mono.Addins をお勧めします。それ以外の場合は MEF をお勧めします。今後、Mono.Addins の機能は MEF に実装される可能性が高いため、MEF への移行パスが存在する可能性があります。
Hanselminutes Show #181では、Mono.AddIns とそれがもたらすものについての議論があると思います。
Web を精査しているときに、これら 2 つのフレームワークが現在カタログ キャッシングを処理する方法の違いを強調するこのディスカッションも見つけました。
私は両方を調査し、MEF を使用することにしました。これは主に、.NET 4 の一部としてリリースされる予定であり、それを取り巻くサポート、議論、および開発が自動的に増えるためです。また、MEF はコード内の属性を使用して必要なことをすべて実行できるようで、Mono.AddIns にはいくつかのメタデータ ファイルが必要でした (私の記憶が正しければ)。
編集: MEF を使用して拡張可能なアプリケーション フレームワークを構築した結果をご覧になりたい場合は、それをオープン ソース化し、SoapBox Coreという名前を付けました。