c# - русском - Какую платформу разработки.NET Dependency Injection стоит посмотреть?




внедрение зависимостей (8)

Какую C # /. NET-зависимую систему инъекций стоит посмотреть? И что вы можете сказать об их сложности и скорости.


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

  • Castle Windsor - Castle Windsor - лучший из породы, зрелый контейнер Inversion of Control, доступный для .NET и Silverlight
  • Unity - легкий контейнер для расширения контейнеров с поддержкой конструктора, свойства и метода вызова
  • Autofac - захватывающий контейнер .NET IoC
  • DryIoc - простой, быстрый полностью совместимый контейнер IoC.
  • Ninject - ниндзя инжекторов зависимостей .NET
  • StructureMap - оригинальный контейнер IoC / DI для .Net
  • Spring.Net - Spring.NET - это платформа приложений с открытым исходным кодом, которая упрощает создание корпоративных приложений .NET
  • LightInject - ультралегкий контейнер IoC
  • Простой инжектор - простой инжектор - это простая в использовании библиотека Injection (DI) для платформы .NET 4+, которая поддерживает Silverlight 4+, Windows Phone 8, Windows 8, включая Universal Applications и Mono.
  • Microsoft.Extensions.DependencyInjection - контейнер IoC по умолчанию для приложений ASP.NET Core.
  • Scrutor - Сборочные расширения для Microsoft.Extensions.DependencyInjection.
  • VS MEF - реализация управляемой расширяемости (MEF), используемая Visual Studio.
  • TinyIoC - простая в использовании, без проблем, инверсия контейнера управления для небольших проектов, библиотек и начинающих.

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

Я полагаю, что я мог бы быть немного придирчивым здесь, но важно отметить, что DI (Dependency Injection) является шаблоном программирования и ему облегчается инфраструктура IoC (Inversion of Control), но не требуется. Рамки IoC просто делают DI намного проще, и они предоставляют множество других преимуществ помимо DI.

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

Обновить

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

Другие IoC screencasts также можно найти здесь на Dimecasts .



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


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

Поэтому, когда дело доходит до DI (и есть так много вариантов, это действительно вопрос вкуса) Spring.Net . Кроме того, всегда разумно исследовать людей, стоящих за проектами. У меня нет проблем с предложением продуктов SourceGear для управления версиями (вне их использования), потому что я уважаю Эрика Санка. Я видел, как Марк Поллак говорил, и что я могу сказать, парень просто получает его.

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

Удачи!


Я большой поклонник замка. Мне нравятся объекты, которые он также предоставляет за пределами истории контейнеров IoC. Это действительно упрощает использование NHibernate, logging, AOP и т. Д. Я также использую Binsor для настройки с Boo и действительно влюбился в Boo как язык из-за этого.


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


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

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


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







inversion-of-control