Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/litenova/litebus
- Owner: litenova
- License: mit
- Created: 2020-12-04T00:14:35.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-01-05T19:00:04.000Z (about 1 month ago)
- Last Synced: 2025-02-06T01:56:03.277Z (about 23 hours ago)
- Topics: cqrs, cqs, csharp, dispatcher, dotnet, dotnet-core, eventbus, mediator
- Language: C#
- Homepage:
- Size: 619 KB
- Stars: 26
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
LiteBus
An easy-to-use and ambitious in-process mediator to implement CQS
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.