Xendor - это структура .NET Core Framework, которая может быть использована для создания простого и чистого дизайна путем обеспечения единой ответственности и разделения проблем. Его расширенные функции идеально подходят для домена, управляемого дизайном (DDD), ответа на командный запрос SEGRAGATION (CQRS) и поиск событий. Xendor также имеет интеграцию RabbitMQ.
Сегрегация ответственности команды-это шаблон, который говорит нам разделять операции, которые мутируют данные от тех, которые запрашивают их. Он получен из разделения командных запросов (CQS) CQS гласит, что в классе может быть только два вида методов: те, которые мутируют состояние и возвращают пустоту, и те, которые возвращают состояние, но не изменяют его.
CQRS - это шаблон, на который вы применяете? Вмески? вашего сервиса/приложения, и вы можете применить его только к части вашего сервиса.
Вместо того, чтобы хранить только текущее состояние данных в домене, используйте хранилище только для приложения для записи полной серии действий, предпринятых на этих данных. Магазин действует как система записи и может использоваться для материализации объектов домена. Это может упростить задачи в сложных областях, избегая необходимости синхронизировать модель данных и бизнес -область, при этом повышая производительность, масштабируемость и отзывчивость. Он также может обеспечить согласованность для транзакционных данных и поддерживать полный аудит и историю, которые могут обеспечить компенсацию.
Проекция является важной концепцией при создании систем, ориентированных на события. В то же время это очень просто.
Проекция - это получение текущего состояния из потока событий.
Например, рассмотрим ситуацию, когда сервер публикуется поток событий для всех подписчиков. Эти события связаны с регистрацией пользователей и выглядят как:
UserAddedToaccount
{
"userId" : 55 ,
"username" : " alemol " ,
"name" : " Alejandro " ,
"lastName" : " Moline "
}UserVerifiedEmail
{
"userId" : 55 ,
"email" : " [email protected] "
}UserUpdated
{
"userId" : 55 ,
"lastName" : " Molines "
}Мы можем прикрепить подписчика к потоку этих событий, чтобы проецировать этот поток в постоянную модель чтения, используемую для обслуживания пользовательских данных в веб -интерфейсе. Окончательное чтение модель может выглядеть как:
{
"userId" : 55 ,
"username" : " alemol " ,
"email" : " [email protected] " ,
"name" : " Alejandro " ,
"lastName" : " Molines "
}Если вы любите или используете этот проект, пожалуйста, дайте ему звезду. Спасибо!
Не стесняйтесь создавать проблему на GitHub. Взносы, запросы на тягу более чем приветствуются!
Xendor - Copyright © 2019 Alejandro Molines и другие участники по лицензии MIT.