Как использовать Autofac в трехуровневом веб-приложении (ASP.NET MVC)? - PullRequest
9 голосов
/ 27 ноября 2008

Примеры, которые я могу найти, используют двухуровневую архитектуру, где контроллеры напрямую используют классы хранилища на уровне доступа к данным. См. здесь или здесь .

Где бы вы регистрировали компоненты из уровня доступа к данным, если у вас есть уровень сервиса или бизнес-логики, который использует эти компоненты? На уровень доступа к данным в идеале не следует ссылаться с уровня пользовательского интерфейса, верно? Поэтому Application_Start не будет подходящим местом для этого.

Что было бы лучше?

Спасибо!

1 Ответ

7 голосов
/ 27 ноября 2008

Что-то должно знать о том, какие реализации вы хотите использовать. Обычно есть 3 способа сделать это:

  1. во время компиляции, что использует Autofac
  2. во время выполнения из предопределенного конфигурационного файла, который может сделать Castle Windsor
  3. во время выполнения с конфигурацией dyanamic

С Autofac у вас есть несколько вариантов

  1. Соедините все вместе в Application_Start
  2. Передать ответственность другому компоненту, который реализует фабричный шаблон и регистрирует необходимые компоненты.

Для # 2 я бы реализовал что-то вроде интерфейса IContainer, чтобы ваша платформа IoC была слабо связана с вашей системой. Затем попросите ваши реализации доступа к данным использовать этот интерфейс для регистрации необходимых компонентов.

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