Вопрос

Мне абсолютно необходимо использовать IoC-контейнер для разделения зависимостей во все более сложной системе корпоративных сервисов.Проблема, с которой я столкнулся, связана с конфигурацией (т.Регистрация).В настоящее время у нас есть 4 разные среды: от разработки до производства и между ними.Эти среды имеют множество конфигураций, которые незначительно различаются от среды к среде;однако во всех случаях, когда в настоящее время я могу думать о, зависимости между компонентами не различаются от среды к среде, хотя я мог что-то упустить и/или это, очевидно, могло измениться.

Итак, главный вопрос: есть ли у кого-нибудь подобный опыт использования инфраструктуры IoC?Или может ли кто-нибудь порекомендовать одну среду перед другой, которая обеспечит гибкую регистрацию, будь то посредством какого-то соглашения или упрощенной информации о конфигурации?Смогу ли я по-прежнему получить пользу от свободного интерфейса или я застрял в XML — я бы хотел избежать XML-ада.

Редактировать: Это среда .Net, и я смотрел на Windsor, Ninject и Autofac.Похоже, что все они теперь поддерживают оба метода регистрации (fluent и XML), хотя поддержка лямбда-выражений в Autofac немного отличается от других.Кто-нибудь использовал это в аналогичной среде с несколькими развертываниями?

Это было полезно?

Решение

я использую Нинжект.Мне нравится тот факт, что мне не нужно использовать Xml для настройки зависимостей.Я могу просто использовать код C#.Есть несколько способов сделать это также.Я знаю, что в других библиотеках есть такая функция, но Ninject предлагает быстрое создание экземпляров, он довольно легкий, имеет условную привязку, поддерживает компактную структуру и поддерживает Silverlight, 2.0.Я также использую обертку поверх него на случай, если в будущем заменю его на другой фреймворк.Вам обязательно стоит попробовать Ninject при выборе фреймворка.

Другие советы

Если вы хотите абстрагировать свой контейнер и иметь возможность использовать разные из них, рассмотрите возможность его внедрения так, как я пытался это сделать. здесь

Я не уверен, подойдет ли это вашему конкретному случаю, вы не указали, на какой платформе вы работаете, но я добился большого успеха с Структура МОК замка Виндзор.Зависимости настраиваются в файле конфигурации (это платформа .NET).

Посмотрите на обычных носорогов Айендес.Он использует абстракцию над контейнером IoC.Чтобы вы могли переключать контейнеры, когда захотите.Что-то вроде контейнера.Resolve всегда присутствует в каждом контейнере.

Я использую Structuremap для выполнения грязной работы, у него удобный интерфейс и возможности XML, и он достаточно мощный для большинства вещей, которые вы хотите сделать.У каждого из них есть свои плюсы и минусы, поэтому небольшая абстракция, чтобы вы могли легко переключаться (никогда не знаешь, как долго они будут существовать), это хорошо.В остальном я думаю, что Spring.Net, Castle Windsor, Ninject и StructureMap уже не так уж далеки друг от друга.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top