Подтвердить что ты не робот

Castle Windsor или Spring.NET - преимущества и недостатки

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

4b9b3361

Ответ 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.