2011-01-13 9 views
4

私はDI/IoCの概念が新しく、3層のASP.NET WebformsアプリケーションでAutofacを使用したいと考えています。多階層アーキテクチャでAutofacを使用

  • UIレイヤー:ASP.NET WebフォームWebサイト。
  • BLL:DALのリポジトリを呼び出すビジネスロジックレイヤ。
  • DAL:各エンティティのCRUD操作を抽象化するリポジトリクラスを持つ.EDMXファイル(Entity Model)とObjectContext。
  • エンティティ:POCOエンティティ。永続性を無視する。 MicrosoftのADO.Net POCOエンティティジェネレータによって生成されます。

私はより一般的な質問hereを求めました。基本的には、DALのHttpContextごとにobejctcontextを作成したいと考えています。しかし、UIのDALへの参照やDALのHttpContextへの参照を直接追加することは望ましくありません。私はこれがIoCツールが出現する場所だと思います。私の以前の質問への答えは、ウィンザー城を使用することの非常に良い例です。私はIoCツールとしてAutofacを使用したいと思いますし、これを実現する方法がわかりません。 (コンポーネントを登録するためにapplication_startのDALにアクセスする方法、UIで参照したくない場合、AutofacでBLLにDALコンポーネントを使用するための適切な参照は何ですか?BLLをAutofacのコンポーネントとして登録する必要があります。あまりにも)

申し訳ありませんが、明示的な質問をしていない、実用的な例を要求している人々ですが、私はIoC全体の概念にはほとんど慣れていないので、限られたプロジェクト。

答えて

6

Autofacモジュールは、あなたが探している技術です:http://code.google.com/p/autofac/wiki/StructuringWithModules

モジュールグループ関連の設定、例えばあなたのDALタイプは、Web.configを介してアプリケーションにロードすることができます:http://code.google.com/p/autofac/wiki/XmlConfiguration#Modules

これは、WebアプリケーションとDALの間のハードリファレンスの必要性を避けることができます。

要求ごとにDALコンポーネントを登録する場合は、InstancePerLifetimeScope()共有修飾子を使用します。アプリ内の生涯階層をカスタマイズしない限り、これはInstancePerHttpRequest()と同じように動作します(

ニック

+0

ありがとう、ニック。私はAutofacでWeb.configを使用できることを知らなかった。 – Kamyar

+0

hi @ nicholas-blumhardt、エンティティデータモデル(autofac-mvc4)を持つプロジェクトの例がダウンロードできるかどうか知っていますか?前もって感謝します!。 –