5

私のアプリケーションは拡張可能でなければなりません。私自身のニーズのために、いくつかのサービスを実装しました。これらのサービスは、IoC/DI の原則に基づいています。したがって、サービスはアプリケーションの概念をカプセル化します。

たとえば、IApplicationService があります。ApplicationService は、現在実行中のアプリケーションに関する情報を公開します。AssemblyInfo などを指定します。もう 1 つの例は、INavigationService です (サンプルの mef.codeplexcom を参照してください)。このサービスは、指定された現在選択されている項目に関する情報であるいくつかのプロパティと、いくつかのイベントを提供します。

「サービスアプローチ」が最も簡単で、アプリケーションの拡張ポイントを簡素化すると思います。したがって、これが本当に最善のアプローチであるかどうかはわかりません。どう思いますか?addins/addons/plugins ... のようなアプリケーションで「拡張ポイント」をどのように実装しますか?

返信ありがとうございます。申し訳ありませんが、私の英語は下手です。;)

4

3 に答える 3

4

MEF (Managed Extensibility Framework)をご存知ですか?

Managed Extensibility Framework (略して MEF) は、拡張可能なアプリケーションの作成を簡素化します。MEF は、アプリケーション拡張機能をロードするために利用できる検出および構成機能を提供します。

于 2010-07-25T13:49:36.593 に答える
2

MEF (Managed Extensibility Framework) を真剣に検討する必要があります。

これは、Microsoft 自身が Visual Studio 2010 などで拡張性を高めるために使用している素晴らしい新しいフレームワークです。優れた使いやすさ - 何千もの開発者がすぐに使用するものを使用できるのに、なぜ車輪を再発明するのですか??

于 2010-07-25T13:50:19.517 に答える
0

はい、私はMEFに精通しています。MEF の概念も使用しますが、いくつかの欠点があります。私のアプリケーションは IoC/DI のようなもので、MEF と組み合わせると少し複雑になります。MEF は実際には DI コンテナーではないため、MEF を他の DI コンテナー (ninject、unity など) と共に使用することは、これを実装するのが困難です。他の DI コンテナーでは MEF を使用しません。そのため、MEF を他の DI コンテナーと混合するのはあまり良くありません。

私の懸念を理解していただければ幸いです。

追加: MEF の AppDomain に拡張機能を読み込むことはできません。だから、これは私のニーズには適していません。System.AddIn または MAF はこれをサポートしていますが、これは非常に重いため、System.AddIn は使用しません ... .

于 2010-07-25T14:09:33.380 に答える