O Xendor é uma estrutura .NET Core que pode ser usada para criar um design simples e limpo, aplicando a responsabilidade única e a separação de preocupações. Seus recursos avançados são ideais para design orientado ao domínio (DDD), comando que a Seguração de Responsabilidade da Consulta (CQRS) e o fornecimento de eventos. Xendor também possui integrações de RabbitMQ.
A segregação de responsabilidade de comando-query é um padrão que nos diz para separar operações que sofrem dados daqueles que o consultam. Ele é derivado da CQS da Separação de Consulta de Comando (CQS) afirma que pode haver apenas dois tipos de métodos em uma classe: aqueles que sofrem de um estado e retornam vazios e os que retornam o estado, mas não o alteram.
CQRS é um padrão em que você aplica? O interior? do seu serviço/aplicativo e você pode aplicá -lo apenas à parte do seu serviço.
Em vez de armazenar apenas o estado atual dos dados em um domínio, use um armazenamento somente APEND para registrar a série completa de ações tomadas nesses dados. A loja atua como o sistema de registro e pode ser usada para materializar os objetos de domínio. Isso pode simplificar as tarefas em domínios complexos, evitando a necessidade de sincronizar o modelo de dados e o domínio dos negócios, melhorando o desempenho, a escalabilidade e a capacidade de resposta. Ele também pode fornecer consistência para dados transacionais e manter trilhas e histórico de auditoria completos que podem permitir ações de compensação.
A projeção é um conceito importante ao criar sistemas centrados no evento. Ao mesmo tempo, é extremamente simples.
A projeção é derivar o estado atual do fluxo de eventos.
Por exemplo, considere uma situação, onde um fluxo de eventos é publicado por um servidor para todos os assinantes. Esses eventos estão relacionados aos registros do usuário e parecem:
UserDedDoACCOUNT
{
"userId" : 55 ,
"username" : " alemol " ,
"name" : " Alejandro " ,
"lastName" : " Moline "
}UserverificeEMAIL
{
"userId" : 55 ,
"email" : " [email protected] "
}UserupDated
{
"userId" : 55 ,
"lastName" : " Molines "
}Podemos anexar um assinante ao fluxo desses eventos para projetar esse fluxo em um modelo de leitura persistente, usado para atender aos detalhes do usuário em uma interface da web. O modelo final de leitura pode parecer:
{
"userId" : 55 ,
"username" : " alemol " ,
"email" : " [email protected] " ,
"name" : " Alejandro " ,
"lastName" : " Molines "
}Se você gosta ou estiver usando este projeto, dê uma estrela. Obrigado!
Sinta -se à vontade para criar um problema no Github. Contribuições, solicitações de tração são mais do que bem -vindas!
Xendor é Copyright © 2019 Alejandro Molines e outros colaboradores sob a licença do MIT.