0

В моем проекте ASP.NET MVC 4 C# у меня есть 3 слоя. Данных, бизнеса и Интернета. Я следую шаблону репозитория и услугам.Autofac, IoC & Separation of Layers

Я использую Autofac для инъекций зависимости. Я сделал регистрацию компонентов в global.asax. Таким образом, мне пришлось ссылаться на свой уровень данных, где я реализовал репозитории.

Я думаю, что это нарушает правило, потому что мой веб-проект имеет ссылку на слой данных.

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

Есть ли способ зарегистрировать компоненты без ссылки на слой данных?

спасибо.

+0

Где интерфейсы, которые реализует уровень данных? –

+0

Уровень данных состоит из общего репозитория и единицы рабочих классов, а также классов репозитория, полученных из общего репозитория. На самом деле у меня есть 4 проекта, 3 из них упомянуты в вопросе, а четвертый - это проект домена, где я реализую сущности (сначала кодовые). Сервисы находятся в бизнес-слое. – SherleyDev

+1

Связанные: http://stackoverflow.com/a/9503612/126014 –

ответ

1

На мой взгляд, у вас есть именно то, что вы ищете.

Вы не хотите эталонную структуру, как это: Либ => LibB => LibC => ...

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

Это нормально, чтобы ссылаться на ваш уровень данных на уровне презентации (если это ваш корень композиции).

Модули полезны, если вам нужны разные корни композиции для разных частей вашего приложения. Гипотетическим примером может служить область администрирования и область клиентов. В случае, если их зависимости различны, вы можете использовать корень композиции для каждой области, хотя они живут в одном проекте.

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