2015-04-18 2 views
0

Я работаю над проектом ASP.NET MVC5, который полагается на Unity (IoC) для DI. На днях я начал смотреть курс Pluralsight «Практический IoC с помощью ASP.NET MVC 4», и парень, который делает этот курс, выбирает пакет Unity для MVC 4 над пакетом Unity (здесь говорят пакеты Nuget), где, очевидно, вы настраиваете все в файле называемый Bootstrapper.cs, который, как я понимаю, создан и подключен к этому пакету Nuget.Какие пакеты Nuget Unity для ASP.NET MVC 5?

Мой проект не имеет этого файла, но на самом деле ссылки Unity.Mvc4 (тот, который рекомендуется в ходе курса). Менеджер пакетов Nuget сообщает мне, что Unity.MVC4 и Unity установлены и что Unity.MVC4 зависит от Unity.

Хуже того, существует также Unity.MVC5 и Unity bootstrapper для ASP.NET MVC, доступный с nuget.org. Это только я, или это немного странно?

Может ли кто-нибудь пролить некоторый свет на то, что пакеты Unity действительно имеют смысл с MVC 5?

+1

Bootstrapper подключен к событию запуска приложения среди других, вы также можете использовать событие Application_Start в global.asax. Имеет MVC global.asax :-) Не думайте так. В bootstrapper вы создаете контейнер Unity и делаете сопоставления. Поэтому вам нужно Unity всегда, но он устанавливается с одним из упомянутых выше пакетов, таких как Unity.MVC. Просто удалите ссылку Unity.MVC и удалите ссылки в файле пакетов и перестройте проект, затем он будет устанавливать его снова и автоматически создайте файл bootstrapper. Но если вы используете MVC5, я бы порекомендовал Unity.MVC5 – Legends

+0

Да, MVC имеет global.asax. Оттуда я звоню в Startup.InitialiseUnityContainer, который работает отлично. Я удалил пакет MVC4 и установил MVC5 один, не могу сказать разницы, но файл Bootstrapper.cs по-прежнему отсутствует, насколько я могу видеть. Думаю, они изменили это для MVC5. –

+0

Это полностью нормально. Bootstrapper - это просто .cs/.vb/etc. файл, где u помещает ваш загрузочный материал внутри в одном месте и который подключен к конвейеру событий с использованием WebActivatorEx. Так что называть его формой app_start в global.asax тоже отлично. – Legends

ответ

1

Теперь ASP.NET MVC 5 имеет собственную реализацию DI, посмотрите: http://blogs.msdn.com/b/webdev/archive/2014/06/17/dependency-injection-in-asp-net-vnext.aspx

Believe, что нативный функция будет лучше, чем реализация на стороне этого рисунка.

+0

В статье не совсем ясно, какая версия ASP.NET MVC будет поддерживать это из коробки DI (они относятся только к ASP.NET vNext). Кроме того, я предпочитаю выбирать контейнер, с которым я уже знаком, и не имел никаких проблем с использованием точек расширения, которые уже существуют в ASP.NET MVC. –

+2

Эта статья относится к ASP.Net vNext, который был назван ASP.Net 5, который не совпадает с MVC 5. –

Смежные вопросы