На мой взгляд, то, что вы пытаетесь достичь, - это хороший способ архитектовать проект. Я тоже делаю то же самое; просто небольшая разница, которую я объясню ниже. Не ссылаясь на DAL в API, убедитесь, что каждый вызов DAL осуществляется только через BLL. Это необходимо, потому что я хочу разместить всю логику обработки данных в одном месте. Если он распространен, трудно найти проблемы.
У меня есть четыре проекта:
- Utils (ваш "блабли" материал идет здесь) [Ссылки ничего]
- ВВЛ (ваш материал базы данных здесь идет) [Ссылки Utils]
- BLL (ваш логика вещей здесь идет) [Ссылки DAL и Utils, если необходимо]
- Api (ваш API материал здесь идет) [Ссылки BLL и Utils, если необходимо]
Это односторонняя ссылочная цепочка. DAL => BLL => API
. Ссылки в обратном порядке не должны существовать. Utils
должно быть обычным явлением, в котором должны идти общие вещи, такие как объявления сущностей, исключения, перечисления.
Примечание: Если вы не ссылаетесь на DAL в API, вам необходимо его развернуть.
Чтобы избежать использования Utils
в API, вам может потребоваться добавить еще один слой DTO и сопоставить их с объектами. См. Мой другой question на том же самом.
Вы должны ссылаться на свой основной проект DAL, если BLL зависит от него. В противном случае, как BLL найдет функции для вызова? Скомпилированный код DAL будет отсутствовать. Вот как это работает, не о чем беспокоиться. – ADyson
Но вы BLL должны использовать DAL где-нибудь? – McNets
@ADyson мой проект BLL использует DAL, но почему shoud я добавляю ссылку на DAL в API, если я отношусь к BLL в нем? –