Вчера я читал некоторые статьи на этом сайте, пока я наткнулся на статью об этих двух новых инструментах IoC. Кого я должен сначала изучить? Есть ли какая-то спецификация, о которой следует использовать, когда?
Castle Windsor или Spring.NET - преимущества и недостатки
Ответ 1
Ни Castle.Windsor, ни Spring.NET не являются новыми.
- Замок Виндзор существует с конца 2004 года.
- Spring.NET существует с начала 2006 года.
Они представляют собой два сопоставимых контейнера DI, которые в основном нацелены на предоставление тех же услуг, поэтому вам не нужно изучать их друг перед другом, и вам также не нужно проконсультироваться с какой-либо спецификацией на когда использовать какой.
Я использую Castle Windsor около полугода, и я в целом доволен этим. Spring.NET. Мне еще нужно взглянуть, но похоже, что он очень тесно связан с конфигурационной системой и не поддерживает программную регистрацию, и если это правда, это было бы серьезным недостатком в моих глазах.
Castle Windsor и Spring.NET не являются единственными контейнерами DI, доступными для .NET. Здесь представлен более крупный список:
Ответ 2
Я один из коммиттеров проекта Castle (который включает Windsor), поэтому я могу быть предвзятым, но.
Windsor очень расширяемый, позволяет настраивать и сгибать его по вашим потребностям. Он обеспечивает хороший свободный API регистрации, так что вам не нужно писать тонну XML. Существует также множество расширений, которые можно использовать для интеграции Windsor с другими инфраструктурами, такими как инфраструктура связи ORM (WCF, NServiceBus) и т.д.
Плюс у него очень активное и отзывчивое сообщество, поэтому, если у вас есть какие-либо вопросы, они получат ответы довольно быстро большую часть времени.
Ответ 3
Я думаю, что оба варианта лучше с точки зрения конфигурации. Нет большой разницы, но оба они лучше, чем Unity. Почему, черт возьми, вам нужна ассоциация marshalbyrefobject в управлении зависимостями. Но если мы сравним spring.net и Castle Windsor, то оба хороши. Но возникает вопрос, какая из них - полная контейнерная структура. Как и нам нужны Аспекты для проверки на зависимость. Таким образом, winsor-утилита не работает. Думаю, его глупо сравнивать String.net с Castle Windsor или что-то вроде этого, потому что все утилиты и spring - полная контейнерная инфраструктура. И все люди, которые говорят, что они тяжелые, пожалуйста, проверьте все проблемы утечки памяти. Это не spring или замок Виндзор, его глупый способ написания кода. Итак, наконец, ответ: если вам нужно использовать DI только Windsor, но если вам нужна полная структура для любого решения, используйте spring.net.