2011-01-13 3 views
4

Я довольно новичок в концепции DI/IoC и хотел бы использовать Autofac в трехслойном приложении ASP.NET Webforms.с использованием Autofac в многоуровневой архитектуре

  • Пользовательский интерфейс: веб-сайт ASP.NET.
  • BLL: уровень бизнес-логики, который вызывает репозитории на DAL.
  • DAL: .EDMX-файл (Entity Model) и ObjectContext с классами репозитория, которые абстрагируют операции CRUD для каждого объекта.
  • Сущности: организации POCO. Настойчивость Невежественная. Создано Microsoft ADO.Net POCO Entity Generator.

Я задал более общий вопрос here. В принципе, я хотел бы создать obejctcontext для HttpContext в моем DAL. Но я не хочу добавлять ссылку на DAL в пользовательском интерфейсе или напрямую обращаться к HttpContext в DAL. Я предполагаю, что здесь появляются инструменты IoC. Ответ на мой предыдущий вопрос - очень хороший пример использования Виндзорского замка. Я хотел бы использовать Autofac в качестве моего инструмента IoC и не знаю, как этого добиться. (Как получить доступ к DAL в application_start для регистрации компонента, пока я не хочу ссылаться на него в своем пользовательском интерфейсе, каковы правильные ссылки на возможность использования компонента DAL в BLL с Autofac, Должен ли я регистрировать BLL в качестве компонента с Autofac тоже)

Извините, что люди не задают явный вопрос и не требуют какого-то рабочего примера, но я очень незнакомый всей концепции IoC, и я не думаю, что смогу добиться ее использования в моем текущем времени - ограниченный проект.

ответ

6

Autofac модулей являются техником, которую вы ищете: http://code.google.com/p/autofac/wiki/StructuringWithModules

А группы модулей, связанные с конфигурацией, например, ваши типы DAL и могут быть загружены в приложение через Web.config: http://code.google.com/p/autofac/wiki/XmlConfiguration#Modules

Это позволит избежать любых трудных ссылок между вашим веб-приложением и DAL.

Если вы хотите зарегистрировать компоненты DAL для каждого запроса, используйте модификатор совместного использования InstancePerLifetimeScope(). Это будет работать так же, как InstancePerHttpRequest(), если вы не настроите иерархию жизни в своем приложении (маловероятно.)

Удачи вам!

Nick

+0

Спасибо, Ник. Не знал, что я могу использовать Web.config с Autofac. – Kamyar

+0

hi @ nicholas-blumhardt, знаете ли вы, есть ли какой-либо пример проекта с моделью данных Entity - autofac - mvc4? заранее спасибо!. –

Смежные вопросы