Многоуровневая архетектура(Class Library)

90
28 марта 2022, 14:30

Пусть нужно сделать проект с многоуровневой архитектурой. Как и в каких случаях нужно делать так: Class Libraries: Entites, DLayer, DTO,BLayer, Presenttion Layer, Core или же так: Class Libraries: DLayer, BLayer, Presentation Layer, Core Так вот, со второй реализацией понятно, а что насчет первой? Возможна ли такая реализация??

Answer 1

Я не знаю, откуда вы откопали такую архитектуру и зачем, но ответ -- да, возможна.

У вас вынесены в отдельные проекты Entities (Вероятно из Core/Domain отдельные Entities) и Dto (тут сложнее, но это вероятно dto'шки между application и каким-то другим слоем).

Меня в своё время много били по рукам натаскивая на тему, что можно делать один-единственный проект в solution'е и уметь видеть архитектурные границы не растаскивая классы по отдельным проектам.

И вот там как раз пришло понимание для чего это вообще может пригодиться. Если вам нужно собрать nuget-пакет из dto'шек или сущностей, чтобы потом другие команды могли воспользоваться артефактами вашего решения (подключить в свой и т.п.), при этом им не надо тащить всё ваше приложение, а только ваши классы -- то в этом случае как раз удобно иметь отдельные сборки с определениями классов.

Других практических сценариев я не знаю, но давайте прямо: если вам попадётся такая архитектура -- просто спросите её автора, какими требованиями он руководствовался. Фаулер говорит, что каждая архитектурная граница не только даёт какую-то выгоду, но и стоит определённых ресурсов и когда вы напишете несколько проектов вы поймёте до чего это порой нудно -- делать однотипные лишние действия только из-за того, что оформили лишнюю границу между слоями приложения.

В комментариях вам тоже хорошо сказали, плюсую.