|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Как-то не интуитивно, часть логики в корне агрегации, часть не там? А как там разруливается, например, что есть уже такой агрегат? Уникальность в БД. Где это должно быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 21:00 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach, логики агрегатах быть не должно. ни в корне, ни в сущностях. уникальность DDD не поддерживает, она описывается отдельно, вариантов масса. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 22:03 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt love_bach, логики агрегатах быть не должно. ни в корне, ни в сущностях. уникальность DDD не поддерживает, она описывается отдельно, вариантов масса. Насчёт первого - поясни. Также даже методы предполагаются ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 22:15 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach, DDD не описывает где вам хранить вашу логику но для DDD лучше всего подходит паттерн CQRS вы конечно можете логику разместить в классах, которые моделируют сущности и агрегаты практика показывает, что такой подход неэффективен используя CQRS, любое изменение производится с помощью команд с помощью отдельных запросов вы можете вытаскивать проекции данных, но не сами сущности или агрегаты по сути, единственный способ достать агрегат, это вытащить его по ID единственный способ создать, изменить или удалить агрегат, это выполнить команду команда это не любая логика вообще, это конкретно внесение изменений в систему бизнес-логика при этом размещается в службах и сервисах ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 22:23 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt love_bach, DDD не описывает где вам хранить вашу логику но для DDD лучше всего подходит паттерн CQRS вы конечно можете логику разместить в классах, которые моделируют сущности и агрегаты практика показывает, что такой подход неэффективен используя CQRS, любое изменение производится с помощью команд с помощью отдельных запросов вы можете вытаскивать проекции данных, но не сами сущности или агрегаты по сути, единственный способ достать агрегат, это вытащить его по ID единственный способ создать, изменить или удалить агрегат, это выполнить команду команда это не любая логика вообще, это конкретно внесение изменений в систему бизнес-логика при этом размещается в службах и сервисах спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 07:55 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt DDD не описывает где вам хранить вашу логику но для DDD лучше всего подходит паттерн CQRS вы конечно можете логику разместить в классах, которые моделируют сущности и агрегаты практика показывает, что такой подход неэффективен используя CQRS, любое изменение производится с помощью команд с помощью отдельных запросов вы можете вытаскивать проекции данных, но не сами сущности или агрегаты по сути, единственный способ достать агрегат, это вытащить его по ID единственный способ создать, изменить или удалить агрегат, это выполнить команду команда это не любая логика вообще, это конкретно внесение изменений в систему бизнес-логика при этом размещается в службах и сервисах очередной поток сознания от местного "эксперда", нагугленные умные слова сваленные в кучу без малейшей попытки осмысления и опыта практического использования CQRS напрямую к DDD вообще не относится, это разные вещи и идея использовать CQRS только потому, что используется DDD может родится только в воспаленном гуглом уме. CQRS нужен когда модели для чтения начинают разнится с моделями для изменения, также изоляция чтения позволяет маштабировать ее независимо от записи и прочее, все это обусловлено требованиями к конкретной системе, а никак не использованием DDD А бизнес-логика в классическом DDD как раз расположена в сущностях, вынесение ее в отдельные классы сервисов будет уже называться анемичной моделью и не являтся DDD как таковой. "Практика" у него показывает что это неэффективно Для фриланс интернет-магазина по продаже валенок или студенческого проекта - возможно, а в коммерческих проектах люди сначала анализируют требования к системе, а уже потом принимают решения love_bachКак-то не интуитивно, часть логики в корне агрегации, часть не там? А как там разруливается, например, что есть уже такой агрегат? Уникальность в БД. Где это должно быть? за уникальность отвечает владелец данных (т.е. база), к функциям DDD это не относится ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 03:01 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford А бизнес-логика в классическом DDD как раз расположена в сущностях Пруф будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 03:51 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford Я понимаю, что у вас щас возраст такой, прыщи лезут и мысли всякие неумные, напыщенность как деревенского петуха и упёртость как у быка. Поэтому не обижаюсь, пруф только дайте на ваше интересное утверждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 03:53 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Кому действительно интересно как используется CQRS вместе с DDD, можете ознакомиться со следующими материалами: Применение в микрослужбе упрощенных шаблонов CQRS и DDD Сайт, посвящённый этой теме Довольно активный форум От себя же, не рекомендую делать вот так: stenford А бизнес-логика в классическом DDD как раз расположена в сущностях, вынесение ее в отдельные классы сервисов будет уже называться анемичной моделью и не являтся DDD как таковой. Потому что даже такое поделие, как stenford фриланс интернет-магазина по продаже валенок или студенческого проекта обойдётся вам дорого, либо это будет лишь наивным намёком на то, что авторы пытались в DDD, но не коня корм. Но этого хватает, как видно, чтобы включить гонор на все 146% ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 04:04 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Вспомнил ещё есть интересная статья на эту тему, нашёл перевод на хабре Анемичная модель предметной области — не анти-шаблон, а архитектура по принципам SOLID Вообще, с тех пор как многие гуру топили за следование принципам ООП, утекло много воды, сейчас развитие идёт в сторону функциональщины, требования к SOLID усилились и кажется люди даже начали понимать что это такое и зачем оно нужно. Что вообще-то нисколько не умаляет и не противоречит ООП. Просто его понимали и готовили неправильно. Основная и ключевая ошибка состоит в том, что под Объектами в ООП понимались объекты реального мира. Откройте любую книжку времён 2000-х. Там обязательно будут примеры с животными или геометрическими фигурами. Но ООП это не про реальный мир. Он для этого вообще не подходит. Совершенно. Соответственно, пытаться инкапсулировать предметную область сущности/агрегата в одном месте (в классе) -- это неправильно. Более того, это очень плохо, и ведёт к печальным последствиям. Сегодня подобный подход можно приравнять к говнокоду. Потому что нарушает SOLID, плохо тестируется, таки получает прямую зависимость не только от способа хранения, но и самих языковых средств. Называть модель предметной области анемичной в сущности неправильно. Никакой анемии нет, логики много, она часто меняется, и не редко пересекает Bounded Context, -- ну вот такой он суровый реальный мир. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:11 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Пруф будет? Читай базовую теорию , потом будешь делиться опытом своего интернет магазина по продаже валенок ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:13 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford hVostt Пруф будет? Читай базовую теорию , потом будешь делиться опытом своего интернет магазина по продаже валенок и где тут пруф-то? дядька написал это в 2003 году, 17 лет назад собственно, опровержение этой же статьи выше опубликовал, хотя оно не требуется давно уже очевидно, что рич модель не жизнеспособна, ни в DDD ни в чём-либо ещё ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:19 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Вспомнил ещё есть интересная статья на эту тему, нашёл перевод на хабре Анемичная модель предметной области — не анти-шаблон, а архитектура по принципам SOLID Вообще, с тех пор как многие гуру топили за следование принципам ООП, утекло много воды, сейчас развитие идёт в сторону функциональщины, требования к SOLID усилились и кажется люди даже начали понимать что это такое и зачем оно нужно. о, гляжу нагугл что такое анемика, целый час тебе на потребовался hVostt Что вообще-то нисколько не умаляет и не противоречит ООП. Просто его понимали и готовили неправильно. Основная и ключевая ошибка состоит в том, что под Объектами в ООП понимались объекты реального мира. Откройте любую книжку времён 2000-х. Там обязательно будут примеры с животными или геометрическими фигурами. Но ООП это не про реальный мир. Он для этого вообще не подходит. Совершенно. Да, Эрик Эванс и Мартин Фаулер все делали неправильно, а вот млять хвост тут оказывается авторитет в мире ООП ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:20 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford Да, Эрик Эванс и Мартин Фаулер все делали неправильно, а вот млять хвост тут оказывается авторитет в мире ООП всё они делают правильно пишут статьи, исследуют, многие заметки успели устареть а ты нет, мало того, что несёшь ахинею так ещё и единственный "пруф" нагуглил, это статья 17-летней давности, в которой автор обижается, что люди не хотят делать DDD, как ему кажется правильно, но не примеров, ни доказательств успешности такого подхода до сих нет ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:25 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt и где тут пруф-то? дядька написал это в 2003 году, 17 лет назад собственно, опровержение этой же статьи выше опубликовал, хотя оно не требуется давно уже очевидно, что рич модель не жизнеспособна, ни в DDD ни в чём-либо ещё Опровержение? Чей-то бложик? И мой поинт кстати был совсем не в том, что правильно, а что нет, а в том, что классический ООП именно с рич моделью, если у кого-то не получается его готовить - то так и надо говорить, либо по крайней мере в топике DDD упоминать что следуешь секте анемиков, а не говоришь про DDD как таковое ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:27 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford, да, кстати, поржал про "базовую теорию" ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:27 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford Опровержение? Чей-то бложик? И мой поинт кстати был совсем не в том, что правильно, а что нет, а в том, что классический ООП именно с рич моделью, если у кого-то не получается его готовить - то так и надо говорить, либо по крайней мере в топике DDD упоминать что следуешь секте анемиков, а не говоришь про DDD как таковое с тобой как с табуреткой разговаривать какая ещё секта? разумные мысли от тебя вообще сегодня будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:30 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford что классический ООП именно с рич моделью откуда вообще у тебя в голове этот мусор? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:35 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt да, кстати, поржал про "базовую теорию" Ясно, того-же Эрика Эванса значит не читал, образование в гугле получил по подобным бложикам, что в принципе прекрасно видно по уровню твоих познаний, и для тех кто в танке повторю - это и есть классический DDD. Анемика родилась примерно в те-же времена, и так никуда и не взлетела за пределами холиваров и форумских дурачков типа тебя, которые вычитав новое слово бросаются его имплементировать в свой магазинчик. ООП устарело у него ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:37 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford, Выраженное понятие может родилось. Самой "анемике" ровно столько же, сколько существует разработка ПО вообще. Эрик Эванс где говорил, что логика DDD должно быть выражено в классах сущностей и полностью инкапсулировать там логику? Каким образом вынесение логики в службы противоречит ООП, DDD, Фаулеру или Эвансу? Мне пока понятно одно, ты пытаешься что-то сказать, но выразить это разумными словами не можешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:49 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford форумских дурачков типа тебя, которые вычитав новое слово бросаются его имплементировать в свой магазинчик Видимо у тебя какое-то заболевание. В чём-то разобраться и предметно подискутировать тебе не интересно, основная цель, мелко подобосрать. Зачем тебе это, ребёнок? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 05:55 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Выраженное понятие может родилось. Самой "анемике" ровно столько же, сколько существует разработка ПО вообще. Эрик Эванс где говорил, что логика DDD должно быть выражено в классах сущностей и полностью инкапсулировать там логику? Каким образом вынесение логики в службы противоречит ООП, DDD, Фаулеру или Эвансу? ты ссылку которую я дал прочитал вообще? Там текста не так и много, все прекрасно видно кто и что говорил. Переведи в гугле если английский не понимаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 06:18 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford ты ссылку которую я дал прочитал вообще? Там текста не так и много, все прекрасно видно кто и что говорил. Переведи в гугле если английский не понимаешь Я её читал ещё когда ты под стол пешком ходил. Значит эта статья и есть тот догмат, на котором опирается твой выбор для архитектуры? Или просто это тупо всё, что ты нагуглил? Если так, на каком основании из тебя так мощно говно потекло? Что с тобой не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 06:41 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Я её читал ещё когда ты под стол пешком ходил. Значит эта статья и есть тот догмат, на котором опирается твой выбор для архитектуры? Или просто это тупо всё, что ты нагуглил? Если так, на каком основании из тебя так мощно говно потекло? Что с тобой не так? ух ну ты и тупой, на твой вопрос "Эрик Эванс где говорил, что логика DDD должно быть выражено в классах сущностей" там есть прямые цитаты от Эванса где это написано, плюс разжевано Фаулером, если даже в такой форме до тебя это не доходит, то подобную узколобость даже лоботомией вылечить уже нельзя ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 07:27 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford ух ну ты и тупой, на твой вопрос "Эрик Эванс где говорил, что логика DDD должно быть выражено в классах сущностей" там есть прямые цитаты от Эванса где это написано, плюс разжевано Фаулером, если даже в такой форме до тебя это не доходит, то подобную узколобость даже лоботомией вылечить уже нельзя Эрик говорит про слои (или уровни) архитектуры, а не про ООП или классы. В его книге об этом чётко и подробно расписано. stenford подобную узколобость даже лоботомией вылечить уже нельзя Ты в реале такое же упоротое быдло, или только тут так себя по-свински ведёшь? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 07:52 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Эрик говорит про слои (или уровни) архитектуры, а не про ООП или классы. В его книге об этом чётко и подробно расписано. мда, у тебя отсутствуют совершенно базовые знания о разработке, уровни, про которые он говорит как раз и содержат в том числе доменные сущности, которые и обладают логикой (последняя цитата по ссылке там напрямую их упоминает), если-бы ты узнал об этой книжке не сегодня из этого топика, а хотя-бы слышал о ней в прошлом, то этого чудовищного бреда бы не нес, обычно даже джуны более подкованы в базовой теории, я честно говоря не разу не видел джуна, который обладал-бы насколько извращенным пониманием ООП hVostt Ты в реале такое же упоротое быдло, или только тут так себя по-свински ведёшь? с уродцами типа тебя по другому нельзя, ты человеческого языка в принципе не понимаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 08:36 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford мда, у тебя отсутствуют совершенно базовые знания о разработке, уровни, про которые он говорит как раз и содержат в том числе доменные сущности, которые и обладают логикой (последняя цитата по ссылке там напрямую их упоминает), если-бы ты узнал об этой книжке не сегодня из этого топика, а хотя-бы слышал о ней в прошлом, то этого чудовищного бреда бы не нес, обычно даже джуны более подкованы в базовой теории, я честно говоря не разу не видел джуна, который обладал-бы насколько извращенным пониманием ООП По сути ничего нет и не было с самого начала. Откопал статью времён мамонта, вместо какой-либо аргументации. Чисто детское авторитарное мышление "потому что он так сказал". В то же самое время и много позже было высказано множество других идей, мыслей и исследований по этой теме, которые не поддерживают подобную точку зрения. И я не утверждал, что только вот так и никак иначе правильно, а делился своими соображениями и опытом, для этого форум и существует. stenford с уродцами типа тебя по другому нельзя, ты человеческого языка в принципе не понимаешь По твоей манере разговаривать, ты обыкновенная второсортная свинья и упоротое быдло. И по-человечески разговаривать в принципе не умеешь. Скорее всего ты чем-то обижен на меня. И думаю, что поделом. Ну и с новым годом тебя, ты жалок. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 14:30 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVosttлогики агрегатах быть не должно. ни в корне, ни в сущностях. hVostt Кому действительно интересно как используется CQRS вместе с DDD, можете ознакомиться со следующими материалами: Применение в микрослужбе упрощенных шаблонов CQRS и DDD Там как раз написано: авторВ рамках DDD изменять сущность желательно только с помощью методов самой сущности И пример класса, в котором видно, что модель имеет логику, следственно это не анемичная сущность. И в целом, там не рекомендуют анемик, а как раз логику в агрегатах. автор Код: c# 1. 2. 3. 4. 5. 6.
https://docs.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/microservice-domain-model авторHowever, if you need to tackle the complexity of a microservice’s domain that has a lot of ever-changing business rules, the anemic domain model might be an anti-pattern for that microservice or Bounded Context. In that case, designing it as a rich model with entities containing data plus behavior as well as implementing additional DDD patterns (aggregates, value objects, etc.) might have huge benefits for the long-term success of such a microservice. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 14:49 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v, Всё верно :) Я дал информацию для более полного раскрытия темы, а не только с одного бока, как лично я считаю. В двух проектных командах пробовали использовать такой подход, плюс общался с коллегами, активно применяющими DDD, плюс изучал исходники других проектов. Из полученного опыта могу сказать, что несмотря на красоту изначальной идеи, на практике почти никаких плюсов в инкапсуляции логики в классы сущностей и агрегатов нет. А минусов вагон. Ситуаций, когда это действительно может принести профит прям ничтожно мало. Если убрать это требование, никаких противоречий нет. Так называемая "анемичность" это искусственный термин, и довольно странный. Никаких проблем нет в реализации всех артефактов из DDD, включая полноценный ubiquitous language без необходимости городить чудовище из классов модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 15:01 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v, Для примера можно рассмотреть вот этот код https://github.com/dotnet-architecture/eShopOnContainers/blob/7b300ec91244bf44bf82372389d362a98c2da8b6/src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82.
Это команда для создания заказа. Здесь мы видим DDD и CQRS в чистом виде. Почти. Особенности ООП и конкретных языковых средств не дают возможности провести эту операцию исключительно на уровне DDD. Если отказаться от CQRS и команд, где разместить код создания заказа? Как видим, это целый комплекс различных операций, относящихся как бизнес-логике, так и к инфраструктуре. Это работа с репозиторием, публикация событий, и сохранение через UOW. Конструктор использовать нельзя, так как во-первых, он не может быть асинхронным, во-вторых логика в конструкторе -- зло, в третьих, DDD должен быть отстранён от деталей реализации, от хранилища, событийной системы и т.д. Хотя следуюя принципам ООП, именно конструктор является самым лучшим местом для реализации создания и конструирования экземпляра предметной области, чтобы поддерживать свой инвариант. Тогда нам понадобится что-то вроде фабрики. Ну а это уже ни что иное, как сервис. Далее. А что делать, если поддержать полностью валидный инвариант при изоляции на уровне агрегата нельзя? Именно так чаще всего и бывает. Значит в экземпляр агрегата необходимо прокинуть полный доступ хотя бы к ограниченному контексту. Задача далеко не из простых, сделать это органично и не нарушая парочку известных принципов разработки. Далее. А что делать, если нам нужна операция, затрагивающая несколько агрегатов, в которой сложно чётко выделить явный корень агрегата операции? Например, создание резерва при создании заказа, с обеспечением гарантии оплаты из спектра возможных гарантов (депозит, блокировка суммы, гарантийное письмо и т.д.). В каком агрегате будет красивый заветный метод? Далее. А что делать, когда подключили интеграцию с партнёром и он грузит такие заказы огромными пачками, десятки, сотни тысяч за раз, и партнёров много становится. И профилирование показывает жестойшее узкое место в этой команде? И ничего поделать нельзя, нельзя трогать DDD. Далее. Ну а как же протестировать вот именно эту команду? Без учёта логики, инкапсулированной в домен (order.AddOrderItem)? Никак, ведь это классы, а не интерфейсы. Да ещё и экземпляры создаются через конструктор. Выходом может быть запрет использования конструкторов, и требование помечать публичные методы сущностей как virtual. Это позволит решить задачу, но какой ценой! Далее. Мы видим вот такой код: Код: c# 1. 2.
Выглядит приятно. На первый взгляд. До первых требований от бизнеса. До первого рефакторинга. Внести изменения в адрес теперь безумно дорого, даже если изменения будут обратно совместимыми. Чтобы безболезненно расширить сущность, необходимо будет создать новых констуркторов. Что очень вредит DDD, теперь преимущества единого языка уже не выглядят такими замечательными, на фоне того, когда у вас несколько вариантов сделать одно и то же, так какой же нужно использовать? Можно и дальше продолжать, взять другие примеры. Как ни крути, логика будет размазана, ООП здесь не всегда работает. Изоляция очень примитивная и больше мешает, чем помогает. Как исправить?
... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 16:17 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Ещё дополню. В таком варианте исполнения, значительно вырастает роль UOW в системе. В приведённом примере коммитится только сохранение данных в хранилище, что не делает всю операцию строго атомарной. Выпуск событий может быть только в случае успешного выполнения и завершения операции. Потом захочется сохранять ещё и сами успешные команды в некое хранилище. А если мы используем EventSourcing, нам понадобится особый класс событий и хранилище этих событий, которое уже, на минуточку, является хранилищем мастер данных. Хорошо бы иметь возможность выполнить серию команд в одной транзакции и получить полностью согласованный результат. Не хотелось бы разруливать заморочки с блокировками на уровне команд. В итоге, сохранение UOW лучше вынести за пределы команды. Все события, изменения данных и команды, которые инициировали изменения, записываются в UOW. При сохранении, всё персистится, события публикуются, а на выходе мы получаем согласованный, стабильный и ожидаемый результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 17:11 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVosttКонструктор использовать нельзя, так как во-первых, он не может быть асинхронным, во-вторых логика в конструкторе -- зло Сложной логики с участием IO там быть не должно, в для простой асинхронность не нужна. hVosttА что делать, если поддержать полностью валидный инвариант при изоляции на уровне агрегата нельзя? Тут не понял. hVosttА что делать, если нам нужна операция, затрагивающая несколько агрегатов, в которой сложно чётко выделить явный корень агрегата операции? А что будет если не совсем правильно выделить корень? Ничего страшного имхо, мелкий рефакторинг на край. hVostt А что делать, когда подключили интеграцию с партнёром и он грузит такие заказы огромными пачками, десятки, сотни тысяч за раз, и партнёров много становится. И профилирование показывает жестойшее узкое место в этой команде? Это может быть с любым методом, любого класса, каждый случай нужно рассматривать отдельно. hVosttНу а как же протестировать вот именно эту команду? Без учёта логики, инкапсулированной в домен (order.AddOrderItem)? Тестировать отдельно класс Order, через метод GetTotal() например, в чем тут проблема? В целом не вижу особых проблем с указанной командой. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 17:40 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Хорошо бы иметь возможность выполнить серию команд в одной транзакции и получить полностью согласованный результат. Не факт, что CQRS подходит для большого количества зависимых операций. Фаулер писал на эту тему: авторLike any pattern, CQRS is useful in some places, but not in others. Many systems do fit a CRUD mental model, and so should be done in that style. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 17:50 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford очередной поток сознания от местного "эксперда", нагугленные умные слова сваленные в кучу без малейшей попытки осмысления и опыта практического использования так приведите конкретный пример хорошего использования DDD, только не пет проект, высосанный из пальца, а реально сложную предметную область, банки там, страхование или типа того, мне правда очень хочется посмотреть как использовать DDD, чтоб не наступить на тыщу граблей и чтоб сохранить солид и не делать god-объектов я видел только один хороший вариант, но там была академическая упрощенная предметная область и разумеется там все было красиво, но не практично. как только начинается реальный бизнес с его хотелками - весь этот DDD летит к чертям а от сторонников я только и слышу - "не умеешь правильно готовить", ну так покажите как надо ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 20:16 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford очередной поток сознания от местного "эксперда", нагугленные умные слова сваленные в кучу без малейшей попытки осмысления и опыта практического использования у hVostt хотя бы есть несколько лет разработки проекта на CQRS + ES с нуля а у вас что есть, кроме какашек для вентилятора? Можно и повежливее в топики врываться, коли не обезьяна ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 21:38 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt По сути ничего нет и не было с самого начала. Откопал статью времён мамонта, вместо какой-либо аргументации. Чисто детское авторитарное мышление "потому что он так сказал". В то же самое время и много позже было высказано множество других идей, мыслей и исследований по этой теме, которые не поддерживают подобную точку зрения. И я не утверждал, что только вот так и никак иначе правильно, а делился своими соображениями и опытом, для этого форум и существует. т.е. дошло наконец что классический DDD из себя представляет? Сутки потребовались, Эрик Эванс у него такого не говорил, конечно если ты это имя только вчера услышал. Если речь про DDD идет, то писать бредятину про то, что DDD не указывает где логику хранить - нельзя. А идей всегда много разных высказывается, но в отличие от тебя я не хватаю первую понравившуюся идею, не возвожу ее в абсолют и не начинаю гнать пугру о том что правильно во всех случаях, а что нет. ООП у него оказывается приравнивается к говнокоду А мое личное мнение об анемике совпадает с Фаулеровской, в большинстве случаев анемику лепят т.к. просто отсутствует квалификация собрать правильный ООП А повторять холивар 10-летней давности, и особенно с типами типа тебя, не знающими даже базовую теорию, предоставлю другим. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 01:11 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
17-77 так приведите конкретный пример хорошего использования DDD, только не пет проект, высосанный из пальца, а реально сложную предметную область, банки там, страхование или типа того, мне правда очень хочется посмотреть как использовать DDD, чтоб не наступить на тыщу граблей и чтоб сохранить солид и не делать god-объектов я видел только один хороший вариант, но там была академическая упрощенная предметная область и разумеется там все было красиво, но не практично. как только начинается реальный бизнес с его хотелками - весь этот DDD летит к чертям а от сторонников я только и слышу - "не умеешь правильно готовить", ну так покажите как надо у нас как раз банки, и ничего. Понятно что на практике всегда приходится идти на компромисы, но это не повод теперь выкинуть всю логику в сервисы и превратить ее в неподдерживаемую лапшу ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 01:15 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух он там на нуле и остался, от того, что обычно пишет этот чувак на форуме волосы дыбом встают, и этот топик хороший пример ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 01:16 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford 17-77 так приведите конкретный пример хорошего использования DDD, только не пет проект, высосанный из пальца, а реально сложную предметную область, банки там, страхование или типа того, мне правда очень хочется посмотреть как использовать DDD, чтоб не наступить на тыщу граблей и чтоб сохранить солид и не делать god-объектов я видел только один хороший вариант, но там была академическая упрощенная предметная область и разумеется там все было красиво, но не практично. как только начинается реальный бизнес с его хотелками - весь этот DDD летит к чертям а от сторонников я только и слышу - "не умеешь правильно готовить", ну так покажите как надо у нас как раз банки, и ничего. Понятно что на практике всегда приходится идти на компромисы, но это не повод теперь выкинуть всю логику в сервисы и превратить ее в неподдерживаемую лапшу Кто-то там вам неподдерживаемой лапши понаписал, и вы теперь на форуме злобу вымещаете? Очень на это смахивает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 10:08 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
[quot stenford#22052774 мда, у тебя отсутствуют совершенно базовые знания о разработке, уровни, про которые он говорит как раз и содержат в том числе доменные сущности, которые и обладают логикой (последняя цитата по ссылке там напрямую их упоминает), если-бы ты узнал об этой книжке не сегодня из этого топика, а хотя-бы слышал о ней в прошлом, то этого чудовищного бреда бы не нес, обычно даже джуны более подкованы в базовой теории, я честно говоря не разу не видел джуна, который обладал-бы насколько извращенным пониманием ООП с уродцами типа тебя по другому нельзя, ты человеческого языка в принципе не понимаешь[/quot] Практика показывает, что если юзер образован, то у него и с грамматикой и орфографией все в порядке. Такой "резкий" "джуна" юзер, а так безграмотно пишет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 10:40 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v hVosttКонструктор использовать нельзя, так как во-первых, он не может быть асинхронным, во-вторых логика в конструкторе -- зло Сложной логики с участием IO там быть не должно, в для простой асинхронность не нужна. В конструкторе конечно логики быть не должно. Но при создании агрегата сложная логика часто присутствует, асинхронность нужна, так как могут потребоваться данные из контекста. Поэтому конструктор плохо подходит для создания агрегата. Создать экземпляр класса -- вот его задача. Hexag0v hVosttА что делать, если поддержать полностью валидный инвариант при изоляции на уровне агрегата нельзя? Тут не понял. Например, для по правилам бизнеса, сумма заказа не может превышать заданный для пользователя порог, который рассчитывается исходя из оборота за определённый период времени, это всё находится в другом контексте, отвечающим за финансовую деятельность пользователя. По опыту таких сложных и даже где-то не очень логичных правил у бизнеса накапливается огромное количество. Абсолютно невозможно учесть всё это на уровне проектирования модели. Только если вы не создаёте ПО по ТЗ под ключ -- а так сейчас никто не разрабатывает. Hexag0v hVosttА что делать, если нам нужна операция, затрагивающая несколько агрегатов, в которой сложно чётко выделить явный корень агрегата операции? А что будет если не совсем правильно выделить корень? Ничего страшного имхо, мелкий рефакторинг на край. Речь не в правильности или неправильности. А в потере логики и смысла, что очень вредит и доменной модели, и единому языку. Кроме того, разработчика должно как можно меньше парить вопросы, где и как ему размещать логику. Признак хорошей архитектуры это сведение таких вопросов к минимуму. Hexag0v hVostt А что делать, когда подключили интеграцию с партнёром и он грузит такие заказы огромными пачками, десятки, сотни тысяч за раз, и партнёров много становится. И профилирование показывает жестойшее узкое место в этой команде? Это может быть с любым методом, любого класса, каждый случай нужно рассматривать отдельно. Ну так вы и не ответили на вопрос. -- А что, если у пациента горло болит? -- Такое может с каждым произойти. Надо рассматривать каждый случай отдельно. Понятно, что универсального решения нет. Но у Фаулеровского (от 2013 года) DDD никакого решения на этот счёт нет. Выкручивайтесь сами так сказать. Hexag0v hVosttНу а как же протестировать вот именно эту команду? Без учёта логики, инкапсулированной в домен (order.AddOrderItem)? Тестировать отдельно класс Order, через метод GetTotal() например, в чем тут проблема? В целом не вижу особых проблем с указанной командой. Я не настаиваю, но я вижу здесь проблемы, так как лично с ними сталкивался в разработке промышленного ПО, очень крупного и дорогого. И цену этих проблем знаю не только я, но также и участники команд, с которыми работал, а также руководство. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 15:23 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v hVostt Хорошо бы иметь возможность выполнить серию команд в одной транзакции и получить полностью согласованный результат. Не факт, что CQRS подходит для большого количества зависимых операций. Фаулер писал на эту тему: авторLike any pattern, CQRS is useful in some places, but not in others. Many systems do fit a CRUD mental model, and so should be done in that style. Я Фаулера уважаю. Но это не значит, что буду слепо следовать его указаниям. Нужно пользоваться также и своей головой, и на опыте далеко не всё работает по написанному. Это очень удобная позиция, ну.. зависит от. Да, так оно и есть. Зависит. Но что делать новичкам? Откуда они знают что и от чего зависит? Как выбрать? Что делать? Однако. Мы решили эту проблему, у нас и CRUD и сложная логика через CQRS прекрасно работают, плюс ещё EventSourcing, с которым тоже удалось решить множество проблем и вызовов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 15:25 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
17-77 а от сторонников я только и слышу - "не умеешь правильно готовить", ну так покажите как надо Это обычный способ уйти от ответа и объяснения. Да, вы не умеете правильно готовить ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 15:26 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford А повторять холивар 10-летней давности, и особенно с типами типа тебя, не знающими даже базовую теорию, предоставлю другим. Я пока не научился разговаривать со свиньями. Когда начнёшь разговаривать как приличный и разумный человек, пиши. Обижаться на тебя не буду, это грешно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 15:27 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt 17-77 а от сторонников я только и слышу - "не умеешь правильно готовить", ну так покажите как надо Это обычный способ уйти от ответа и объяснения. Да, вы не умеете правильно готовить Давайте тогда так ) Проект, код из которого вы показали Пример cqrs На Ваш взгляд , насколько удачно там применен cqrs? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 19:48 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
91145 Проект, код из которого вы показали Пример cqrs а что в C# означает такая запись: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 20:43 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
91145 Давайте тогда так ) Проект, код из которого вы показали Пример cqrs На Ваш взгляд , насколько удачно там применен cqrs? С точки зрения учебного примера -- довольно хорошо, легко находится то, что есть в теории. Хорошо понятен и виден принцип, и даже полноценная его реализация. Потому как обычно отсутствие хоть какой-либо вменяемой готовой реализации к теории является серьёзной проблемой для новичков. С практической же точки зрения -- плохо. Когда мы хотим применить CQRS, мы это делаем, чтобы получить определённую выгоду, профит. А не получить медальку и одобрительное похлопывание по плечу от гуру или евангелиста методики. Здесь профита достигается мало. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 02:02 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух а что в C# означает такая запись: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Это атрибут для сериализации команд. Так как команды являются, и должны являться, чистыми POCO/DTO, возникает закономерное желание их куда-то сохранить. Ещё можно их направлять в единую точку обработки или в диспетчер через какую-нибудь шину команд, таким образом получить возможность более гибкого масштабирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 02:04 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
а вот это почему так объявляется (get/set)? и как именно используется в CQRS? полудух Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 02:30 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Здесь профита достигается мало. т.е. пример - говно? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 02:32 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух т.е. пример - говно? Вообще, я ещё немного поковырялся в примере и вот что нашёл: https://github.com/dotnet-architecture/eShopOnContainers/blob/23992ed3249cd257ac5fc42b23f2864b2ddf347b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
А как же... CQRS, там, разделение на команды и запросы, где запись в командах, а чтение в запросах? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 02:47 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух а вот это почему так объявляется (get/set)? и как именно используется в CQRS? полудух Код: c# 1.
Особенности данной реализации, инкапсуляция, чтобы никто не мог случайно или намеренно изменить значение. полудух т.е. пример - говно? Таки да, к сожалению :( ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 02:48 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Вообще, идеального примера мне найти не удалось. Но во всех проектах нашлось много чего ценного и полезного. Поэтому нам приходилось использовать удачные находки и нарабатывать свои, конечно основываясь на теории и имеющейся практики, а также исходя из текущих и будущих задач. Сейчас хорошо, искать особо не нужно. Есть постоянно актуализируемый сборник: https://github.com/ddd-cqrs-es?language=c# (выбран фильтр C# для удобства) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 03:02 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt, имхо люди хотят халявы, статейки с примером на пару экранов а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. понимать когда и почему это всё придумывалось, как развивалась и как применяется сейчас это же слишком сложно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 10:18 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух а вот это почему так объявляется (get/set)? и как именно используется в CQRS? полудух Код: c# 1.
С CQRS это никак не связано, это синтаксис языка С#, а CQRS это подход к архитектуре, причем довольно специфичный и подходящий только для весьма ограниченного числа систем ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 11:13 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt А как же... CQRS, там, разделение на команды и запросы, где запись в командах, а чтение в запросах? С CQRS тут все в порядке, Buyer тут является агрегатом, который сохраняется с помощью репозитория, а чтения тут нет ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 11:21 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
StalkerS, что значит весьма ограниченного числа систем? В ozon используют CQRS. А там и электронная коммерция, и логистика, и склады, и биллинг, и туризм... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 12:49 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
В 2gis используют CQRS, и DDD, и Event Storming ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 12:55 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. смысл их читать, если там деза: hVostt Понятно, что универсального решения нет. Но у Фаулеровского (от 2013 года) DDD никакого решения на этот счёт нет. Выкручивайтесь сами так сказать. hVostt Я Фаулера уважаю. Но это не значит, что буду слепо следовать его указаниям. Нужно пользоваться также и своей головой, и на опыте далеко не всё работает по написанному . ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 13:40 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Буча, кстати, пытался читать "ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ С ПРИМЕРАМИ ПРИМЕНЕНИЯ"... грёбаная дичь... там же 90% воды... чуть не утонул ( посмотрите на главу 12 "ADA. СИСТЕМА УПРАВЛЕНИЯ ДВИЖЕНИЕМ" - читать невозможно, кто так пишет про программирование систем... ГДЕ там про программирование?! Сплошная вода. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 13:46 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
другое дело Ален Голуб - "Верёвка достаточной длины, чтобы выстрелить себе в ногу" вот эта книжка лучшая по ООП и программированию в целом. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 13:47 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Вообще, я ещё немного поковырялся в примере и вот что нашёл: ... вот щас страшно было, да... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 13:50 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух Буча, кстати, пытался читать "ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ С ПРИМЕРАМИ ПРИМЕНЕНИЯ"... грёбаная дичь... там же 90% воды... чуть не утонул ( посмотрите на главу 12 "ADA. СИСТЕМА УПРАВЛЕНИЯ ДВИЖЕНИЕМ" - читать невозможно, кто так пишет про программирование систем... ГДЕ там про программирование?! Сплошная вода. Да утырки этот Буч и его соавторы, вода и белиберда ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 14:20 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Сначала сразу ссылку на этот пример хотел кинуть, с телефона было не удобно. Если я правильно понимаю, там большинство сервисов сами по себе - "Домены", и выделять внутри них какие-то поддомены - лишнее (видимо, в силу простоты, и демонстрации "не надо усложнять там где не надо", и "грести все под одну гребенку"). С ними понятно. Но, вот этот - Ordering - он содержит и, в том числе, домен. И там, например, есть в Код: c# 1. 2.
такой метод: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
вроде это так инкапсулирована "чистая" логика домена. Но, как уже говорил Хвост, очень высок риск, что для её реализации могут потребоваться всякие запросы к своему контексту, или даже выйти за него. И вот с этим, собственно, и был связан первоначальный вопрос. Теперь первоначальный вопрос уточню так: 1) если есть полная уверенность, что можем инкапсулировать "чистую" логика домена, то размещаем её в корне агрегата? 2) если что-то сильно выйдет за рамки 1) - рефакторим - выносим в команды, все-равно деваться некуда, и рефакторинг это не исправление "ошибок", это реакция на новые требования? 3) но, если все-равно есть ненулевая вероятность 2), может, ну его нафиг 1) и сразу 2)? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 14:27 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt полудух т.е. пример - говно? Вообще, я ещё немного поковырялся в примере и вот что нашёл: https://github.com/dotnet-architecture/eShopOnContainers/blob/23992ed3249cd257ac5fc42b23f2864b2ddf347b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
А как же... CQRS, там, разделение на команды и запросы, где запись в командах, а чтение в запросах? вангую, что может автор хотел подчеркнуть, что все основное было в источнике события. и так как тут нет какой-то присущей именно команде логики, связанной с языком предметной области, все взял на себя домен, валидатор, то решил - "тут обойдемся репозиторием". Хотя, для единообразия ради, можно это было и в команде, наверное. такие моменты у меня и вызывают вопросы. не думаю, что это он так облажался. скорее всего не хватило выразительности DDD ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 14:53 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt полудух т.е. пример - говно? Таки да, к сожалению :( можешь выделить, что тебе особенно не понравилось, а как бы ты сделал? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 15:43 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA hVostt, имхо люди хотят халявы, статейки с примером на пару экранов а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. понимать когда и почему это всё придумывалось, как развивалась и как применяется сейчас это же слишком сложно :) золотые слова! хотим халявы! есть какие-то более-менее приближенные к примеру комментарии? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 16:12 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA hVostt, имхо люди хотят халявы, статейки с примером на пару экранов а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. понимать когда и почему это всё придумывалось, как развивалась и как применяется сейчас это же слишком сложно :) список этих долбоебов слишком велик, а гарантий, что они там что то написали правильно - исчезающе мал ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 16:16 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA hVostt, имхо люди хотят халявы, статейки с примером на пару экранов а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. понимать когда и почему это всё придумывалось, как развивалась и как применяется сейчас это же слишком сложно :) список этих долбоебов слишком велик, а гарантий, что они там что то написали правильно - исчезающе мал отбросим это. что хотел сказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 17:12 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Уважаемые форумчане, Где то до кода, который приводится, должно быть написано, что мол код не является промышленным, а только служит иллюстрацией к описанию проблемы/паттерна в лучшем случае в каком то конкретном контексте. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 17:56 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
StalkerS hVostt А как же... CQRS, там, разделение на команды и запросы, где запись в командах, а чтение в запросах? С CQRS тут все в порядке, Buyer тут является агрегатом, который сохраняется с помощью репозитория, а чтения тут нет Если у вас архитектура строится на CQRS, значит любые изменения данных системы должны быть в командах. Если бы в приведённом коде обработчика события был бы вызов команды, было бы ок. Сейчас тут далеко не всё в порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 17:57 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух skyANA а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. смысл их читать, если там деза: hVostt Понятно, что универсального решения нет. Но у Фаулеровского (от 2013 года) DDD никакого решения на этот счёт нет. Выкручивайтесь сами так сказать. hVostt Я Фаулера уважаю. Но это не значит, что буду слепо следовать его указаниям. Нужно пользоваться также и своей головой, и на опыте далеко не всё работает по написанному . Это не деза. Это люди, у которых ещё имеется собственные взгляды и мнения, которые не являются аксиомами. Знать различные точки зрения и подходы очень полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 17:59 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Еще. Уважаемые форумчане, еже ли было б ВСЕ просто и однозначно, то мы б составили конкуренцию людям, которых нанимают вместо московских дворников. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 18:04 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA hVostt, имхо люди хотят халявы, статейки с примером на пару экранов а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. понимать когда и почему это всё придумывалось, как развивалась и как применяется сейчас это же слишком сложно :) Общался с представителями других профессий :) Везде так. Есть различные подходы, порой противоречивые, но за которыми стоят уважаемые люди. Всегда хочется найти "единственно правильное решение", или близкое к нему. Особенно это выражается в начале пути, и у меня так было. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 18:05 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach такой метод: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
вроде это так инкапсулирована "чистая" логика домена. Но, как уже говорил Хвост, очень высок риск, что для её реализации могут потребоваться всякие запросы к своему контексту, или даже выйти за него. И вот с этим, собственно, и был связан первоначальный вопрос. Теперь первоначальный вопрос уточню так: 1) если есть полная уверенность, что можем инкапсулировать "чистую" логика домена, то размещаем её в корне агрегата? 2) если что-то сильно выйдет за рамки 1) - рефакторим - выносим в команды, все-равно деваться некуда, и рефакторинг это не исправление "ошибок", это реакция на новые требования? 3) но, если все-равно есть ненулевая вероятность 2), может, ну его нафиг 1) и сразу 2)? Во-первых, создание позиции заказа делегируется методу, который просто должен добавить эту позицию, а не менять существующие или делать что-то там ещё, поэтому сразу напрашивается рефакторинг: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Отвечая на вопросы: love_bach 1) если есть полная уверенность, что можем инкапсулировать "чистую" логика домена, то размещаем её в корне агрегата? 2) если что-то сильно выйдет за рамки 1) - рефакторим - выносим в команды, все-равно деваться некуда, и рефакторинг это не исправление "ошибок", это реакция на новые требования? 3) но, если все-равно есть ненулевая вероятность 2), может, ну его нафиг 1) и сразу 2)? Я придерживаюсь проверенного на практике мнения, что при использовании CQRS, все изменения необходимо производить только в командах. Это позволяет точно понимать что вообще с доменом происходит и где это искать. Не нужно делать поиск по всему проекту, а где же ЕЩЁ используется репозиторий, и где ждать жёсткого подсрачника при рефакторинге или при выпуске релиза. Размещая логику в аргегате, рано или поздно придёт понимание, что это не логика никакая. Это всего лишь методы, изменяющие агрегат. Добавить/удалить вложенную сущность (позиция заказа, например), изменить цену, количество, наименование и т.д. Или какая-то базовая примитивная валидация. Польза сомнительная, затраты существенные. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 18:18 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach можешь выделить, что тебе особенно не понравилось, а как бы ты сделал? В формате форума нет :) Я бы код показал, если бы не NDA, поэтому могу только поделиться собственным опытом на конкретных примерах, но не в рамках целого проекта, это слишком затратно ( ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 18:31 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt love_bach можешь выделить, что тебе особенно не понравилось, а как бы ты сделал? В формате форума нет :) Я бы код показал, если бы не NDA, поэтому могу только поделиться собственным опытом на конкретных примерах, но не в рамках целого проекта, это слишком затратно ( Я же код не прошу, словами могешь обяснмть?ⁿ ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 18:40 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA hVostt, имхо люди хотят халявы, статейки с примером на пару экранов а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. понимать когда и почему это всё придумывалось, как развивалась и как применяется сейчас это же слишком сложно :) список этих долбоебов слишком велик, а гарантий, что они там что то написали правильно - исчезающе мал Если сам не долбоеб :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:01 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach skyANA hVostt, имхо люди хотят халявы, статейки с примером на пару экранов а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. понимать когда и почему это всё придумывалось, как развивалась и как применяется сейчас это же слишком сложно :) золотые слова! хотим халявы! есть какие-то более-менее приближенные к примеру комментарии? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:04 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:14 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach Я же код не прошу, словами могешь обяснмть?ⁿ Всё о чём я уже говорил. Убрать логику из домена. Изменение в домене должно происходить исключительно в командах. Команды не должны сохранять изменения, это область ответственности UOW и клиента, инициирующего изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:30 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA ViPRos пропущено... список этих долбоебов слишком велик, а гарантий, что они там что то написали правильно - исчезающе мал Если сам не долбоеб :) посыл был в том что - предлагающие долбоебы остальные - верующие ни один пидер не может ограничить ни один контекст, ни один агрегат не сможет агрегировать всех составляющих, любой компонент любого агрегата норовить стать всеобъемлющим,... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:38 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt love_bach Я же код не прошу, словами могешь обяснмть?ⁿ Всё о чём я уже говорил. Убрать логику из домена. Изменение в домене должно происходить исключительно в командах. Команды не должны сохранять изменения, это область ответственности UOW и клиента, инициирующего изменения. т.е. никакого "домена" и нет, а есть схема, и общесхемные команды ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:39 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos посыл был в том что - предлагающие долбоебы Почему у тебя такое сложилось мнение? ViPRos остальные - верующие Абсолютная вера однозначно плохо. ViPRos ни один пидер не может ограничить ни один контекст, ни один агрегат не сможет агрегировать всех составляющих, любой компонент любого агрегата норовить стать всеобъемлющим,... Глупости говоришь. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 00:33 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos т.е. никакого "домена" и нет, а есть схема, и общесхемные команды Проблема в некорректном применении ООП. DDD и ООП -- вещи ортогональные. Ничего в DDD не сказано о том, как именно его нужно реализовывать. Что это обязательно должно быть сделано на объектах, используя инкапсуляцию, наследование, полиформизм, что называется "из коробки". На мой взгляд, это биг мистейк. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 00:43 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt ViPRos т.е. никакого "домена" и нет, а есть схема, и общесхемные команды Проблема в некорректном применении ООП. DDD и ООП -- вещи ортогональные. Ничего в DDD не сказано о том, как именно его нужно реализовывать. Что это обязательно должно быть сделано на объектах, используя инкапсуляцию, наследование, полиформизм, что называется "из коробки". На мой взгляд, это биг мистейк. это одно и то же (фуфло) просто немного ослаблены требования ты уже должен был понять, что невозможно определить контекст где однозначно определен хоть что либо во времени только прошлое может быть описано ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 01:21 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos это одно и то же (фуфло) просто немного ослаблены требования ты уже должен был понять, что невозможно определить контекст где однозначно определен хоть что либо во времени только прошлое может быть описано Очень даже возможно. Не на всю жизнь, но на текущий момент. Понимая, что всё меняется, код должен быть refactoring-ready. Когда видишь такую реализацию DDD, что в ней всё прибито гвоздями, и вообще проще переписать, чем исправить, то вовсе не обязательно DDD плохой, а те, кто его придумал "пидарасы" :) Ограниченный контекст -- это про "разделяй и властвуй". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 01:40 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach Теперь первоначальный вопрос уточню так: 1) если есть полная уверенность, что можем инкапсулировать "чистую" логика домена, то размещаем её в корне агрегата? 2) если что-то сильно выйдет за рамки 1) - рефакторим - выносим в команды, все-равно деваться некуда, и рефакторинг это не исправление "ошибок", это реакция на новые требования? 3) но, если все-равно есть ненулевая вероятность 2), может, ну его нафиг 1) и сразу 2)? 1) В корне агрегата размещается только логика общая для агрегата, остальная логика размещается в сущностях 2) Это нормальная ситуация, возникающая регулярно. Рефакторинг производится если новая логика лучше ложится на конкретную сущность/агрегат, а та, что не ложится - отправляется в сервисы 3) Куда "нафиг"? Сразу в процедурную лапшу? Вас проклянут те, кто будет это потом поддерживать ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 08:27 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA пропущено... Критикуешь - предлагай. Если сам не долбоеб :) посыл был в том что - предлагающие долбоебы остальные - верующие ни один пидер не может ограничить ни один контекст, ни один агрегат не сможет агрегировать всех составляющих, любой компонент любого агрегата норовить стать всеобъемлющим,... Про DDD и ограниченный (bounded) контекст явно не слышал, на практике применить не пробовал, а поносишь. Спрашивается в чем причина? В том что тебя сливают на пенсию? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 08:43 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos hVostt пропущено... Проблема в некорректном применении ООП. DDD и ООП -- вещи ортогональные. Ничего в DDD не сказано о том, как именно его нужно реализовывать. Что это обязательно должно быть сделано на объектах, используя инкапсуляцию, наследование, полиформизм, что называется "из коробки". На мой взгляд, это биг мистейк. это одно и то же (фуфло) просто немного ослаблены требования ты уже должен был понять, что невозможно определить контекст где однозначно определен хоть что либо во времени только прошлое может быть описано Event Storming тебе в помощь. Глянь мастер-классы тех же 2gis. Они, кстати, придерживаются несколько другим взгляда на DDD, чем Эванс (это про верующих). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 08:51 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos hVostt пропущено... Всё о чём я уже говорил. Убрать логику из домена. Изменение в домене должно происходить исключительно в командах. Команды не должны сохранять изменения, это область ответственности UOW и клиента, инициирующего изменения. т.е. никакого "домена" и нет, а есть схема, и общесхемные команды С такими высказываниями он нам тут про верующих и долбоебов затирает ))) ИМХО ты и есть тот, о ком пишешь: яростно отрицаешь чужое и проповедуешь своё. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 08:55 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA ViPRos пропущено... посыл был в том что - предлагающие долбоебы остальные - верующие ни один пидер не может ограничить ни один контекст, ни один агрегат не сможет агрегировать всех составляющих, любой компонент любого агрегата норовить стать всеобъемлющим,... Про DDD и ограниченный (bounded) контекст явно не слышал, на практике применить не пробовал, а поносишь. Спрашивается в чем причина? В том что тебя сливают на пенсию? ты как был неучем, так и остался, хотя прочитал кажись всех долбоебов на свете ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 09:48 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA ViPRos пропущено... т.е. никакого "домена" и нет, а есть схема, и общесхемные команды С такими высказываниями он нам тут про верующих и долбоебов затирает ))) ИМХО ты и есть тот, о ком пишешь: яростно отрицаешь чужое и проповедуешь своё. чудик, если чек не понимает чей этот метод - агрегата, сущности или инфраструктуры, то скорее всего все эти агрегаты и сущности надуманы (текущий уровень понимания предметной области) В нормальных системах главное - схема. Агрегаты и независимые сущности вычислимы. Контексты (кластеры, подсистемы) вычислимы. Инфраструктурные методы (включая сериализации, десериализации,...) общесхемны и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 09:56 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA пропущено... Глупости какие-то. Про DDD и ограниченный (bounded) контекст явно не слышал, на практике применить не пробовал, а поносишь. Спрашивается в чем причина? В том что тебя сливают на пенсию? ты как был неучем, так и остался, хотя прочитал кажись всех долбоебов на свете Критикуешь - предлагай. В последнее время ты только говном исходишь. Долбоебы, неучи... Кого ты на нас проецируешь? Своих коллег, что тебя моложе? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 10:56 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Если у вас архитектура строится на CQRS, значит любые изменения данных системы должны быть в командах. Если бы в приведённом коде обработчика события был бы вызов команды, было бы ок. У вас в голове каша. Слово Command в CQRS не означает, что нужно в буквальном смысле создавать классы команд и только из них производить изменения. В данном примере изменения в агрегат вносятся как из хэндлеров команд, так и из хэндлеров событий, все логично и полностью соответствует CQRS ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 11:15 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA пропущено... С такими высказываниями он нам тут про верующих и долбоебов затирает ))) ИМХО ты и есть тот, о ком пишешь: яростно отрицаешь чужое и проповедуешь своё. чудик, если чек не понимает чей этот метод - агрегата, сущности или инфраструктуры, то скорее всего все эти агрегаты и сущности надуманы (текущий уровень понимания предметной области) В нормальных системах главное - схема. Агрегаты и независимые сущности вычислимы. Контексты (кластеры, подсистемы) вычислимы. Инфраструктурные методы (включая сериализации, десериализации,...) общесхемны и т.д. Какой-то 1С или Акцесс сразу представил. И как там все "вычисляется" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 12:11 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
StalkerS полностью соответствует CQRS ...соответствует "по Фаулеру"? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 14:03 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach Какой-то 1С или Акцесс сразу представил. И как там все "вычисляется" Не знаю, что там и как вычисляется, а так алгоритм простой. Граф связей сущностей анализируется, выбираются терминальные узлы, рассматриваются характер связей (разноглубинность и т.д.) ТУ и на основе этого выделяются агрегаты (макротипы) и/или независимые общесхемные узлы (это в обычном понимании "справочники"). Макротипы анализируются на предмет общих связей и кластеризуюутся в подсистемы. На основе этой информации генерируется динамическое меню. В системе уже имеются команды типа - Создать форму для макротипа Добавить элемент в макротип Удалить элемент из макротипа Сохранить изменения ... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 14:52 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
StalkerS hVostt Если у вас архитектура строится на CQRS, значит любые изменения данных системы должны быть в командах. Если бы в приведённом коде обработчика события был бы вызов команды, было бы ок. У вас в голове каша. Слово Command в CQRS не означает, что нужно в буквальном смысле создавать классы команд и только из них производить изменения. В данном примере изменения в агрегат вносятся как из хэндлеров команд, так и из хэндлеров событий, все логично и полностью соответствует CQRS При чём тут буквальный смысл? Понятно, что исполняет команду хендлер. Изменения вносятся не в командах, всё уже не соответствует. Зачем тогда команды? Вносите их где угодно. Получили репозиторий, и делайте своё грязное дело. Зачем вам CQRS, не пойму? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:22 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos Не знаю, что там и как вычисляется, а так алгоритм простой. Граф связей сущностей анализируется, выбираются терминальные узлы, рассматриваются характер связей (разноглубинность и т.д.) ТУ и на основе этого выделяются агрегаты (макротипы) и/или независимые общесхемные узлы (это в обычном понимании "справочники"). Макротипы анализируются на предмет общих связей и кластеризуюутся в подсистемы. На основе этой информации генерируется динамическое меню. В системе уже имеются команды типа - Создать форму для макротипа Добавить элемент в макротип Удалить элемент из макротипа Сохранить изменения ... Чёт уже какая-то жесть пошла. Ну тогда иди до конца, пусть это чудо само логику вычисляет и вообще работу работает :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:24 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Чёт уже какая-то жесть пошла. Ну тогда иди до конца, пусть это чудо само логику вычисляет и вообще работу работает :)) Дык ВИПРОС же пишешь только то, чего нельзя вычислить и вызываешь там где надо (метод типа, макротипа, схемы - ничем они не отличаются, привязка к чему либо только для визуализации места вызова) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 19:03 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos hVostt Чёт уже какая-то жесть пошла. Ну тогда иди до конца, пусть это чудо само логику вычисляет и вообще работу работает :)) Дык ВИПРОС же пишешь только то, чего нельзя вычислить и вызываешь там где надо (метод типа, макротипа, схемы - ничем они не отличаются, привязка к чему либо только для визуализации места вызова) Да это понятно. От того, куда ты перенесёшь программирование и проектирование бизнес-логики, суть нифига не меняется. Скажу по чеснаку, да. Так оно и выходит. Делаешь крутой инструмент с динамическим рантайм моделированием. Отдаёшь людям, которые больше про бизнес, чем про разработку. Потом смотришь, мама дорогая, это что за пиз...цц?? Просто огромная, бескрайняя куча сущностей, связей, атрибутов и прочего прочего прочего. Ну конечно, не дурак, подумал об этом заранее. Сразу сделал +100500 возможностей для таксономии, чтобы по полочкам всё раскладывать да по шкафчикам. И типа, а чё б автоматом всё не проанализировать и по связям понять чё к чему. Ну-ну. Ага. Два раза. Моделировать бизнес не может кто угодно. Только в сопливых мечтах видится тул, в котором спроектировать бизнес может любая домохозяйка, а оно потом как-нибудь само. Хороший инструмент позволяет решать задачу быстрее и эффективнее. Но он не решает задачу сам. Поэтому ограниченный контекст тебе нужен, не важно ВИПРОС у тебя там, 1С или бейсик. Ты ж готовишь на кухне, занимаешься в спортзале, в спальне спишь, а не всё в одном месте делаешь, так? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 19:19 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos, И ещё, ты забываешь, что ВИПРОС у тебя один. Получается, что у тебя есть бульдозер для всех задач. И для высоконагруженных, динамичных, и крайне чувствительных, секьюрных, для всего. Отсюда отсутствие ограничений, о котором ты распинаешься, приводит к тотальным ограничениям. Про какое-либо масштабирование можно только влажно помечтать. И поплакать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 19:25 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt ViPRos, И ещё, ты забываешь, что ВИПРОС у тебя один. Получается, что у тебя есть бульдозер для всех задач. И для высоконагруженных, динамичных, и крайне чувствительных, секьюрных, для всего. Отсюда отсутствие ограничений, о котором ты распинаешься, приводит к тотальным ограничениям. Про какое-либо масштабирование можно только влажно помечтать. И поплакать. да ерунда все это (масштабирование и т.д.), можно сварганить все что угодно, лишь бы кто платил за это ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 20:23 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos да ерунда все это (масштабирование и т.д.), можно сварганить все что угодно, лишь бы кто платил за это Никто не говорит, что ничего нельзя сделать, знатно наговнокодив. Много проектов, знаешь ли, были реализованы таким образом. Но за всё приходится платить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 21:56 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt А как же... CQRS, там, разделение на команды и запросы, где запись в командах, а чтение в запросах? ой как все запущено-то, ни в ООП, ни в CQRS ты не соображаешь ровном счетом ничего, оторви сначала свой уровень от плинтуса, может дойдет как именно работает это пример от майкрософт и почему ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 00:20 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
stenford hVostt А как же... CQRS, там, разделение на команды и запросы, где запись в командах, а чтение в запросах? ой как все запущено-то, ни в ООП, ни в CQRS ты не соображаешь ровном счетом ничего, оторви сначала свой уровень от плинтуса, может дойдет как именно работает это пример от майкрософт и почему Сначала свой уровень свиньи до разумного человеческого подними, потом и поговорим. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 00:43 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt StalkerS пропущено... У вас в голове каша. Слово Command в CQRS не означает, что нужно в буквальном смысле создавать классы команд и только из них производить изменения. В данном примере изменения в агрегат вносятся как из хэндлеров команд, так и из хэндлеров событий, все логично и полностью соответствует CQRS При чём тут буквальный смысл? Понятно, что исполняет команду хендлер. Изменения вносятся не в командах, всё уже не соответствует. При том, что CQRS разделяет понятие модели для запросов/команд, а никак не диктует из каких классов производить действия, последнее вообще не имеет к CQRS никакого отношения ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 08:51 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Никто не говорит, что ничего нельзя сделать, знатно наговнокодив. Но за всё приходится платить. Наговнокодить - ООП, О/RМ, CQRS, … система костылей ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 11:53 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt ViPRos да ерунда все это (масштабирование и т.д.), можно сварганить все что угодно, лишь бы кто платил за это Никто не говорит, что ничего нельзя сделать, знатно наговнокодив. Много проектов, знаешь ли, были реализованы таким образом. Но за всё приходится платить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 15:50 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Слепили ВИПРОС 20 лет назад и теперь тупо технический долг отдают, что-то в нём бесконечно оптимизируя и поддерживая. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 15:53 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA Слепили ВИПРОС 20 лет назад и теперь тупо технический долг отдают, что-то в нём бесконечно оптимизируя и поддерживая. Звучит как очень успешное поделие, в то время как много грамотно архитектурных решений не дотягивают даже до года ) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 17:03 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v skyANA Слепили ВИПРОС 20 лет назад и теперь тупо технический долг отдают, что-то в нём бесконечно оптимизируя и поддерживая. Звучит как очень успешное поделие, в то время как много грамотно архитектурных решений не дотягивают даже до года ) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 17:31 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt love_bach, Как-то не интуитивно, часть логики в корне агрегации, часть не там? А как там разруливается, например, что есть уже такой агрегат? Уникальность в БД. Где это должно быть? логики агрегатах быть не должно. ни в корне, ни в сущностях. уникальность DDD не поддерживает, она описывается отдельно, вариантов масса. я тупой или что происходит? как вас понимать обоих :D ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 18:06 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Roman Mejtes hVostt love_bach, пропущено... логики агрегатах быть не должно. ни в корне, ни в сущностях. уникальность DDD не поддерживает, она описывается отдельно, вариантов масса. я тупой или что происходит? как вас понимать обоих :D вот тут неплохо описаны агрегаты (с картинками) надо промотать до главы "What is an Aggregate?" (может hVostt прокомментирует, насколько там данные соответствуют действительности?) агрегаты просто разбивают весь проект на части каждый агрегат это набор сущностей А логика лежит в других классах - в тех, которые делают WRITE и READ с другой стороны, класс сущности ну совсем БЕЗ логики слабо себе представляю... какая-то логика там же всё равно должна быть? какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 18:29 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA Hexag0v пропущено... Звучит как очень успешное поделие, в то время как много грамотно архитектурных решений не дотягивают даже до года ) В данном конкретном случае, это продожительность времени в течении которого продукт выживает на очень не простом рынке. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 19:03 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух Roman Mejtes пропущено... я тупой или что происходит? как вас понимать обоих :D вот тут неплохо описаны агрегаты (с картинками) надо промотать до главы "What is an Aggregate?" (может hVostt прокомментирует, насколько там данные соответствуют действительности?) агрегаты просто разбивают весь проект на части каждый агрегат это набор сущностей А логика лежит в других классах - в тех, которые делают WRITE и READ с другой стороны, класс сущности ну совсем БЕЗ логики слабо себе представляю... какая-то логика там же всё равно должна быть? какая? Вот тут общая модель, Выделенный агрегат и логика агрегата Вся логика уровня сущности привязана к сущностям Инфраструктурная логика принадлежит модели ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 19:11 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v skyANA пропущено... В чем успешность измеряете? В данном конкретном случае, это продожительность времени в течении которого продукт выживает на очень не простом рынке. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 19:11 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos, Агрегат ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 19:12 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos, Собственная Логика агрегата ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 19:13 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
20 лет назад эванс с фаулером под стол пешком ходили :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 19:13 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA Hexag0v пропущено... В данном конкретном случае, это продожительность времени в течении которого продукт выживает на очень не простом рынке. Рынок программного обеспечения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 19:25 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos Вот тут общая модель, Выделенный агрегат и логика агрегата Вся логика уровня сущности привязана к сущностям Инфраструктурная логика принадлежит модели красные это агрегаты? а чего они то "типы", то "макротипы"? А белые это сущности? Почему тогда "процесс нормативный" и "тип процесса" не внутри сущности "Процесс"? треугольная часть сверху (на некоторых) - что означает? уровень взаимодействия красных с белыми не очень понятен... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 20:03 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos 20 лет назад эванс с фаулером под стол пешком ходили :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 20:18 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v skyANA пропущено... На каком ещё рынке? На рынке Алмаз-Антей? Рынок программного обеспечения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 20:19 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA ViPRos 20 лет назад эванс с фаулером под стол пешком ходили :) не надо прибавлять годы, пенсия маленькая :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 20:34 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух ViPRos Вот тут общая модель, Выделенный агрегат и логика агрегата Вся логика уровня сущности привязана к сущностям Инфраструктурная логика принадлежит модели красные это агрегаты? а чего они то "типы", то "макротипы"? А белые это сущности? Почему тогда "процесс нормативный" и "тип процесса" не внутри сущности "Процесс"? треугольная часть сверху (на некоторых) - что означает? уровень взаимодействия красных с белыми не очень понятен... да "про это" уже 100 раз тут говорили есть типы, которые могут быть связаны некоторое количество типов и связей могут быть выделены как агрегат (макротип) тип, который не ссылается ни на один из типов внутри агрегата является несущим (базовым) один и тот же тип может быть несущим для многих агрегатов с разной структурой внутри агрегата свойства типа могут быть изменены в сторону усиления ограничений (вплоть до изъятия с указанием значения или/или функции по умолчанию) агрегат агрегирует не все связи и связанные типы (обычно ссылки на терминальные типы и сами терминальные типы (справочники, в данном случае допустим "Тип процесса") агрегаты могут пересекаться и т.д. красным отмечены на общей схеме те типы для которых сделана попытка раскрыть связи (сразу всю схему е показываю, так как там может быть огромное количество типов и связей) а на агрегате красным помечен несущий тип агрегата (макротипа) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 20:45 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA Hexag0v пропущено... Рынок программного обеспечения. А какая разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 21:16 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v skyANA пропущено... и в каком же сегменте, нише данного рынка по вашему представлен ВИПРОС? А какая разница? ВИПРОС одинаково нигде не подходит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 00:36 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
полудух вот тут неплохо описаны агрегаты (с картинками) надо промотать до главы "What is an Aggregate?" (может hVostt прокомментирует, насколько там данные соответствуют действительности?) Ну если кратко, я не со всем согласен, о чём рассказывается в статье. 1. Отдельные сервисы превратили в аргегаты. Это ортогональные вещи, не стоит слепо так делать. Агрегат это целостная структура, как молекула, состоящая из атомов. И речь здесь идёт о модели данных и связей между ними. Логика инкапсулируется в ограниченном контексте. В нём могут быть несколько агрегатов, а не один. 2. Одна транзакция создаёт или обновляет один агрегат -- какая-то глупость. Зачем, почему так? Если в контексте CQRS, то логично, что одна команда изменяет один агрегат, не больше и не меньше. Если в контексте изменения одного агрегата вносятся изменения в другой, то команда выполняет вложенную команду. А бизнес-транзакция может быть сколько угодно сложная, откуда появились саги и прочие решения? полудух с другой стороны, класс сущности ну совсем БЕЗ логики слабо себе представляю... какая-то логика там же всё равно должна быть? какая? Инфраструктурная логика. Никакой бизнес-логики. Почему? Потому что агрегат на себе никогда не вывезет все требования бизнеса, не превратившись при этом в неподдерживаемое чудовище. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 02:24 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA Hexag0v пропущено... А какая разница? ВИПРОС одинаково нигде не подходит :) Скажу больше. Даже в задачах, которые реализует ВИПРОС большинство ходов расстрельные. Хотим вынести функционал в веб? Досвидания. Хотим распространить решение за рамки рабочих мест windows? Досвидания. Реализовать мобильную логику? Досвидания. Тут вообще за рамки учётной системы в конкретных жёстких условиях не выйти, без переписывания всего и вся. Или лепить какие-то коннекторы и адаптеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 02:31 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA, Тут ещё другие вопросы есть.Не для самой платформы, а для той логики, которую показывает ViPRos, есть ли тестирование? Принципиально возможно? Пишет кто-то тесты? Запускает при изменении? Рефакторинг логики? Версионность? Есть ли среды? Процессы доставки? В мегаубожеском (имхо) SAP-е, например, это всё есть из коробки. На тестирование конечно обычно клали, но вот среды есть, и с этим строго. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 02:35 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Ну если кратко, я не со всем согласен, о чём рассказывается в статье. ясно, спасибо ты наверное когда начинал свой проект тоже думал "о, ща быстренько сделаем всё по мануалу, книжки все есть"... а через год рефакторить весь этот гемор, потому что его писали теоретики ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 04:24 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA Hexag0v пропущено... А какая разница? Причем тут принтер? Можно привести еще вагон примеров, для чего он не подходит. Продукт занимает свою нишу, где успешно решает конкретные задачи. skyANAВИПРОС одинаково нигде не подходит 20 лет живет и поддерживается продукт, который нигде не подходит, странно.. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 11:12 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Тут ещё другие вопросы есть.Не для самой платформы, а для той логики, которую показывает ViPRos, есть ли тестирование? Принципиально возможно? Пишет кто-то тесты? Запускает при изменении? Рефакторинг логики? Версионность? Есть ли среды? Процессы доставки? Вижу у вас нет опыта, когда нужно CI/CD и Web API добавить в большой легаси проект ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 11:23 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v skyANA пропущено... Действительно, а какая разница томографию делать, билеты на самолёт покупать, или 3д принтером управлять. Причем тут принтер? Можно привести еще вагон примеров, для чего он не подходит. Продукт занимает свою нишу, где успешно решает конкретные задачи. skyANAВИПРОС одинаково нигде не подходит 20 лет живет и поддерживается продукт, который нигде не подходит, странно.. :)Это разработка под конкретного заказчика Алмаз-Антей. В этой нише просто нет конкуренции. И больше никуда этот продукт не подходит. И особо не развивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 12:20 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v hVostt Тут ещё другие вопросы есть.Не для самой платформы, а для той логики, которую показывает ViPRos, есть ли тестирование? Принципиально возможно? Пишет кто-то тесты? Запускает при изменении? Рефакторинг логики? Версионность? Есть ли среды? Процессы доставки? Вижу у вас нет опыта, когда нужно CI/CD и Web API добавить в большой легаси проект ) Продуктам нашей компании 14 с лишним лет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 12:22 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRosчудик, если чек не понимает чей этот метод - агрегата, сущности или инфраструктуры, то скорее всего все эти агрегаты и сущности надуманы (текущий уровень понимания предметной области) В нормальных системах главное - схема. Агрегаты и независимые сущности вычислимы. Контексты (кластеры, подсистемы) вычислимы. Инфраструктурные методы (включая сериализации, десериализации,...) общесхемны и т.д. Уважаемый ViPRos, а есть где почитать подробнее про то, что Вы описываете ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 13:21 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA Это разработка под конкретного заказчика Алмаз-Антей. В этой нише просто нет конкуренции. И больше никуда этот продукт не подходит. И особо не развивается. Внутрекорпоротивный софт заменить сложней, но и видел как компания отказывалась от личных разаработок, переходя на субподрядчиков или полукоробочные продукты. В целом я понял куда вы клоните ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 14:43 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA Hexag0v пропущено... Вижу у вас нет опыта, когда нужно CI/CD и Web API добавить в большой легаси проект ) Продуктам нашей компании 14 с лишним лет. Так вы с hVostt в одной компании? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 14:46 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Hexag0v skyANA пропущено... Наоборот есть. Продуктам нашей компании 14 с лишним лет. Так вы с hVostt в одной компании? :) Просто то, что вы назвали "когда нужно CI/CD и Web API добавить в большой легаси проект" не такая уж и редкость. Многие имеют такой опыт за плечами. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 14:57 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
mirudom ViPRosчудик, если чек не понимает чей этот метод - агрегата, сущности или инфраструктуры, то скорее всего все эти агрегаты и сущности надуманы (текущий уровень понимания предметной области) В нормальных системах главное - схема. Агрегаты и независимые сущности вычислимы. Контексты (кластеры, подсистемы) вычислимы. Инфраструктурные методы (включая сериализации, десериализации,...) общесхемны и т.д. а есть где почитать подробнее про то, что Вы описываете ? ну, на сайте vipros (можно нажать на профиль), на сайте фирмы - https://aamc.ru/vipros/ там есть доки (возможно не самые полные, но есть) по платформе, по решениям ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:19 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA Это разработка под конкретного заказчика Алмаз-Антей. В этой нише просто нет конкуренции. И больше никуда этот продукт не подходит. И особо не развивается. хехе, все ЕРП, МЕС, СРМ,... и т.д. фигня как раз конкурируют в этой нише это огромные заводы, холдинги ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:22 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA Это разработка под конкретного заказчика Алмаз-Антей. В этой нише просто нет конкуренции. И больше никуда этот продукт не подходит. И особо не развивается. хехе, все ЕРП, МЕС, СРМ,... и т.д. фигня как раз конкурируют в этой нише это огромные заводы, холдинги в какой этой нише? какой процент занимает ВИПРОС? назови пяток основных конкурентов ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:25 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
какой рост и в чём показал продукт за последний год? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:27 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt, читай доки, если охота - там и про импорт - экспорт метаданных со слиянием и т.д., ты бы просто посмотрел бы на механизм запуска методов (там одновременно может быть несколько версий одного и того же метода на выбор) хорош блабла, то что вы делаете вручную (все жестко прибито в коде, потому мучаетесь с рефакторингом при малейшем изменении) в ВИПРОС автоматизировано просто сложно такие системы внедрить и поддерживать, это же не записная книжка для любителей "желтых альбатросов" тот же САП по 10-15 лет внедряют, а все еще не выходят за уровень финансовой отчетности и HR ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:30 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Дмитрий Мух ViPRos пропущено... хехе, все ЕРП, МЕС, СРМ,... и т.д. фигня как раз конкурируют в этой нише это огромные заводы, холдинги в какой этой нише? какой процент занимает ВИПРОС? назови пяток основных конкурентов ну, допустим "Управление производством" машиностроительного завода - Аспрова, Преактор, Фобос,... тебе же это ни о чем не говорит? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:32 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Так то можно заявить, что ВИПРОС вполне успешно на мировом рынке систем управления производством вооружения конкурирует :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:33 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Дмитрий Мух какой рост и в чём показал продукт за последний год? за последний год основной продукт (ВИП.Производство) внедряется (5 этапов сданы, идет последний 6 этап) на Стреле, ГОЗ и НМЗ - предварительные работы ты представляешь что это за монстры? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:35 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Дмитрий Мух Так то можно заявить, что ВИПРОС вполне успешно на мировом рынке систем управления производством вооружения конкурирует :) не с кем конкурировать, никто не может делать то, что делает ВИПРОС, не за красивые глаза бабки платят "вооружение" тут не при чем (частный случай) - "система управления дискретным производством" еще больше - "процессно - проектные системы" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:39 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos Дмитрий Мух какой рост и в чём показал продукт за последний год? за последний год основной продукт (ВИП.Производство) внедряется (5 этапов сданы, идет последний 6 этап) на Стреле, ГОЗ и НМЗ - предварительные работы ты представляешь что это за монстры? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:40 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos Дмитрий Мух Так то можно заявить, что ВИПРОС вполне успешно на мировом рынке систем управления производством вооружения конкурирует :) не с кем конкурировать, никто не может делать то, что делает ВИПРОС, не за красивые глаза бабки платят "вооружение" тут не при чем (частный случай) - "система управления дискретным производством" еще больше - "процессно - проектные системы" А по факту только вооружение. Где ещё? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:41 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
И всё это по факту Алмаз-Антей. Какая прям здоровая конкуренция :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:44 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
[quot Дмитрий Мух#22054530] ViPRos А по факту только вооружение. Где ещё? Ты вроде умный малый, а тупишь как никто - да я не продаю ВИПРОС, ВИП.Производство,.... АА считает что 1. бизнес по части ПО не ее 2. ВИПРОС, ВИП.Производство,.... - конкурентное преимущество (изначально было сказано что ВИПРОС не будет продаваться, потом вроде разрешили, но структуру продажную никто не создал) 3. Я, как автор, естественно хочу что бы продавались мои проги, а воще пофиг - материальной выгоды никакой, а просто хвалить у нас не любят ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:48 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Дмитрий Мух И всё это по факту Алмаз-Антей. Какая прям здоровая конкуренция :) да что бы поймать ОДИН такой завод для какой нить САП, СИМЕНС и т.д. - выдающееся достижение ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:49 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos Дмитрий Мух А по факту только вооружение. Где ещё? Ты вроде умный малый, а тупишь как никто - да я не продаю ВИПРОС, ВИП.Производство,.... АА считает что 1. бизнес по части ПО не ее 2. ВИПРОС, ВИП.Производство,.... - конкурентное преимущество (изначально было сказано что ВИПРОС не будет продаваться, потом вроде разрешили, но структуру продажную никто не создал) 3. Я, как автор, естественно хочу что бы продавались мои проги, а воще пофиг - материальной выгоды никакой, а просто хвалить у нас не любят Где я туплю-то? ВИПРОС - внутренняя разработка Алмаз-Антей под свои нужды. Внедряемая на предприятиях концерна. На открытом рынке программного обеспечения его нет и никому это на фиг не надо. Типичный внутрикорпоративный софт. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:55 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos Дмитрий Мух И всё это по факту Алмаз-Антей. Какая прям здоровая конкуренция :) да что бы поймать ОДИН такой завод для какой нить САП, СИМЕНС и т.д. - выдающееся достижение ну да, у них же нет контрольного пакета акций НМЗ :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 16:56 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Дмитрий Мух ну да, у них же нет контрольного пакета акций НМЗ :) прежде чем выбрать ВИПРОС, были проведен независимый аудит систем (ты кажется думаешь, что в НМЗ и т.д. щи хлебают лаптями) вощем, тупой ты или злобствуешь не по делу ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 17:01 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos Дмитрий Мух ну да, у них же нет контрольного пакета акций НМЗ :) прежде чем выбрать ВИПРОС, были проведен независимый аудит систем (ты кажется думаешь, что в НМЗ и т.д. щи хлебают лаптями) вощем, тупой ты или злобствуешь не по делу ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 17:16 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Дмитрий Мух ВИПРОС - внутренняя разработка Алмаз-Антей под свои нужды. Внедряемая на предприятиях концерна. На открытом рынке программного обеспечения его нет и никому это на фиг не надо. Типичный внутрикорпоративный софт. а что из этого НЕ верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 17:19 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
Давайте с Випросом в другую ветку ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 22:38 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos читай доки, если охота - там и про импорт - экспорт метаданных со слиянием и т.д., ты бы просто посмотрел бы на механизм запуска методов (там одновременно может быть несколько версий одного и того же метода на выбор) хорош блабла, то что вы делаете вручную (все жестко прибито в коде, потому мучаетесь с рефакторингом при малейшем изменении) в ВИПРОС автоматизировано просто сложно такие системы внедрить и поддерживать, это же не записная книжка для любителей "желтых альбатросов" тот же САП по 10-15 лет внедряют, а все еще не выходят за уровень финансовой отчетности и HR Импорт/экспорт, ну естественно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 06:23 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRosну, на сайте vipros (можно нажать на профиль), на сайте фирмы - https://aamc.ru/vipros/ там есть доки (возможно не самые полные, но есть) по платформе, по решениям Ок, спасибою Еще вопрос, ежели вопросы появятся, есть ли возможность задать и где ? Уважаемый ViPRos еще, народ иногда зарабатывает деньги или от процесса или от результата оного, ну и соответственно, процесс делают бесконечным или все равно каким путем достигнут результат и особенно, интерпретация достижения результата забавляет ну, в современных условиях конечно. У рынка есть очень важная характеристика - его ограниченность, и просто так Вас всякие шаромыжники на него не пуустят. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 14:08 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
mirudom, вопросы можно задавать на sql.ru :) так как больше негде а рынки меня мало беспокоят, я - наемный работник ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 15:11 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Импорт/экспорт, ну естественно :) а як ж, надо было брокер метаданных какой нить на облаках, типа все публикуют свои изменения, а подписчики синхронизируются и в конце каждого цикла фейерверк и салюты ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 15:14 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos hVostt Импорт/экспорт, ну естественно :) а як ж, надо было брокер метаданных какой нить на облаках, типа все публикуют свои изменения, а подписчики синхронизируются и в конце каждого цикла фейерверк и салюты Ну почему же, вовсе нет. Микросервисы. Коли у тебя центр информационной вселенной это мета-данные, то мог бы существовать отдельный сервис мета-данных, полностью независимый. К нему сервисы данных и проекций. А далее сервисы, заточенные под конкретные нужды, которые работают независимо и решают задачу самым эффективным для конкретной задачи способом. Касательно масштабирования, при такой архитектуре хорошо подошла бы архитектура на акторах, чтобы была возможность масштабировать ядро. В общем решения есть, и они рабочие. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 18:29 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt ViPRos пропущено... а як ж, надо было брокер метаданных какой нить на облаках, типа все публикуют свои изменения, а подписчики синхронизируются и в конце каждого цикла фейерверк и салюты Ну почему же, вовсе нет. Микросервисы. Коли у тебя центр информационной вселенной это мета-данные, то мог бы существовать отдельный сервис мета-данных, полностью независимый. К нему сервисы данных и проекций. А далее сервисы, заточенные под конкретные нужды, которые работают независимо и решают задачу самым эффективным для конкретной задачи способом. Касательно масштабирования, при такой архитектуре хорошо подошла бы архитектура на акторах, чтобы была возможность масштабировать ядро. В общем решения есть, и они рабочие. я тут выкладывал такую архитектуру несколько лет назад на работе все это никому нафиг не нужно (микросервисы и есть акторы) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 19:28 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
вот сохранилась в рабочих материалах какой то вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 19:34 |
|
|
start [/forum/topic.php?all=1&fid=18&tid=1354817]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
176ms |
get tp. blocked users: |
2ms |
others: | 270ms |
total: | 532ms |
0 / 0 |