Надлежащее использование Виндзорского контейнера в ASP.NET и ASP.NET MVC

Для нового проекта я использую Виндзорский контейнер для обеспечения Внедрения зависимости (DI). DI должен предоставить мне слабую связь и высокую тестируемость. Так как я плохо знаком с предметом внедрения зависимости, я испытываю затруднения при переносе моей головы, как использовать его правильно.

Это - то, что я изучил для статей и поиска с помощью Google: у Вас должен быть один момент выполнения контейнера, которое создается при запуске. Зависимость объектов должна заботиться о при создании объекта. Ну, пока неплохо.

Теперь для моей ситуации. В моем слое данных, который находится в другом проекте, мои классы данных полагаются на некоторую форму входа, который установлен в конструкторе. Но так как это в другом проекте, это не может получить доступ к контейнеру.

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

В то время как это казалось бы, что хорошее решение, читая некоторые статьи дает мне чувствование, что я пропускаю что-то важное, что существуют другие опции достигнуть результата, я хочу (мои классы слоя данных, созданные с DI). Таким образом, я мог использовать, прибывают руководство. Примеры исходного кода были бы потрясающими, но объяснения или ссылки на другие ресурсы также помогут мне много.

1
задан Peter Mortensen 15 July 2011 в 15:52
поделиться

2 ответа

Недавно я написал несколько постов в блоге, которые могут быть вам полезны.

В основном идея заключается в том, что вам не нужно ссылаться на ваш контейнер нигде, кроме Global.asax

2
ответ дан 2 September 2019 в 23:10
поделиться

В этом сообщении дается хороший обзор настройки вашего проекта ASP.NET MVC для использования Windsor для разрешения зависимостей вашего контроллера. Как заметил Кштоф, вы должны ссылаться на контейнер только в Global.asax.

http://blog.andreloker.de/post/2009/03/28/ASPNET-MVC-with-Windsor-programmatic-controller-registration.aspx

0
ответ дан 2 September 2019 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: