Какие фреймворки .NET Dependency Injection стоит изучить? [закрыто]

К сожалению, это гораздо более общая проблема; а именно, что итераторы были разработаны для того, чтобы победить эти дерьмовые API-интерфейсы API и Java-стиль «Поместите алгоритмы как методы каждого отдельного контейнера». Они являются универсальным решением первого поколения, и нет ничего удивительного в том, что при отражении они были не так хороши, как другие возможные общие решения, которые можно было получить после того, как мы потратим на это двадцать лет.

Добавление этих перегрузок контейнеров будет просто помогая группе по крошечной части проблемного пространства; и это может даже ухудшить ситуацию в будущем. Решение - это диапазоны, которые C ++ ищет, чтобы ввести ASAP.

373
задан John Saunders 29 July 2010 в 02:02
поделиться

11 ответов

редактирование (не автором): существует всесторонний список платформ МОК, доступных в https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc:

  • замок Windsor - замком Windsor является лучшая среди аналогов, сформировавшаяся Инверсия контейнера Управления, доступного для.NET и единицы Silverlight
  • - Легкий расширяемый контейнер внедрения зависимости с поддержкой конструктора, свойства и инжекции вызова метода
  • Autofac - захватывающая.NET контейнер МОК
  • DryIoc - Простой, быстро весь полнофункциональный контейнер МОК.
  • Ninject - ниндзя инжекторов зависимости.NET
  • StructureMap - исходный Контейнер МОК/DI для .NET
  • Spring. Сеть - Spring.NET является платформой приложения с открытым исходным кодом, которая подает заявки предприятия здания.NET, легче
  • LightInject - крайний легкий контейнер МОК
  • Простой Инжектор - Простой Инжектор является простой в использовании библиотекой Dependency Injection (DI) для.NET 4 +, который поддерживает Silverlight 4 +, Windows Phone 8, Windows 8 включая Универсальные приложения и Моно.
  • Microsoft. Расширения. DependencyInjection - контейнер МОК по умолчанию для Базовых приложений ASP.NET.
  • Scrutor - расширения сканирования блока для Microsoft. Расширения. DependencyInjection.
  • VS MEF - реализация Управляемой платформы расширяемости (MEF) используется Visual Studio.
  • TinyIoC - простое в использовании, свободная стычка, Инверсия Контейнера Управления для маленьких проектов, библиотек и новичков одинаково.

Исходный ответ следует.

<час>

я предполагаю, что мог бы быть немного придирчивым здесь, но важно отметить, что DI (Внедрение зависимости) является шаблоном программирования и упрощен, но не требует, МОК (Инверсия Управления) платформа. Платформы МОК просто делают DI намного легче, и они обеспечивают хост других преимуществ свыше DI.

Однако я уверен, что это - то, что Вы спрашивали. О Платформах МОК; я раньше использовал Spring. Сеть и CastleWindsor много, но реальная боль в позади был всем, что противные XML конфигурируют Вас, должен был записать! Они в значительной степени все перемещают этот путь теперь, таким образом, я использовал StructureMap в течение прошлого года или так, и так как он переместился в быструю конфигурацию с помощью дженериков со строгим контролем типов и реестра, мой барьер боли в использовании МОК спал ниже нуля! Я вытаскиваю абсолютный удар из знания теперь, когда моя конфигурация МОК проверяется во время компиляции (по большей части), и у меня была только радость с StructureMap и его скоростью. Я не скажу, что другие были медленными во времени выполнения, но они были более трудными для меня установить, и разочарование часто выигрывало день.

Обновление

я использовал Ninject на моем последнем проекте, и это было абсолютное удовольствие использовать. Слова приводят меня к сбою немного здесь, но (как мы говорим в Великобритании) эта платформа является 'Собаками'. Я настоятельно рекомендовал бы его для любых проектов зеленых полей, где Вы хотите быть в порядке быстро. Я получил все, в чем я нуждался от фантастический набор скринкастов Ninject Justin Etheredge. Я не вижу, что модифицирование Ninject в существующий код, являющийся проблемой вообще, но затем то же могло быть сказано относительно [1 119] StructureMap, по моему опыту. Это будет сложный выбор, продвигающийся между теми двумя, но у меня были бы конкуренция, чем застой и существует достойный объем здоровой конкуренции там.

Другие скринкасты МОК могут также быть найдены здесь на Dimecasts.

328
ответ дан Bart de Bever 29 July 2010 в 02:02
поделиться

Ninject является большим. Это кажется действительно быстрым, но я не сделал никаких сравнений. Я знаю, что Nate, автор, сделал некоторые сравнения между Ninject и другими платформами DI и ищет больше способов улучшить скорость Ninject.

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

