在多层架构中使用Autofac

Kam*_*yar 4 autofac asp.net-4.0 entity-framework-4

我是DI/IoC概念的新手,并希望在3层ASP.NET Webforms应用程序中使用Autofac.

  • UI层:ASP.NET webforms网站.
  • BLL:业务逻辑层,它在DAL上调用存储库.
  • DAL:.EDMX文件(实体模型)和带有Repository类的ObjectContext,它们抽象每个实体的CRUD操作.
  • 实体:POCO实体.持久无知.由Microsoft的ADO.Net POCO实体生成器生成.

在这里问了一个更普遍的问题.基本上,我想在我的DAL中为每个HttpContext创建一个obejctcontext.但我不想在UI中添加对DAL的引用或直接在DAL中访问HttpContext.我想这就是IoC工具的用武之地.我之前的问题的答案是使用温莎城堡的一个很好的例子.我想使用Autofac作为我的IoC工具,不知道如何实现这一目标.(如何在application_start中访问DAL以注册组件,而我不想在我的UI中引用它,有什么能够在BLL中使用DAL组件和Autofac的正确引用,我应该将BLL注册为具有Autofac的组件太)

很抱歉没有提供明确的问题并请求一些工作示例,但我对整个IoC概念非常不熟悉,我认为我无法在目前的时间限制项目中实现它.

Nic*_*rdt 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()您在应用程序中自定义生命周期层次结构相同的方式工作(不太可能).

祝你好运!

缺口