ASP.NET MVC3 Bootstrapper с Autofac - PullRequest
2 голосов
/ 12 марта 2012

У меня есть несколько вопросов относительно класса начальной загрузки.Я использую ASP.NET MVC 3.

По-прежнему целесообразно использовать загрузчик в 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();
}

1 Ответ

1 голос
/ 12 марта 2012

Разумно ли использовать загрузчик в MVC3 для уменьшения количества кода в файле global.asax?

Я использую, скажем, загрузчик (фактически, различные задачи запуска, выполняемые в определенном порядке) в каждом веб-приложении. Я добавляю в эти задачи все, что мне нужно настроить: от маршрутов и глобальных фильтров до настройки контейнера DI, загрузки настроек из БД (после настройки контейнера DI) и т. Д.

В основном все, что вы могли бы поместить в global.asax.cs Application_Startnow, находится в виде задач в каталоге запуска, и каждая задача представляет собой простой класс, помеченный как задача запуска (для этого я использую свой собственный инструментарий). Преимущества загрузчика - простота управления этими задачами, у него нет неявной связи с контейнером IoC, однако настройка контейнера обычно выполняется при запуске приложения.

Если я хочу загрузить настройки для всего сайта (загруженные из базы данных), сделайте ли я это здесь

Только если настройки являются статическими или требуются для настройки приложения. Это в значительной степени зависит от типа настроек и типа приложения. Нет четкого и однозначного ответа.

Если это так, нужно ли вводить эти настройки в каждый контроллер

Вы не вводите параметры в контроллер, вы вводите зависимости, и это работа контейнера IoC.

Если он попал в загрузчик, как эти значения сохраняются?

Загрузчик используется только один раз при запуске приложения, чтобы настроить приложение, затем оно отключается. Это не должно сохранять значения. Возможно, вы думаете о настройках, но даже если загрузчик загружает их, эти настройки хранятся в другом месте, обычно в кэше.

...