0

数か月間潜んでいて、質問に飛び込むことにしました. 私はウィンザーとIoC全般に非常に慣れていません。Windsor を MVC2 プロジェクトで問題なく動作させることができます。私が取り組んでいるプロジェクトは、新しい Areas コンセプトを使用して、1 つの MVC2 プロジェクトの下にある複数のアプリケーションの「ポータル」です。このシナリオでは、各エリアは実際には「ポータル」内の個別のアプリケーションになります。これは、多くの共通コード、ビュー、認証、およびクロスアプリケーション機能を効果的に共有するために行っています。私たちのアプリの多くは相互にリンクしているため、それらを 1 つのプロジェクトに統合することについて話し合った結果、理にかなっています。

私がどうすればいいのか疑問に思っているのは、実際に異なるエリアが異なる具象クラスを注入できるようにすることですか? 私の限られた理解では、Application_Start はコンテナーの構築を管理し、それをコントローラー ファクトリとして割り当てます。アプリケーションレベルですべての注入を行う必要はありません。すべてのエリアのルートに config.xml があり、それらの設定がルート設定を上書きする構成システムがあります。各エリアのインジェクションをエリアの config.xml (下位フォルダーの構成が親フォルダーの設定をオーバーライドする Webforms web.config に似た継承) で読み取れるようにすることで、この傾向を継続したいと考えています。

例: アプリケーションのどの領域にいるかに応じて、異なる具体的な実装が必要な ILogHandler があります。そのため、アプリケーションのどこにいるかに応じて、異なるものを注入する必要があります。

各エリアには独自の工場のセットがあるため、工場を使用してこれを簡単に行うことができますが、この機会に IoC と利点/欠点について学習しようとしています。どんな助けでも大歓迎です。

4

1 に答える 1

0

参考までに、エリア固有のセキュリティ コードは絶対に持ってはいけません。たとえば、現在の領域に応じて [Authorize] 属性を注入するファクトリまたはインボーカーは、アプリケーションを攻撃にさらす可能性があります。

これを、エリア内のすべてのコントローラーがサブクラス化する必要がある MyAreaBaseController と比較してください。[Authorize] 属性 (およびその他のセキュリティ関連コード) は、型に適用され、「領域」の概念から独立しているため、問題ありません。

于 2010-04-10T07:50:50.550 に答える