2012-03-12 29 views
2

我有一些關於引導程序類的問題。我正在使用ASP.NET MVC 3帶有Autofac的ASP.NET MVC3引導程序

在MVC3中使用引導程序來減少global.asax文件中的代碼量還是明智的嗎?

除了註冊路由以外,還必須在加載器中加載哪些內容?如果我想加載站點範圍的設置(從數據庫加載),我在這裏做?如果是這種情況,那麼我是否需要將這些設置注入每個控制器?如果它在引導程序中獲得,這些值如何保留?

我正在尋找關於如何在我的引導程序中使用Autofac的代碼/文章。我只能找到Ninject。有沒有人有我的代碼或文章?

我發現這2篇好文章:

  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

我試圖完成這樣的:

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

Autofac wiki有關於MVC 3的信息http://code.google.com/p/autofac/wiki/Mvc3Integration – 2012-03-12 09:16:45

回答

1

難道還要明智使用bootstrapp呃在MVC3中減少global.asax文件中的代碼量?

我使用讓我們說每個Web應用程序中的引導程序(實際上是以特定順序執行的各種啓動任務)。我把所有需要設置的東西放在這些任務中:從路由和全局過濾器,設置DI容器,從db加載設置(在設置DI容器之後)等等。

,你可能已經把的global.asax.cs Application_Startnow駐留在一開始向上目錄的任務,每個任務被標記爲啓動任務的簡單類(我用我自己的工具包爲)

基本上一切。引導程序的好處是這些任務很容易維護,它與IoC容器沒有任何隱式連接,但是設置容器通常是在應用程序啓動時執行的。

如果我想加載站點級設置(從數據庫加載),我該怎麼辦,這裏

只有在設置靜態或配置的應用需要。這幾乎取決於設置的類型和應用程序的類型。沒有明確的答案。

如果是這樣,然後我需要這些設置注入到每個控制器

你不會在控制器設置注入的情況下,你注入依賴條件,這就是IoC容器的工作。

如果它在引導程序中獲得,這些值如何保留?

引導程序僅在應用程序啓動時使用一次,以配置應用程序,然後它不在。它不應該保留價值。您可能正在考慮設置,但即使引導程序加載它們,這些設置也會存儲在不同的位置,通常是緩存。

+0

這裏的設置是指客戶設置,客戶可以這樣做,客戶可以這樣做,電子郵件等等。 – 2012-03-12 10:02:52

+0

設置DI容器後,您是否有加載設置的代碼? – 2012-03-12 10:03:46

+0

客戶設置在引導程序中沒有位置,因爲它是一個WEB應用程序,其中多個客戶同時處於服務器。這些設置將在每個請求中加載。我無法爲您提供加載設置的代碼,因爲它是針對每個應用的特定內容。 – MikeSW 2012-03-12 10:08:55