4


1

私は、アプリケーションの一部をC#(現在はレガシーVB6コード)で書き直すことを検討しています。 私が始めているモジュールは、さまざまなシステムからデータベースへのデータのインポートを担当しています。 年に5〜6回、新しいクライアントから、自分が使用しているシステム用の新しいインポートを作成するように依頼されています。 現在のところ、これには、アプリケーションに追加する新しいインポートオプションごとに、ソフトウェアの新しいバージョンをリリースする必要があります。

書き換えの目的の1つは、アプリケーションにプラグインをサポートさせることです。 すべての新しいインポートは、ホストアプリケーションが認識し、エンドユーザーが対話できるようにする個別のアセンブリになることがあります。 新しいアセンブリを単にディレクトリにドロップして、それをメイン(ホスト)アプリケーションに認識させて使用させることができるので、これはおそらく人生をある程度単純化するでしょう。

私が苦労している項目の1つは、現在サポートしているインポートオプションの違いに関連しています。 場合によっては、実際にユーザーにディレクトリを指定させ、そのディレクトリ内のすべてのファイルをシステムに読み込ませることもあります。 それ以外の場合は、単一のファイルを参照してその内容をインポートすることを許可します。 また、一部のインポートには、ユーザーが適用する日付範囲制限がありますが、そうでないものもあります。

私の質問は、私たちが構築しサポートするインポートの中でいくらかの柔軟性を可能にしながら同時にホストアプリケーションがプラグインとオプションを容易に認識できるようにする共通のインターフェースを実装する方法でアプリケーションを設計する方法です。一人一人がユーザーに公開する?

3 Answer


3



1


Net 3.5 has the system.Addin namespace.

このスレッドには、古いバージョンのフレームワークに関するいくつかの優れた情報もあります。 development-87 / system-plugin-532149.html]


0


理論については、martin fowlersの plugin patternをご覧ください。エンタープライズアプリケーションアーキテクチャのパターン

興味深い例として、このチュートリアルをご覧ください。 C#を使用したプラグインアーキテクチャ