Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Какие фреймворки внедрения зависимостей .NET стоит изучить?
Какие фреймворки внедрения зависимостей C#/.NET стоит изучить? А что уж говорить об их сложности и скорости.
редактировать (не автором): существует полный список IoC фреймворков, доступных в https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc :
- Замок Виндзор - замок Виндзор является лучшим из породы, зрелая инверсия контрольного контейнера доступна для .NET и Silverlight
- Unity -облегченный расширяемый контейнер инъекции зависимостей с поддержкой инъекции конструктора, свойства и метода
- Autofac -вызывающий привыкание контейнер .NET IoC
- DryIoc -простой, быстрый и полностью функциональный контейнер IoC.
- Ninject - ниндзя из .NET зависимых инжекторов
- StructureMap -оригинальный контейнер IoC / DI для .Net
- Spring.Net - Spring.NET-это платформа приложений с открытым исходным кодом, которая упрощает создание корпоративных .NET приложений
- LightInject -сверхлегкий контейнер IoC
- Простой инжектор -простой инжектор-это библиотека easy-to-use Dependency Injection (DI) для .NET 4+, которая поддерживает Silverlight 4+, Windows Phone 8, Windows 8, включая универсальные приложения и Mono.
- Microsoft.Extensions.DependencyInjection -контейнер по умолчанию IoC для ASP.NET основных приложений.
- Scrutor - расширения сканирования Assembly для Microsoft.Extensions.DependencyInjection.
- Против МЭФ - управляемой платформы расширения (MEF) осуществление используемый в Visual студии.
- TinyIoC -простой в использовании, беспроблемный, инверсионный контейнер управления для небольших проектов, библиотек и начинающих.
Далее следует оригинальный ответ.
Я предполагаю, что я мог бы быть немного придирчивым здесь, но важно отметить, что DI (инъекция зависимостей) является шаблоном программирования и облегчается, но не требует наличия фреймворка IoC (инверсия управления). IoC фреймворки просто делают DI намного проще, и они предоставляют множество других преимуществ сверх DI.
Тем не менее, я уверен, что именно об этом вы и спрашивали. О фреймворках IoC; я часто использовал Spring.Net и CastleWindsor , но настоящая боль в заднице была вся эта надоедливая конфигурация XML, которую вы должны были написать! Сейчас они почти все движутся в этом направлении, поэтому я использую StructureMap в течение последнего года или около того, и поскольку он перешел на плавную конфигурацию, использующую строго типизированные дженерики и реестр, мой болевой барьер в использование IoC упало ниже нуля! Я получаю абсолютное удовольствие от того, что теперь знаю, что моя конфигурация IoC проверяется во время компиляции (по большей части), и у меня не было ничего, кроме радости от StructureMap и его скорости. Я не скажу, что другие были медленными во время выполнения, но они были более сложными для меня, чтобы настроить и разочарование часто выигрывало день.
Обновление
Я использовал Ninject в своем последнем проекте, и это было абсолютное удовольствие использовать. Здесь мне немного не хватает слов, но (как мы говорим в UK) эта структура-'the Dogs'. Я бы очень рекомендовал его для любых проектов зеленых полей, где вы хотите быстро работать. Я получил все, что мне было нужно, из фантастического набора девяностых скринкастов Джастина Этериджа. Я вообще не вижу проблемы в том, чтобы перепрофилировать Ninject в существующий код, но то же самое можно сказать и о StructureMap в моем опыте. Это будет трудный выбор в будущем между этими двумя, но я предпочел бы иметь конкуренцию, а не застой, и там есть приличное количество здоровой конкуренции.
Другие IoC скринкасты также можно найти здесь на Dimecasts .
Все зависит от того, что вы ищете, так как у каждого из них есть свои плюсы и минусы.
-
Spring.NETявляется наиболее зрелым, поскольку он исходит из Spring из мира Java. Spring имеет очень богатый набор базы библиотек, которые расширяют его поддержка web, Windows и т. д. -
Castle Windsorявляется одним из наиболее широко используемых в платформе .NET и имеет самую большую экосистему, легко конфигурируемую / расширяемую, имеет пользовательское управление сроком службы, поддержку AOP, имеет неотъемлемую поддержку NHibernate и является полностью удивительным контейнером. Виндзор является частью целого стека, который включает Monorail, активную запись и т. д. NHibernate сам строится на вершине Виндзора. -
Structure Mapимеет очень богатую и мелкозернистую конфигурацию через внутренний DSL. -
Autofac-это контейнер IoC нового века со всей присущей ему поддержкой функционального программирования. Он также использует другой подход к управлению продолжительностью жизни, чем другие. Autofac все еще очень новый, но он толкает планку на то, что возможно с IoC. -
Ninjectя слышал, что больше голых костей с меньшим подходом больше (слышал, но не испытывал). - Самый большой дискриминатор
Unity: он от и поддерживается Microsoft (p&p). Unity имеет очень хорошую производительность и отличную документацию. Он также очень легко настраивается. В нем нет всех колокольчиков и свистков, как на карте замка / структуры.
Таким образом, в целом, это действительно зависит от того, что для вас важно. Я бы согласился с другими в том, чтобы пойти, оценить и посмотреть, какой из них подходит. Самое приятное, что у вас есть хороший выбор пончиков, а не просто желейный.
Автофак. https://github.com/autofac/Autofac это действительно быстро и довольно хорошо. Вот ссылка с сравнениями (сделанными после того, как Ninject исправил проблему утечки памяти).
http://www.codinginstinct.com/2008/05/ioc-container-benchmark-rerevisted.html
Ninject велик. Это кажется очень быстрым, но я не делал никаких сравнений. Я знаю, что Нейт, автор, провел некоторые сравнения между Ninject и другими фреймворками DI и ищет больше способов улучшить скорость Ninject.
Я слышал, как многие люди, которых я уважаю, говорят хорошие вещи о StructureMap и CastleWindsor. Это, по моему мнению, большая тройка, на которую нужно смотреть прямо сейчас.
Я использую простой инжектор :
Simple Injector - это простая, гибкая и быстрая библиотека инъекций зависимостей, которая использует лучшие практики для направления ваших решений к яме успеха.
Я большой поклонник Касла. Я люблю удобства, которые он также предоставляет за пределами истории контейнера IoC. Это действительно упрощает использование NHibernate, logging, AOP и т. д. Я также использую Binsor для настройки с Boo и действительно влюбился в Boo как язык из-за этого.
Я провел большую часть дня, безуспешно пытаясь заставить работать самый простой пример Spring.NET. Никогда не мог понять, как заставить его найти мой assembly из файла XML. С другой стороны, примерно за 2 часа я смог заставить Ninject работать, включая тестирование интеграции как с NUnit, так и с MSTest.
Я использовал Spring.NET в прошлом и имел большой успех с ним. Я никогда не замечал никаких существенных накладных расходов с ним, хотя проект, в котором мы его использовали, был довольно тяжелым сам по себе. Потребовалось лишь немного времени, чтобы прочитать всю документацию и настроить его.
Самое замечательное в C# - это то, что он идет по пути, проторенному годами разработчиков Java до него. Итак, мой совет, вообще говоря, когда вы ищете инструменты такого рода, - это искать твердый ответ Java и посмотреть, существует ли еще адаптация .NET.
Таким образом, когда речь заходит о DI (а там так много вариантов, что это действительно дело вкуса), это Spring.NET . Кроме того, всегда разумно исследовать людей, стоящих за проектами. У меня нет проблем с предложением SourceGear продуктов для управления версиями (за пределами их использования), потому что я уважаю Эрика Синка. Я видел, как говорит Марк Поллак, и что я могу сказать, парень просто получает это.
В конце концов, существует много фреймворков DI, и вам лучше всего сделать несколько образцов проектов с несколькими из них и сделать грамотный выбор.
Удачи вам!