170 похожих чатов

А зачем здесь интерфейс? почему нельзя просто сделать какой-нибудь класс

OrderHandler с методом GetNewOrderAsync() ?

2 ответов

3 просмотра

А тут кто как уже делает. Сервисы это простой и понятный способ. К тому же их можно комбинировать друг с другом. Ну то бишь типичный юзкейс - анемичные доменные модели, тонкие контроллеры и толстенный слой сервисов. Те, кто достиг дзена, что репозитории - мусор, если речь идёт о EF - просто используют контексты внутри сервисов и особо не переживают. Типичная трёхзвенка с тонкими контроллерами, толстыми бизнесовыми сервисами и тонкой анемичной моделью, представляющей из себя 1-n контекстов и dto'шки с наборами get'теров и set'теров.

Чтобы Handler'ы готовить - это уже ближе к CQRS, но сам по себе он особо проку не принесёт. Его обычно вместе с DDD желательно - тогда от него будет польза. Потому что кода писать больше, чем в случае с сервисами. Потому что сервисы, внезапно, никуда не деваются) Просто они перестают делать бизнесовые вещи, ну то бишь в сервисном слое остаётся, как правило - сугубо инфраструктурная хрень, а-ля "отправить e-mail" или что то вроде того. А переиспользование бизнесовых правил сводится к набору спецификаций в виде Expression<Func<T, bool>>. Ну то бишь тут приходится жертвовать унификацией в обмен на гибкость. Потому что в рамках выполнения отдельно взятой команды, я, например, могу вытащить конекшон из контекса и сделать прямой SQL-запрос, чтобы было быстрее. Ну или что-то навроде того. Отдельная команда/запрос уже покрывает как правило какой-то конкретный юз-кейс. Ну то биль если у тебя минимум логики и тупо CRUD - это будет лютейшим оверкилом. А если логики столько, что жопой ешь, то оно помогает бороться со сложностью, но как я уже подметил - ценой большего количества кода.

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

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

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
Хтось використовував Vapor на Windows?
Jaroshevskii
15
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Оба варианта в целом подходят, но скорее создание конфликтной ситуации (на пустой основе). В прошлый раз он сказал мне про ESP32, я забыл про этот микроконтроллер, ошибся, я п...
КТ315
4
Карта сайта