Dotnet-core-managed-extensibility-framework
管理された拡張性フレームワーク
この章では、Managed Extensibility Framework(MEF)について説明します。 MEFは、サードパーティ製のプラグインの拡張性のために使用することも、疎結合のプラグインのようなアーキテクチャの利点を通常のアプリケーションにもたらすこともできます。
- MEFは、軽量で拡張可能なアプリケーションを作成するためのライブラリです。
- アプリケーション開発者は、構成を必要とせずに拡張機能を検出して使用できます。
- MEFは.NET Framework 4に不可欠な部分であり、.NET Frameworkが使用されている場合はいつでも利用でき、大規模アプリケーションの柔軟性、保守性、およびテスト容易性を向上させます。
- MEFは、Windows Forms、WPF、またはその他のテクノロジを使用するかどうかにかかわらず、クライアントアプリケーションで、またはASP.NETを使用するサーバーアプリケーションで使用できます。
- MEFは Microsoft.Composition として.NET Coreにも移植されていますが、部分的に移植されています。
- System.Composition のみが移植され、 System.ComponentModel.Composition はまだ使用できません。 つまり、ディレクトリ内のアセンブリから型をロードできるカタログはありません。
この章では、.NET CoreアプリケーションでMEFを使用する方法のみを学習します。
NET CoreコンソールアプリケーションでMEFを使用する簡単な例を理解しましょう。 新しい.NET Coreコンソールプロジェクトを作成しましょう。.
左側のペインで[*テンプレート]→[Visual C#]→[.NET * Core]を選択し、中央のペインで[コンソールアプリケーション(.NET Core)]を選択します。
[名前]フィールドにプロジェクトの名前を入力し、[OK]をクリックします。
プロジェクトが作成されたら、Microsoft.Compositionの参照を追加して、MEFを使用できるようにする必要があります。 そのためには、ソリューションエクスプローラーでプロジェクトを右クリックし、* NuGetパッケージの管理…*
[OK]ボタンをクリックします。
インストールが完了すると、参照にエラーが表示されます。
このファイルを保存すると、エラーが修正されたことがわかります。
参照を展開すると、 Microsoft.Composition の参照が表示されます。
最初に、エクスポートするインターフェイスを作成し、そのインターフェイスを実装して、エクスポート属性でクラスを修飾する必要があります。 新しいクラスを追加しましょう。
[名前]フィールドにクラスの名前を入力し、[追加]をクリックします。
前述のとおり、カタログはMicrosoft.Composition名前空間では使用できません。 そのため、Program.csファイルのComposeメソッドに示されているように、エクスポート属性を持つアセンブリからすべてのタイプを読み込み、インポート属性にアタッチします。
アプリケーションを実行してみましょう。 PrintData クラスをインスタンス化することで、アプリケーションが実行されていることがわかります。
MEFの詳細については、次のURL [[1]]