2016-02-28 8 views
2

Может ли какой-либо орган объяснить, как установить зависимость между слоями в архитектуре на основе слоев с помощью DI IOC, а также пояснить, когда мы создаем корень компоновки в слое пользовательского интерфейса, тогда нам нужно передать всю DLL в слой пользовательского интерфейса это оставляет возможности для разработчика пользовательского интерфейса напрямую обращаться к объекту слоя DAL. Это нарушит правило, в котором слой пользовательского интерфейса не сможет напрямую обращаться к объекту DAL.Настройка инверсии зависимостей между слоями

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

Здесь технология предпочтение ASP.NET MVC 4, REST API Service, библиотека Enterprise (Repository паттерн)

ответ

1

Я думаю, что это разница между UI слоя "не должен" получить доступ к DAL слоя, и " не могу". Было бы очень сложно обеспечить выполнение слоев таким образом, чтобы DAL действительно недоступен для слоя пользовательского интерфейса. Дело в том, что вы должны не получить доступ к DAL из пользовательского интерфейса.

Так же, как вы не должны получать доступ к самой базе данных из слоя пользовательского интерфейса, но ничто не будет препятствовать разработчику-изгоев.

Кстати, вы вручную создаете свой корень композиции? Вероятно, вам стоит взглянуть на структуру DI. Он будет изолировать многие из этих зависимостей, и да, он должен знать обо всех слоях, но он сохраняет эти вещи в одном довольно красивом и чистом месте. У этого парня есть достойная оценка нескольких из них: https://rules.ssw.com.au/do-you-know-the-best-dependency-injection-container-(aka-do-not-waste-days-evaluating-ioc-containers)

1

Вы смешиваете N-Tier с DI. Оба они не имеют отношения к делу и не зависят друг от друга. Для достижения наилучшего результата вам нужно будет провести глубокое исследование как для концепции, так и для нескольких прототипов и выбрать, какой дизайн лучше всего подходит для вас.

Это просто потому, что не существует «правильного» или «неправильного» способа реализации обеих концепций с использованием этого технологического стека. Существует слишком много способов добиться этого.

Например: простой 3-х уровневый. Состоит из DAL (с моделями данных), BLL, ссылающегося на DAL и Презентация

4-уровневый. Модель данных слоев, DAL ссылки модели данных, BLL ссылки модели данных, представление с помощью Dependency Injection

DDD (домен разработка на основе), которая имеет модель предметной области, модель предметной области базы данных и уровень представления (дополнительно с CQRS)

Делайте то, с чем вы больше всего знакомы. Refactor/переписать позже.

+0

Спасибо Fendy за ответ, как мы судить, какой дизайн лучше какие-либо указания – sameer

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