2012-04-27 11 views
0

現在、アプリケーションで作業しており、新しい機能を追加したいと考えています。構成可能なアプリケーションは、必ずしもプラグインベースのアーキテクチャを意味しますか

アプリケーションのコードを直接更新することです。

もう1つは、新しい機能が追加される拡張性レイヤーを提供することです。

プラグインアーキテクチャで複数の投稿を読み、MEFを使用して合成可能なアプリケーションを作成すると、2つの用語が実際に同じものを意味するかどうか混同されます。

また、私は「開放」将来的に容易に拡張できるようにする自分のアプリケーション(新しい先物は、「拡張機能として」追加することができます)

答えて

1

あなたは意志をするのを助ける何か良い設計ソリューションを知って興味を持っています包括的な拡張性フレームワークを持つためには、プラグインベースのアーキテクチャが必要です。

ただし、必ずしも依存性コンテナまたはMEFは必要ありません。

IPlugInインターフェイスを定義し、インターフェイスを実装するタイプのアセンブリをスキャンするだけでも簡単です。次に、型のインスタンスをインスタンス化して行きます。

+0

カスタマイズして拡張する多くのアプリケーションオプション/イベントを登録する方法が残っています。シンプルなIPluginインターフェースはこれをサポートしていません。 –

+0

それは依存します。あなたはその拡張が何を伴うかを決める必要があります。 'IPlugIn'は、何らかの形でメッセージを呼び出すためのメニューを作成する' IEnumerable Messages() 'メソッドを持つことができます。ほとんどのプラグイン・アーキテクチャーは、論理的にホスト/シェルに収まるように定義された構造を持ちます。 –

+0

これはまさに私の問題です。私の「プラグイン」やエクステンションは、特定の場所にはまったく適合しませんが、私のアプリではかなりの場所に溶け込むはずです。もちろん、アプリケーションのさまざまなアスペクトを拡張または相互作用させるために、さまざまなIPluginインターフェイス(IPluginUIなど)を提供することができます。 –