如何在3层web应用程序(ASP.NET MVC)中使用Autofac?

问题描述:

我能找到的例子使用两层体系结构,其中控制器直接使用数据访问层中的存储库类。见herehere如何在3层web应用程序(ASP.NET MVC)中使用Autofac?

如果您有使用这些组件的服务或业务逻辑层,那么您将从数据访问层注册组件?理想情况下,数据访问层不应该从用户界面层引用,对吧?所以Application_Start不适合做这件事。

什么是更好的方法?

谢谢!

+0

对不起,我没有回答你的问题,但你提供的这个MVC Commerce应用程序的链接是非常丰富和有见地的,所以谢谢。 :) – Franck 2008-11-27 17:17:25

有些事情必须知道您想要使用哪种实现。通常会有3种方式来实现:

  1. 在编译的时候是什么Autofac使用
  2. 从预定义的配置文件运行时,其温莎城堡可以在运行时做
  3. 与dyanamic configuartion

随着Autofac你有几个选择

  1. 在Application_Start中把所有东西连接在一起
  2. 将责任交给执行factory pattern的另一个组件,并注册所需的组件。

对于#2我会实现类似于IContainer接口的东西,以便您的IoC框架与您的系统松散耦合。然后让你的数据访问实现使用该接口来注册所需的组件。

+0

好的,所以在第一种情况下(Application_Start中的所有内容)是Web应用程序现在必须直接引用数据访问层组件的问题? – 2008-11-28 09:29:02