Циркулярная ссылка между уровнями приложения и инфраструктуры .Net Core - PullRequest
1 голос
/ 17 июня 2019

Я занимаюсь разработкой приложения, которое имеет три уровня: приложение, инфраструктура и домен. Прикладной уровень - это WebApi, а остальные - это библиотека классов. Уровень инфраструктуры зависит от уровня домена и приложения. Прикладной уровень ссылается только на уровень домена.

Уровень приложения определяет интерфейсы, которые реализует уровень инфраструктуры.

Ссылка на приложение Домен. Инфра ссылки Домен. Инфра ссылки приложение.

Однако теперь, когда я настраиваю внедрение зависимостей, класс viaStartup, проект, представляющий уровень приложения, должен ссылаться на проект инфраструктуры, который вызывает циклическую зависимость.

Может кто-нибудь помочь мне, как решить эту проблему?

спасибо всем!

Ответы [ 2 ]

1 голос
/ 23 июня 2019

Уровень приложения определяет интерфейсы, которые реализует уровень инфраструктуры.

Это наиболее вероятная причина проблемы.

Если вы следуете Принципу инверсии зависимостей , то, как выразится APPP , "клиенты [...] владеют абстрактными интерфейсами".

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

0 голосов
/ 18 июня 2019

Только не определяйте интерфейсы в WebApi или любом другом исполняемом проекте в этом отношении.Любая библиотека классов, пытающаяся реализовать такой интерфейс, вынуждена зависеть от всего проекта WebApi!Вы действительно не хотите этого.Так что в этом случае я бы разделил эти интерфейсы в их собственной библиотеке классов, и при этом вы разорвете круг.Я думаю, что перемещение их в инфраструктуру разрушило бы всю концепцию инверсии контроля

...