IoC сравнения

Какой IoC следует учитывать при разработке проекта веб-приложения ASP.NET и каковы преимущества различных IoC?

  1. ObjectBuilder
  2. Единство
  3. Spring.NET

3 ответа

Решение

Это не в вашем списке, но рассмотреть вопрос о взгляде на замок Виндзор

Количество средств, таких как поддержка фабрик, так что фабричный продукт вводится не самой фабрике или Wcf для инъекции прокси или создания хоста с зависимостями.

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

Некоторые другие приятные особенности:

  • Требуется один DLL с новой редакции.
  • Поддерживает добавление списков и массивов через распознаватели SubDependancy.

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

Мы используем StructureMap в проекте ASP.NET MVC и считаем его невероятно полезным. Единственный реальный недостаток - ограниченная документация. Автоматическое подключение работает очень хорошо и требует очень мало настроек, если вы используете строгие соглашения для именования ваших классов и интерфейсов, например:

 public interface ISomething { ... }

 public class Something: ISomething { ... }

До этого мы использовали Spring.NET, хотя мы отказались от этого, потому что он делает много других (не IoC) вещей, которые нам на самом деле не нужны, и требовали сложной конфигурации XML, чтобы делать то, что нам нужно. Как контейнер IoC он работал нормально и был очень гибким.

Главное, что я бы порекомендовал, что бы вы ни выбрали, - это кодирование, позволяющее использовать IoC - мы везде используем интерфейсы. Это действительно помогает модульному тестированию и всем этим преимуществам.

Unity в MVC3 тоже выглядит интересно, но еще не было возможности поиграть с ним.

Я сомневаюсь, что многие люди использовали более двух или трех из них, и в моем довольно ограниченном опыте работы с Unity и Ninject не так уж много различий в конечном результате. У них немного разные параметры для настройки сопоставлений, и я уверен, что некоторые из более продвинутых функций различаются, но они, вероятно, используются редко. В конце концов, основные требования к контейнеру IoC не так уж сложны - вы можете довольно легко выполнить свои собственные.

Гораздо важнее то, что вы используете шаблон IoC, какой именно выбранный вами бренд, вероятно, не окажет существенного влияния на качество получаемого приложения.

Для чего бы я ни рекомендовал Ninject хотя бы потому, что он очень легкий.

Другие вопросы по тегам