在多层架构中使用Autofac

时间:2011-01-13 00:54:54

标签: entity-framework-4 asp.net-4.0 autofac

我对DI / IoC概念很陌生,并希望在3层ASP.NET Webforms应用程序中使用Autofac。

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

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

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

1 个答案:

答案 0 :(得分:6)

Autofac模块是您正在寻找的技术:http://code.google.com/p/autofac/wiki/StructuringWithModules

模块组相关配置,例如您的DAL类型,可以通过Web.config加载到应用程序中:http://code.google.com/p/autofac/wiki/XmlConfiguration#Modules

这样可以避免在您的网络应用和DAL之间进行任何硬性引用。

如果您想按请求注册DAL组件,请使用InstancePerLifetimeScope()共享修改器。这将与InstancePerHttpRequest()的工作方式相同,除非您在应用中自定义生命周期层次结构(不太可能。)

祝你好运!

尼克