18
ответ дан ScottKoon 29 July 2010 в 02:02
поделиться

Autofac. https://github.com/autofac/Autofac Это действительно быстро и довольно хорошо. Вот ссылка со сравнениями (сделанный после того, как Ninject устранил проблему утечки памяти).

http://www.codinginstinct.com/2008/05/ioc-container-benchmark-rerevisted.html

35
ответ дан Nick N. 29 July 2010 в 02:02
поделиться

Я использовал Spring.NET в прошлом и имевшем большом успехе с ним. Я никогда не замечал существенных издержек с ним, хотя проект, на котором мы использовали его, был довольно тяжел самостоятельно. Это только сняло показания небольшого времени через документация для получения настроенного.

4
ответ дан Jason Sparks 29 July 2010 в 02:02
поделиться

Большая вещь о C# состоит в том, что он следует за путем, разбитым годами Java-разработчиков перед ним. Так, мой совет, вообще говоря, при поиске инструментов этой природы, состоит в том, чтобы искать основательный ответ Java и видеть, существует ли там адаптация.NET уже.

Так когда дело доходит до DI (и существует столько опций там, это действительно - вопрос вкуса), Spring.NET . Кроме того, всегда мудро исследовать людей позади проектов. У меня нет предложения проблемы продукты SourceGear для управления исходным кодом (за пределами использования их), потому что я испытываю уважение к Eric Sink. Я видел, что Mark Pollack говорит и что может я говорить, парень просто получает его.

В конце, существует много платформ DI, и Ваш лучший выбор состоит в том, чтобы сделать некоторые демонстрационные проекты с несколькими из них и сделать образованный выбор.

Удачи!

2
ответ дан Ian Patrick Hughes 29 July 2010 в 02:02
поделиться

Я могу рекомендовать Ninject. Это невероятно быстро и просто в использовании, но только если Вам не нужна конфигурация XML, еще необходимо использовать Виндзор.

5
ответ дан Julio César 29 July 2010 в 02:02
поделиться

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

2
ответ дан Rob Bazinet 29 July 2010 в 02:02
поделиться

Я - огромный поклонник Замка. Я люблю услуги, которые это также предоставляет вне истории Контейнера МОК. Это действительно simplfies использующий NHibernate, вход, AOP, и т.д. Я также использую Binsor для конфигурации с Шиканьем и действительно влюбился в Шиканье как в язык из-за этого.

8
ответ дан Chris Canal 29 July 2010 в 02:02
поделиться

Это зависит от того, что Вы ищете, поскольку у каждого из них есть их за и против.

  1. Spring.NET является самым сформировавшимся, поскольку это выходит, Возникают из мира Java. Spring имеет очень богатый набор библиотек платформы, которые расширяют его для поддержки сети, Windows, и т.д.
  2. Castle Windsor является одним из наиболее широко используемый в платформе.NET и имеет самую большую экосистему, высоконастраиваем / расширяемый, имеет пользовательское пожизненное управление, поддержку AOP, имеет свойственную поддержку NHibernate и является всеми вокруг потрясающего контейнера. Виндзор является частью всего стека, который включает Монорельсовую дорогу, Активную Запись, и т.д. сам NHibernate создает сверху Виндзора.
  3. Structure Map имеет очень богатую и мелкомодульную конфигурацию через внутренний DSL.
  4. Autofac контейнер МОК нового века со всем, им - свойственная поддержка функционального программирования. Это также проявляет другой подход на руководящем времени жизни, чем другие. Autofac является все еще очень новым, но он продвигает панель на том, что возможно с МОК.
  5. Ninject я услышал, больше скелета с меньшем, больше подхода (слышал не опытный).
  6. самый большой различитель [1 120] Unity : это от и поддерживается Microsoft (p& p). Единица имеет очень хорошую производительность и замечательную документацию. Это также высоконастраиваемо. Это не имеет всех дополнительных свойств, говорят что Замок / Карта Структуры.

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

77
ответ дан shA.t 29 July 2010 в 02:02
поделиться

Spring. Сеть довольно тверда, но документация заняла время для прохождения через. Autofac хорош, и в то время как.Net 2.0 поддерживается, Вам нужен VS 2008, чтобы скомпилировать его или иначе использовать командную строку для создания приложения.

2
ответ дан David Robbins 29 July 2010 в 02:02
поделиться
[

]Я использую []Простой инжектор[]: [

] [
] [

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

] [
]
13
ответ дан 23 November 2019 в 00:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: