Разумно ли использовать загрузчик в MVC3 для уменьшения количества кода в файле global.asax?
Я использую, скажем, загрузчик (фактически, различные задачи запуска, выполняемые в определенном порядке) в каждом веб-приложении. Я добавляю в эти задачи все, что мне нужно настроить: от маршрутов и глобальных фильтров до настройки контейнера DI, загрузки настроек из БД (после настройки контейнера DI) и т. Д.
В основном все, что вы могли бы поместить в global.asax.cs Application_Startnow, находится в виде задач в каталоге запуска, и каждая задача представляет собой простой класс, помеченный как задача запуска (для этого я использую свой собственный инструментарий). Преимущества загрузчика - простота управления этими задачами, у него нет неявной связи с контейнером IoC, однако настройка контейнера обычно выполняется при запуске приложения.
Если я хочу загрузить настройки для всего сайта (загруженные из базы данных), сделайте ли я это здесь
Только если настройки являются статическими или требуются для настройки приложения. Это в значительной степени зависит от типа настроек и типа приложения. Нет четкого и однозначного ответа.
Если это так, нужно ли вводить эти настройки в каждый контроллер
Вы не вводите параметры в контроллер, вы вводите зависимости, и это работа контейнера IoC.
Если он попал в загрузчик, как эти значения сохраняются?
Загрузчик используется только один раз при запуске приложения, чтобы настроить приложение, затем оно отключается. Это не должно сохранять значения. Возможно, вы думаете о настройках, но даже если загрузчик загружает их, эти настройки хранятся в другом месте, обычно в кэше.