Size: a a a

Software Design/Architecture/Zen

2021 February 15

SB

Sergei Baikin in Software Design/Architecture/Zen
Segmentation Fault
Объясните, пжл, в концепции DDD доменный сервис может зависеть от интерфейса репозитория? Если да, то интерфейс репозитория должен быть объявлен в доменном слое или в инфраструктуре?
Имхо важно что у вас домен не завист от инфрастуктуры а где обявлен дело десятое
У вас они вообще все вместе внутри одной фичи могут быть объявлены рядышком
источник

R

Roman in Software Design/Architecture/Zen
Sergei Baikin
Имхо важно что у вас домен не завист от инфрастуктуры а где обявлен дело десятое
У вас они вообще все вместе внутри одной фичи могут быть объявлены рядышком
Хотелось бы кстати увидеть удачные примеры структуры файлов проекта
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Roman
Хотелось бы кстати увидеть удачные примеры структуры файлов проекта
Мы вот так обычно делаем
источник

R

Roman in Software Design/Architecture/Zen
Вот у меня сейчас так же и неудобно. Куча файлов с одним названием, грепать — боль. Но удобно в том плане, что предметная область лежит особняком
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Roman
Хотелось бы кстати увидеть удачные примеры структуры файлов проекта
Folder-by-type or Folder-by-feature

LIFT https://angular.io/guide/styleguide#lift
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Roman
Вот у меня сейчас так же и неудобно. Куча файлов с одним названием, грепать — боль. Но удобно в том плане, что предметная область лежит особняком
Почему неудобно? Очень удобно. Мы из самых низов прокидываем ключевые компоненты на второй уровень. Тогда код выглядит примерно так:

from ad_matching.domain import IPersonRepository

from ad_matching.infrastructure import PersonRedisRepository

и тп
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Roman
Вот у меня сейчас так же и неудобно. Куча файлов с одним названием, грепать — боль. Но удобно в том плане, что предметная область лежит особняком
А в чем удобство?
Удобство это про субъективность
Мне вот удобно когда все что мне надо дял работы с фичей лежит в одном месте и не надо по пректу прыгать
Ну и хороший для меня признак
Если надо удалить фичу то это должна быть одна папка а не куча папок и файлов по всему проекту
источник

R

Roman in Software Design/Architecture/Zen
Segmentation Fault
Почему неудобно? Очень удобно. Мы из самых низов прокидываем ключевые компоненты на второй уровень. Тогда код выглядит примерно так:

from ad_matching.domain import IPersonRepository

from ad_matching.infrastructure import PersonRedisRepository

и тп
Даблшифт в IDEA сходит с ума
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Roman
Даблшифт в IDEA сходит с ума
Так настройте фильтры
источник

R

Roman in Software Design/Architecture/Zen
Не под каждый запрос же их настраивать:)
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Хотя плюс вашей Folder-by-type то что думать не надо. Но как вы зависимости и каплинг с кохиженом при этом отслеживаете не представляю
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Sergei Baikin
Хотя плюс вашей Folder-by-type то что думать не надо. Но как вы зависимости и каплинг с кохиженом при этом отслеживаете не представляю
У нас микросервисы и фактически - микросервис = один контекст, как следствие проблем с каплингом и проч не возникает
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Segmentation Fault
У нас микросервисы и фактически - микросервис = один контекст, как следствие проблем с каплингом и проч не возникает
Да не все норм удобно ващей команде так ну и фиг бы с ним. Я не знаю почему вы контекст решили не делится на модели\модулт\аггрегаты\ фичи, ну да вам виднее.
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Sergei Baikin
Да не все норм удобно ващей команде так ну и фиг бы с ним. Я не знаю почему вы контекст решили не делится на модели\модулт\аггрегаты\ фичи, ну да вам виднее.
Потому что в рамках проекта (микросервиса, контекста) одного модуля (файла) entities достаточно. Там лежит максимум три сущности, пару OV и еще что-нибудь. В мире pythonне принято на каждый класс создавать новый файл (модуль). С фичами еще проще. Один микросервис - одна фича (и её вариации).
источник

RL

Romka Los in Software Design/Architecture/Zen
Всем доброго времени суток! Подскажет кто удобные инструментарии рисования диаграмм-контекстов? С возможностью указать какие контексты с какими пересекаются? Мб указать, что один контекст лежит в другом контексте. Хочется вывести всё это дело в виде кругов Эйлера и понять как корректно «распилить» код по каталогам.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Romka Los
Всем доброго времени суток! Подскажет кто удобные инструментарии рисования диаграмм-контекстов? С возможностью указать какие контексты с какими пересекаются? Мб указать, что один контекст лежит в другом контексте. Хочется вывести всё это дело в виде кругов Эйлера и понять как корректно «распилить» код по каталогам.
draw io, miro, lucidchart? А вообще контексты "не пересекаются" - у них есть зависимости.

погугли "nick tune bounded context canvas".
источник

RL

Romka Los in Software Design/Architecture/Zen
Sergey Protko
draw io, miro, lucidchart? А вообще контексты "не пересекаются" - у них есть зависимости.

погугли "nick tune bounded context canvas".
За nick tune bounded context canvas - СПС, интересно, гляну. Но хотелось бы тип такого http://www.interactivenn.net/ только с возможностью количества множеств > 6
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Я очень пытаюсь понять в чем отличие сервиса домена от сервиса приложения. Синяя книга ввела меня в ступор. В ней говорится, что доменный сервис появляется, если операцию нельзя применить к конкретной сущности (агрегату) и тогда эта логика переносится в сервис. Как следствие, доменный сервис работает исключительно с доменными сущностями, а не идентификаторами и примитивными типами. Получается, что доменный сервис не может зависить от [интерфейса] репозитория? Но мы же в основном пишем приложения в которых на вход приходят примитивы и есть необходимость работать с репозиториями. Получается, что эти примитивы обрабатывает сервис приложения и передает (если надо) в сервис домена?
источник

YG

Yury Golikov in Software Design/Architecture/Zen
Segmentation Fault
Я очень пытаюсь понять в чем отличие сервиса домена от сервиса приложения. Синяя книга ввела меня в ступор. В ней говорится, что доменный сервис появляется, если операцию нельзя применить к конкретной сущности (агрегату) и тогда эта логика переносится в сервис. Как следствие, доменный сервис работает исключительно с доменными сущностями, а не идентификаторами и примитивными типами. Получается, что доменный сервис не может зависить от [интерфейса] репозитория? Но мы же в основном пишем приложения в которых на вход приходят примитивы и есть необходимость работать с репозиториями. Получается, что эти примитивы обрабатывает сервис приложения и передает (если надо) в сервис домена?
Все это разделение гавно и не имеет практического смысла. Но если хочется подрочить, то ты можешь в app service достать нужное, а дальше заинжектить в domain service.
источник