Telegram Group & Telegram Channel
#MergeConf Денис Цветцих из T-Bank. Эффективные DomainEvents из DDD. Денис начал с того, что механизм Domain Events - полезен, но в литературе упоминается вскользь и противоречиво: автор одновременно пишет, что событие локально принадлежит ограниченному контексту и тут же указывает, что события используются для связи контекстов. То же касается транзакций - пишут, что этот механизм аналогичен триггерам БД и обеспечивает консистентность, и тут же упоминают про асинхронную отправку через сообщения. И дальше Денис подробно рассказывает о шаблонах применения событий.

Правда, этот шаблон применения актуален только в рамках более общего шаблона реализации приложений, который явно описан не был, он лишь подразумевается. А многие тезисы доклада можно понять, лишь с опорой на этот шаблон. Поэтому я его тут быстро восстановлю.

В основе - c4 model. В ней бизнес - это вообще контекст исполнения. А дальше есть уровни: контейнеры - компоненты - код. И все бизнес-содержание в этой модели опущено на уровне кода, DDD применяется именно там, и Domain Events - этого уровня. А для интеграции используются DTO и Application Events, они очищены от доменной специфики.

Далее, внутри сервиса обработка организована через команды, каждая команда выполняется в одной транзакции. И обработчик должен открыть транзакцию, а потом закрыть. Поэтому если ты вызываешь обработчик команды из другой команды - у тебя сложности, надо это определить и в этом случае не открывать транзакцию и, главное - не делать коммит в конце. А это означает, в том числе, что шаблон записал в БД - сделал коммит - отправил сообщение, обработчик которого уверен, что оно обработано - не срабатывает, потому что команда была вызвана из другой, и потом оно упало.

И если подразумевать этот шаблон приложения, то примеры из доклада, как применять события вместо явного вызова команд, становятся понятными. Domain Events требует инфраструктуры - записи событий и их обработки. Отрабатывать можно перед commit на механизмах ORM. B создавать события их можно не только явно в коде, но и на механизмах ORM. Шаблонов и примеров было много, с кодом, так что пересказывать их сложно. Но можно посмотреть презентацию.



group-telegram.com/mtsepkov/889
Create:
Last Update:

#MergeConf Денис Цветцих из T-Bank. Эффективные DomainEvents из DDD. Денис начал с того, что механизм Domain Events - полезен, но в литературе упоминается вскользь и противоречиво: автор одновременно пишет, что событие локально принадлежит ограниченному контексту и тут же указывает, что события используются для связи контекстов. То же касается транзакций - пишут, что этот механизм аналогичен триггерам БД и обеспечивает консистентность, и тут же упоминают про асинхронную отправку через сообщения. И дальше Денис подробно рассказывает о шаблонах применения событий.

Правда, этот шаблон применения актуален только в рамках более общего шаблона реализации приложений, который явно описан не был, он лишь подразумевается. А многие тезисы доклада можно понять, лишь с опорой на этот шаблон. Поэтому я его тут быстро восстановлю.

В основе - c4 model. В ней бизнес - это вообще контекст исполнения. А дальше есть уровни: контейнеры - компоненты - код. И все бизнес-содержание в этой модели опущено на уровне кода, DDD применяется именно там, и Domain Events - этого уровня. А для интеграции используются DTO и Application Events, они очищены от доменной специфики.

Далее, внутри сервиса обработка организована через команды, каждая команда выполняется в одной транзакции. И обработчик должен открыть транзакцию, а потом закрыть. Поэтому если ты вызываешь обработчик команды из другой команды - у тебя сложности, надо это определить и в этом случае не открывать транзакцию и, главное - не делать коммит в конце. А это означает, в том числе, что шаблон записал в БД - сделал коммит - отправил сообщение, обработчик которого уверен, что оно обработано - не срабатывает, потому что команда была вызвана из другой, и потом оно упало.

И если подразумевать этот шаблон приложения, то примеры из доклада, как применять события вместо явного вызова команд, становятся понятными. Domain Events требует инфраструктуры - записи событий и их обработки. Отрабатывать можно перед commit на механизмах ORM. B создавать события их можно не только явно в коде, но и на механизмах ORM. Шаблонов и примеров было много, с кодом, так что пересказывать их сложно. Но можно посмотреть презентацию.

BY mtsepkov


Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260

Share with your friend now:
group-telegram.com/mtsepkov/889

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

On Telegram’s website, it says that Pavel Durov “supports Telegram financially and ideologically while Nikolai (Duvov)’s input is technological.” Currently, the Telegram team is based in Dubai, having moved around from Berlin, London and Singapore after departing Russia. Meanwhile, the company which owns Telegram is registered in the British Virgin Islands. Official government accounts have also spread fake fact checks. An official Twitter account for the Russia diplomatic mission in Geneva shared a fake debunking video claiming without evidence that "Western and Ukrainian media are creating thousands of fake news on Russia every day." The video, which has amassed almost 30,000 views, offered a "how-to" spot misinformation. The Dow Jones Industrial Average fell 230 points, or 0.7%. Meanwhile, the S&P 500 and the Nasdaq Composite dropped 1.3% and 2.2%, respectively. All three indexes began the day with gains before selling off. He said that since his platform does not have the capacity to check all channels, it may restrict some in Russia and Ukraine "for the duration of the conflict," but then reversed course hours later after many users complained that Telegram was an important source of information. I want a secure messaging app, should I use Telegram?
from ua


Telegram mtsepkov
FROM American