Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/litenova/litebus

LiteBus is an easy-to-use and ambitious in-process mediator providing the foundation to implement Command Query Separation (CQS). It is implemented with minimal reflection and instead utilizes covariance and contravariance to provide its core functionality.
https://github.com/litenova/litebus

cqrs cqs csharp dispatcher dotnet dotnet-core eventbus mediator

Last synced: about 23 hours ago
JSON representation

LiteBus is an easy-to-use and ambitious in-process mediator providing the foundation to implement Command Query Separation (CQS). It is implemented with minimal reflection and instead utilizes covariance and contravariance to provide its core functionality.

Awesome Lists containing this project

README

        









LiteBus


An easy-to-use and ambitious in-process mediator to implement CQS


CI/CD Badge


Code Coverage Badge


LiteBus Nuget Version


For a detailed understanding and advanced use cases, please refer to the Wiki.

## Features

- Developed with .NET 8.0
- Independent (No external dependencies)
- Reduced use of reflection
- Provides polymorphic dispatch and handling of messages with support for covariance and contravariance
- Core Messaging Types include:
- `ICommand`: Command without result
- `ICommand`: Command with a result
- `IQuery`: Query
- `IStreamQuery`: Query yielding `IAsyncEnumerable`
- `IEvent`: Event
- Designed for flexibility and extensibility
- Modular architecture: Abstractions and implementations are provided in distinct packages
- Allows ordering of handlers
- Can handle plain messages (class types without specific interface implementations)
- Supports generic messages
- Features both global and individual pre and post handlers. These handlers also support covariance and contravariance
- Events do not necessarily need to inherit from `IEvent`, accommodating DDD scenarios. This is beneficial for
maintaining clean domain events without binding them to any particular library interface.