Подтвердить что ты не робот

Простой инжектор против Хиро против Autofac

Я новичок в DI и IoC, и я пытаюсь решить, какой контейнер IoC выучить. Я видел несколько сравнений производительности в которых три упомянутых контейнера, похоже, работают очень хорошо. Тем не менее, я не нашел сравнения характеристик, которые включали Hiro или Simple Injector. Сообщество Autofac, по-видимому, является самым большим, но Hiro и Simple Injector невероятно быстрые в тестах, а Simple Injector, в частности, очень легко узнать. Тем не менее, я не хочу изучать один и переключиться на другой, потому что набор функций ограничен. По этой причине я склоняюсь к Autofac, так как он довольно зрелый и полный (хорошая статья здесь и здесь), а также является одним из самых быстрых контейнеров IoC. Кто-нибудь имел опыт работы с по крайней мере двумя из трех этих контейнеров? Можете ли вы предложить сравнение функций?

4b9b3361

Ответ 1

Позвольте мне начать с того, что я ведущий разработчик Simple Injector.

Я согласен с Mark, что в большинстве случаев производительность контейнера не является проблемой. Тем не менее, некоторые контейнеры в некоторых случаях очень плохо себя чувствуют, и может быть сложно интуитивно понять, какие части конфигурации могут быть проблематичными с точки зрения производительности. Большинство проблем с производительностью можно устранить, изменив конфигурацию (меняя регистрацию на одноэлементный, добавляя кеширование и т.д.), Независимо от того, какой контейнер вы используете. Однако в этот момент может быть очень сложно сконфигурировать контейнер. Это такая сложность, которую мы пытались решить с помощью Simple Injector. Мне нравится позволять другим решать, удалось ли нам (или иметь контейнер DI, или еще один контейнер DI даже полезен).

Производительность, однако, даже не была такой высокой в ​​моем первоначальном списке, когда я начал проект (простота была), но дизайн (без блокировки и Expression на основе дерева) позволил мне делать оптимизации, которые делают его одним из самый быстрый контейнер в поле (при этом все еще очень богатый функциональностью и очень расширяемый). В большинстве случаев вы обнаружите, что производительность очень близка к новым экземплярам вручную.

Это говорит о том, что для обучения инъекции зависимостей требуется больше времени, чем требуется, чтобы научиться работать с конкретным контейнером DI (Отметить книгу может реально помочь с обоими). Контейнер - простой инжектор - не поможет вам понять DI и SOLID (однако некоторые из его ограничений пытаются заставить вас чистый дизайн приложения).

Простой инжектор довольно новый (или поздний) на сцене DI. Из-за этого между ним и другими нет большого сравнения (хотя здесь есть и здесь), а количество пользователей ограничено по сравнению с другими фреймворками, но быстро растет (и согласно расширенные сценарии в разделе документация). Простой инжектор отсутствует в сравнении с вами ( часть 1 и часть 2), поэтому здесь список функций для Simple Injector (но обратите внимание, что Simple Injector добавлен в одно из более новых сопоставлений автора)

Я понятия не имею, каковы ваши требования, но я уверен, что Simple Injector может служить вам на всю жизнь вашего проекта. Если у вас возникли проблемы с этим, просто спросите здесь, на Stackoverflow.com или на форуме Simple Injector. Простые вкладчики Инжектора и другие энтузиасты с радостью помогут вам. И не забывайте, что есть группа fooobar.com/info/tagged/..., которые могут помочь вам в общих проблемах с DI.