Вот уже долгое время пытаюсь освоить Unity IoC для применения Dependency Injection в моих приложениях. Каждый раз все стремление разбивается об одни и те же проблемы. Но об этом далее и по порядку.
Я пишу ASP.NET MVC приложение. Для приложения выбрана архитектура N-Layer. Исходя из архитектуры, в приложении 4 слоя (DAL, BLL, Web, DTO). Каждый слой зависит от своих соседей и поэтому используется инверсия управления.
Ранее я использовал для DI пакет Ninject, который позволял делать свойства, вида
[Inject]
public IMyInterface injectetProp {get; set;}
в спец. файле я указывал для какого интерфейса какой экземпляр использовать и все. Каждый раз, когда конструировался например контроллер, сразу инжектировался объект, который этот интерфейс реализовывал.
Несколько позже мне рассказали про Unity и про то, что его конфигурацию можно задавать в конфигурационных файлах приложения, тем самым исключается перекомпиляция проекта в случае, если нужно изменить зависимости. Это не могло меня не удивить. И вот я решил перейти на Unity.
Я прочитал много статей про DI с использованием Unity, но везде было отдельно либо конфигурирование, либо использование. Мне не удалось найти ответа на мои вопросы, вероятно просто проглядел и прошу вас ткнуть так сказать носом, где это расписано =)
Собственно сами вопросы:
– Возможно ли вынести конфигурацию DI в web.config, и чтобы эта конфигурация была одна для всех слоев приложения, или придется дублировать настройки разрешения интерфейсов в каждом слое?
– Доступен ли какой-нибудь простой механизм разрешения зависимостей, как тот, который я использовал в Ninject или необходимо будет везде, где нужно разрешить зависимость, создавать UnityContainer и делать Resolve через него? Конечно это не слишком сложно, просто после Ninject выглядит топорно.
Спасибо за помощь, мне просто не у кого спросить, кроме как у сообщества.