IoC Контейнер Конфигурация / Регистрация - PullRequest
1 голос
/ 05 сентября 2008

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

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

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

Ответы [ 4 ]

3 голосов
/ 09 февраля 2009

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

2 голосов
/ 05 сентября 2008

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

1 голос
/ 05 сентября 2008

Посмотрите на Ayendes Rhino Commons. Он использует абстракцию над контейнером IoC. Так что вы можете переключать контейнеры в любое время. Что-то вроде контейнера. В каждом контейнере всегда есть разрешение.

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

1 голос
/ 05 сентября 2008

Я не уверен, подойдет ли это для вашего конкретного случая, вы не упомянули, на какой платформе вы работаете, но я добился большого успеха с IOC-системой Castle Windsor . Зависимости устанавливаются в конфигурационном файле (это .NET Framework)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...