Skip to content

quanliang2000/Microwave

 
 

Repository files navigation

Microwave

Microwave is a Framework to create event driven microservices. It helps you implement Eventsourcing and CQRS and lets you implement your domain and not have you worried about distributing your domain events or storing them. The generated service network is able to transfer the domain events by itself and is not dependant on a central unit.

Build Status sonarCubeCoverage nuget

General Architecture

Keeping Microservices independant from each other is key if you want to build a system that aims to not become the "Distributed Monolith". Microwave is a framework that supports the idea of "Self Contained Systems" by delivering a infrastructure that helps you transfer changes in your domain through your system without any headache. The key element is a event driven architecture that evolves around domain events. If something of value happens in your domain, you persist a domain event and microwave distributes the event to all services that are subscribed to this event asynchronously. Therefore Microwave uses the IEventstore that persists the domain events of a service. To subscribe to events, you just implement a IHandleAsync<T> Interface where T is the type of a domain event and microwave transfers the events to this handler as soon as they happen in your domain. With this mechanism Microwave also offers an easy way to implement readmodels by implementing the IHandle<T> interface that also transfers the domain events to your objects, so you only have to do the mapping and your readmodel gets updated everytime anything happens in your domain. The general workflow looks like this:

alt text

Take a look at the wiki for further details!

About

A framework to implement event driven microservices in Domain Driven Design

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 95.4%
  • HTML 4.6%