Ребят, а чем я рискую если обычно делаю так 1) слой

инфраструктуры
2) сервисный слой
3) domain
- usecases
- domain entities
4) слой данных

Где слой сервисов - это что-то вроде фасада для usecase. Как пример это регастрация пользователя через кафку, http, консоль. Сервисный слой предоставляет удобный интерфейс для эндпоинтов приложения, а сам использует один и тот же RegistrateUserUseCase.

И второй вопрос, можно ли вызывать несколько usecase друг за другом, допустим паттерн pipeline?

13 ответов

16 просмотров

регистрация юзера должна быть в рамках одного модуля, в котором вы можете накроить эти слои, а можете частью пренебречь

рискуешь сосредоточиться на изоляции слоёв, вместо изоляции модулей

Mikhail-Kobychev Автор вопроса
knopkod4v
рискуешь сосредоточиться на изоляции слоёв, вместо...

А если упарываться в горизонтальное деление то можно смешать слои случайно. Короче…

knopkod4v
а для чего ты вообще на слои делишь?

Наверное, чтобы каждый слой имел свою конкретную функциональную ответственность

knopkod4v
а что это даёт на практике?

Это дает выделить домен, сделать из него конечный автомат(в широком смысле), и дергать API вашей доменки(один из UseCase) из разных точек входа в приложение (админка/пользовательский экшн/консьюмер/метод старого API), и все эти точки входа могут дергать один единственный UseCase. Дальше уже вариативность и вкусовщина. UseCase может сам сверху работать с сущностью по анемичной модели, и следить за инвариантами системы, либо может делегировать это самой сущности, сделав ее "богатой", и заниматься только проверкой консистентности данных в приложении, для определения можно ли совершать эту команду, или нет с точки зрения бизнеса. В итоге получаем четкие границы слоев, каждый из которых имеет свои ответственности, и позволяет переиспользовать код, который находится на более низких уровнях(более близкими к ядру приложения) Можно погуглить картинку "Чистая архитектура", станет чуть понятнее

Александр Ерин
Наверное, чтобы каждый слой имел свою конкретную ф...

слои про дата флоу, про функциональную ответственность модули

Александр Ерин
Это дает выделить домен, сделать из него конечный ...

на самом деле очень важный вопрос в этом всем - управление транзакциями и точки расширения. очень удобно когда один юзкейс - одна логическая транзакция. Могут быть варианты при котором одна бизнес операция это больше одной логической транзакции. Как в этом случае структурировать дата флоу - отдельный вопрос

Александр Ерин
Это дает выделить домен, сделать из него конечный ...

1 и 3 пункты по сути про реюз кода я вижу проблему в том, что идея разделения на слои никак не ограничивает этот реюз Получается, что каждый юзкейс может зависеть от любого количества объектов из слоя домена и это выглядит как шаред стейт

Похожие вопросы

Обсуждают сегодня

Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта