2008-11-27 5 views
9

Примеры, которые я могу найти, используют двухуровневую архитектуру, где контроллеры непосредственно используют классы репозитория на уровне доступа к данным. См. here или here.Как использовать Autofac в трехслойном веб-приложении (ASP.NET MVC)?

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

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

Спасибо!

+0

Извините, у меня нет ответа на ваш вопрос, но ссылка на это приложение MVC Commerce, которое вы предоставили, была очень информативной и проницательной, поэтому спасибо. :) – Franck 2008-11-27 17:17:25

ответ

7

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

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

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

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

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

+0

ОК, поэтому в первом случае (все в Application_Start) проблема заключается в том, что веб-приложение теперь должно иметь прямую ссылку на сборку уровня доступа к данным? – 2008-11-28 09:29:02

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

  • Нет связанных вопросов^_^