2015-07-20 3 views
0

IoC теперь встроен в ASP.NET 5 с нуля. В чем преимущество использования стороннего контейнера IoC, такого как Autofac или Unity, если таковые имеются?В чем преимущество использования стороннего контейнера IoC в ASP.NET 5

Будет ли использовать сторонний контейнер IoC лучше или хуже? Существуют ли другие действительно полезные функции, которые нет в встроенном контейнере IoC?

Я больше не вижу преимущества использования одного, но хочу удостовериться, что у меня что-то не хватает.

+1

Встроенный контейнер довольно недорогой. Тем не менее, это не означает, что что-то вроде LightInject не будет быстрее и что единство не будет (намного) медленнее. Реальная польза от решения третьей части - это функции, а не производительность, и это, конечно, сильно зависит от самого контейнера IoC. –

+1

одна вещь, которую я узнал в этом вопросе http://stackoverflow.com/questions/31492976/how-to-configured-nested-dependency-in-asp-net-5-di - это то, что встроенный DI не может правильно подключить декоратор и это было достаточной причиной для того, чтобы я хотел использовать что-то еще, например autofac, однако текущий autofac, похоже, совместим только с бета-версией 4, поэтому во время бета-версии наши возможности ограничены. Я бы сказал, что встроенный в один прекрасный, пока вам не понадобится то, что он не может сделать для вас. –

ответ

5

Вот список тестов: http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison Autofac относительно легковес и имеет множество функций. В конечном счете, кроме производительности, нет преимущества перед использованием встроенного в него, если это требует все ваше приложение. То же самое, что использовать встроенный набор тестов vs nunit. Это сводится к тому, что вам нужно делать с этим, и если оно поддерживает эту функцию и критичность производительности.

+0

Хорошая ссылка. Итак, встроенный IoC будет медленнее? –

+2

Не обязательно, его нужно было бы сравнить, чтобы точно знать. В общем, если вы не знаете, зачем вам нужен другой контейнер IoC, кроме встроенного, тогда вам это не понадобится. Вы должны переключиться на стороннюю библиотеку, когда возникнет необходимость в зависимости от производительности или потребностей функции. –

3

Предполагается, что встроенный контейнер IoC будет предлагать минимальный минимум, необходимый для работы каркаса и поддержки инъекции зависимостей.

Преимущество использования другого контейнера в том, что вы можете получить доступ к функциям, которые недоступны во встроенном контейнере (вложение свойств, именованные зависимости, настраиваемые зависимости и т. Д.).

Кроме того, могут быть некоторые преимущества, но вам нужно будет это проверить.

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