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

Тык, я стремлюсь написать приложение с onion-архитектурой, вот такая структура

файлов соблюдает ей?

23 ответов

12 просмотров

Это больше про то, как ты будешь с ней обходится))) Вообще нормально)

Имплементация репозиториев должна быть в инфраструктурном слое. Layer это типа проект предлагается создавать? Ну +- нормально, но поверхностно

!# ramazi- Автор вопроса
βλαδιμιρ
Имплементация репозиториев должна быть в инфрастру...

да, Layer - это проект. А есть какой-нибудь подобный проект для примера? Что имеется ввиду под поверхностно? И почему стоит отделять интерфейсы от имплементации?

Вью модели тоже хранят в domain? И эти вью модели представляют конкретные классы или выше по слоям используют интерфейсы?

!# ramazi- Автор вопроса
Vazovsk1y
Вью модели тоже хранят в domain? И эти вью модели ...

ну получается что эти view model - это просто классы, которыми я буду оперировать в сервисах и контроллерах

!# ramazi
да, Layer - это проект. А есть какой-нибудь подобн...

А почему стоит выделять для репзиториев отдельный слой? Может их можно вместе с интерфейсами внутри DAL. Ибо дал это доступ к данным, а репозитории именно эту роль и выполняют или то что там будет лежать голый контекст с миграциями это норма?

!# ramazi
ну получается что эти view model - это просто клас...

В сервисах ты получаешь вью модель, мапишь ее в модель и швыряешь в репу?

!# ramazi- Автор вопроса
Vazovsk1y
В сервисах ты получаешь вью модель, мапишь ее в мо...

да, звучит как будто так делать не надо)

!# ramazi- Автор вопроса
Vazovsk1y
А почему стоит выделять для репзиториев отдельный ...

оо, думаю так даже лучше будет, не подумал об этом

!# ramazi
да, звучит как будто так делать не надо)

Почему, вроде нормально звучит.

!# ramazi
да, Layer - это проект. А есть какой-нибудь подобн...

https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/ Мне вот эта статья нравится. Ее можно по чуть-чуть читать, там объясняется не только как разделять, но и зачем. А это твоя картинка? Я думал, ты ее откуда-то взял.

Блин, я надеялся девушка будет в гс, эх..

!# ramazi- Автор вопроса

а имлеминатиции лучше делать прям в проекте Persistence(DAL) или новый проект под это создавать?

можно там же

βλαδιμιρ
можно там же

А какова задача сервисов? Они есть оберткой над репозитриями? Т.е они получают извне(с Ui) вью модели, маппят их в модели, кидают в репозитории которые сохраняют внутри базы эти смапленные модели. Но что возвращают эти сервисы?

Vazovsk1y
А какова задача сервисов? Они есть оберткой над ре...

Сервисы уровня application реализуют логику на уровне взаимодействия с инфраструктурными элементами. Это может быть запись чтение из бд, отправки смс, почты, сообщений в очередь и т.д. По хорошему методы сервисов должны принимать и возвращать какие-то дто

Vazovsk1y
А какова задача сервисов? Они есть оберткой над ре...

Если все, что делает приложение, это сохранение в базу, и доставание из базы, то такая сложная архитектура и не нужна. Роль сервисов в реализации юзкейса: достать доменную модель из базы, сходить в сторонние сервисы за необходимыми данными, вызывать одно или несколько действий на доменной модели, сохранить результат, обработать сайдэфекты (обычно навешаны на доменные события), сформировать ответ и т.д.

Т.е доменные модели могут быть не просто пустыми(имею ввиду имея только свойства), но могут иметь и логику(методы всякие), верно? А валидация данных которые приходят извне тоже лежит на сервисе?

Vazovsk1y
Т.е доменные модели могут быть не просто пустыми(и...

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

!# ramazi- Автор вопроса
βλαδιμιρ
Если все, что делает приложение, это сохранение в ...

вот смотри, это то, что я буду возвращать из сервисов, эту сущность лучше ведь по сути в сервисы и поместить? Поскольку используется она ведь только в них, верно? p.s до этого всегда её хранил в domain и во всех ролик видел что её хранят там же...

!# ramazi
screenshot вот смотри, это то, что я буду возвращать из серви...

Ну смотри, StatusCode это понятие http протокола, чисто UI штука, и то, что она у тебя просочилась в абстракцию сервисного слоя это плохо. Можно ли так делать, ну наверное можно, если плюсы которые ты в этом видишь перевешивают нарушение подхода. Если забыть про статус код, можно ли завести какую-нибудь базовую модельку ответа, которая бы хранила в себе данные или сообщение об ошибке? Можно, проблемы в этом я никакой не вижу. Если захочешь попробовать избавиться от статус кода, попробуй подумать, зачем вообще ты его возращаешь. Например, я обычно разделяю 4хх и 5хх, чтобы клиент знал, стоит ли ему ретраить (4хх не стоит). Если у тебя похожий случай, в общей модельке ответа в сервисах можно было бы завести енамку "тип ошибки", например, фатальная, или временная.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта