带有Autofac的ASP.NET MVC3 Bootstrapper

时间:2012-03-12 09:08:16

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 autofac

我对bootstrapper类有一些疑问。我正在使用ASP.NET MVC 3

在MVC3中使用引导程序减少global.asax文件中的代码量是否仍然明智?

除了注册路线之外,还必须在boostrapper中加载什么?如果我想加载站点范围的设置(从数据库加载),我在这里这样做吗?如果是这种情况,那么我需要将这些设置注入每个控制器吗?如果它进入了引导程序,这些值是如何保留的?

我正在寻找有关如何在我的引导程序中使用Autofac的代码/文章。我只能找到Ninject。有人为我买过一些代码或文章吗?

我找到了这两篇好文章:

  1. http://www.dominicpettifer.co.uk/Blog/42/put-an-ioc-powered-bootstrapper-in-your-asp-net-mvc-application
  2. http://weblogs.asp.net/rashid/archive/2009/02/17/use-bootstrapper-in-your-asp-net-mvc-application-and-reduce-code-smell.aspx
  3. 我正在尝试完成类似的事情:

    protected void Application_Start()
    {
         Bootstrapper.Run();
    }
    

1 个答案:

答案 0 :(得分:1)

  

在MVC3中使用引导程序减少global.asax文件中的代码量是否仍然明智?

我正在使用let说一个引导程序(实际上是以特定顺序执行的各种启动任务)在每个Web应用程序中。我将所有需要设置的任务放入这些任务中:从路径和全局过滤器,到设置DI容器,从db加载设置(在设置DI容器之后)等等。

基本上你可以放在global.asax.cs中的所有内容Application_Startnow都作为Start Up目录中的任务而存在,每个任务都是一个标记为启动任务的简单类(我正在使用自己的工具包)。引导程序的好处是这些任务的简单保留,它与IoC容器没有隐式连接,但是设置容器通常是在应用程序启动时执行的。

  

如果我想加载站点范围的设置(从数据库加载),我在这里这样做

仅当设置是静态的或配置应用程序时才需要。它几乎取决于设置的类型和应用程序的类型。没有明确的答案。

  

如果是这种情况,那么我是否需要将这些设置注入每个控制器

您不会在控制器中注入设置,注入依赖项,这就是IoC容器的工作。

  

如果它进入了引导程序,这些值是如何保留的?

引导程序仅在应用程序启动时使用一次,以配置应用程序然后它就出来了。它不应该保留价值。您可能正在考虑设置,但即使引导程序加载它们,这些设置也会存储在不同的位置,通常是缓存。​​