LiteBus.Messaging.Abstractions
0.24.3
dotnet add package LiteBus.Messaging.Abstractions --version 0.24.3
NuGet\Install-Package LiteBus.Messaging.Abstractions -Version 0.24.3
<PackageReference Include="LiteBus.Messaging.Abstractions" Version="0.24.3" />
paket add LiteBus.Messaging.Abstractions --version 0.24.3
#r "nuget: LiteBus.Messaging.Abstractions, 0.24.3"
// Install LiteBus.Messaging.Abstractions as a Cake Addin #addin nuget:?package=LiteBus.Messaging.Abstractions&version=0.24.3 // Install LiteBus.Messaging.Abstractions as a Cake Tool #tool nuget:?package=LiteBus.Messaging.Abstractions&version=0.24.3
<h1 align="center"> <br> <a href="https://github.com/litenova/LiteBus"> <img src="assets/logo/icon.png"> </a> <br> LiteBus <br> </h1>
<h4 align="center">An easy-to-use and ambitious in-process mediator to implement CQS</h4>
<p align="center">
<a href="https://github.com/litenova/LiteBus/actions/workflows/release.yml"> <img src="https://github.com/litenova/LiteBus/actions/workflows/release.yml/badge.svg" alt="CI/CD Badge" /> </a>
<a href="https://codecov.io/gh/litenova/LiteBus" > <img src="https://codecov.io/gh/litenova/LiteBus/graph/badge.svg?token=XBNYITSV5A" alt="Code Coverage Badge" /> </a>
<a href="https://www.nuget.org/packages/LiteBus"> <img src="https://img.shields.io/nuget/vpre/LiteBus.svg" alt="LiteBus Nuget Version" /> </a> </p>
<p align="center"> For a detailed understanding and advanced use cases, please refer to the <a href="https://github.com/litenova/LiteBus/wiki"><b>Wiki</b></a>. </p>
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 resultICommand<TResult>
: Command with a resultIQuery<TResult>
: QueryIStreamQuery<TResult>
: Query yieldingIAsyncEnumerable<TResult>
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.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages (6)
Showing the top 5 NuGet packages that depend on LiteBus.Messaging.Abstractions:
Package | Downloads |
---|---|
LiteBus.Commands.Abstractions
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. |
|
LiteBus.Queries.Abstractions
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. |
|
LiteBus.Messaging
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. |
|
LiteBus.Events.Abstractions
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. |
|
LiteBus.Events
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. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.24.3 | 1,417 | 5/2/2024 |
0.24.2 | 279 | 4/16/2024 |
0.24.1 | 228 | 1/30/2024 |
0.23.1 | 2,253 | 1/11/2024 |
0.23.0 | 320 | 12/23/2023 |
0.22.0 | 270 | 12/23/2023 |
0.21.0 | 294 | 12/18/2023 |
0.20.2 | 330 | 12/8/2023 |
0.20.1 | 278 | 12/5/2023 |
0.20.0 | 1,247 | 12/5/2023 |
0.19.1 | 234 | 11/25/2023 |
0.19.0 | 241 | 11/23/2023 |
0.18.4 | 315 | 11/23/2023 |
0.18.3 | 304 | 11/23/2023 |
0.18.2 | 319 | 11/22/2023 |
0.18.1 | 930 | 11/6/2023 |
0.18.0 | 342 | 11/1/2023 |
0.17.1 | 325 | 10/20/2023 |
0.16.0 | 420 | 9/26/2023 |
0.15.1 | 3,610 | 6/23/2023 |
0.15.0 | 670 | 6/23/2023 |
0.14.1 | 673 | 6/22/2023 |
0.14.0 | 1,065 | 11/30/2022 |
0.13.0 | 2,149 | 10/7/2022 |
0.12.0 | 9,661 | 1/6/2022 |
0.11.3 | 5,171 | 12/27/2021 |
0.11.2 | 1,321 | 12/27/2021 |
0.11.1 | 1,280 | 12/26/2021 |
0.11.0 | 1,302 | 12/23/2021 |
0.10.2 | 1,285 | 12/22/2021 |
0.10.1 | 1,264 | 12/20/2021 |
0.10.0 | 1,394 | 12/15/2021 |
0.9.1 | 2,073 | 10/25/2021 |
0.9.0 | 1,727 | 10/25/2021 |
0.8.1 | 5,095 | 10/9/2021 |
0.8.0 | 2,278 | 9/7/2021 |
0.7.0 | 2,539 | 8/19/2021 |
0.6.3 | 2,139 | 8/9/2021 |
0.6.2 | 1,737 | 8/9/2021 |
0.6.1 | 1,763 | 8/9/2021 |
0.6.0 | 1,787 | 8/9/2021 |
0.5.0 | 1,813 | 7/8/2021 |
0.4.0 | 2,087 | 4/13/2021 |
0.3.1 | 1,784 | 4/13/2021 |
0.2.1 | 1,677 | 4/9/2021 |
0.2.0 | 1,703 | 4/6/2021 |
0.1.0 | 1,799 | 3/17/2021 |
# Changelog
## v.0.24.3
- Don't throw error by default if no handlers were found for plain event message types
## v.0.24.2
- Allow aborting the execution of handlers by calling `Abort` on the execution context.
## v.0.24.1
- Add `Tags` to `IExecutionContext`.
## v.0.24.0
- Upgraded to .NET 8.
## v.0.23.1
- Add `QueryMediatorExtensions` for backward compatibility.
- Add `CommandMediatorExtensions` for backward compatibility.
- Add `EventMediatorExtensions` for backward compatibility.
## v.0.23.0
- Fix the missing `Exception` parameter in `IAsyncMessageErrorHandler[TMessage, TMessageResult]` and `IAsyncMessageErrorHandler[TMessage]` interfaces.
## v.0.22.0
- Introduce tag-based handler filtering through `HandlerTag` and `HandlerTags` attributes.
- Add `CommandMediationSettings` to `ICommandMediator` to allow configuring command mediation.
- Add `QueryMediationSettings` to `IQueryMediator` to allow configuring query mediation.
## v.0.21.0
- Fixed Query, Event, and Command error handlers returning `object` instead of `Task`.
## v.0.20.2
- Refined Handle Descriptors
- Removed Any Usage of Reflection in `MessageDependencies`
- Removed Some Redundant Code From Descriptors
## v.0.20.1
- Rename `AddMessaging` method to `AddMessageModule`.
## v.0.20.0
- Revert TargetFramework to NET 7
## v.0.19.1
- Add `ThrowOnNoHandlers` to `EventMediationSettings` to allow throwing an exception when no handlers are found for an event.
- Fixed a bug where the pre and post handlers were being executed even when no main handlers were found.
## v.0.19.0
- Upgraded to .NET 8.
## v.0.18.4
- Rename `FilterHandler` to `HandlerFilter` on `EventMediationSettings` as it is more concise and directly states that it is a filter for handlers.
## v.0.18.3
- Add `EventMediationSettings` to IEventMediator to allow configuring event mediation.
- Add `FilterHandler` to `EventMediationSettings` to allow filtering event handlers.
## v.0.18.2
- Preserve the stack trace when rethrowing an exception in case there are no error handlers.
## v.0.18.1
- Make execution of event handlers synchronous by default.
## v.0.18.0
- All post handlers expose message result as the second parameter.
- Fixed a bug where IEventPreHandler was not asynchronous.
- Added more unit tests.
## v.0.17.1
- Add `Items` property to `IExecutionContext` to allow passing data between handlers.
## v.0.17.0
- Rename `AddCommands` method to `AddCommandModule`.
- Rename `AddEvents` method to `AddEventModule`.
- Rename `AddQueries` method to `AddQueryModule`.
## v.0.16.0
- Introduced execution context using AsyncLocal functionality, accessible through AmbientExecutionContext.
- Renamed `RegisterFrom` to `RegisterFromAssembly` in module builders.
- Standardized namespace for all files in the `LiteBus.Messaging.Abstractions` project to `LiteBus.Messaging.Abstractions`, irrespective of folder path.
- Removed `HandleContext` as a parameter from post and pre handlers.
## v.0.15.1
- Removed `IEvent` constraint from event handlers, allowing objects to be passed as events without implementing the `IEvent` interface.
## v.0.15.0
- Added overload method to event publisher for passing an object as a message.
- Removed `LiteBus` prefix from module constructor names.
## v.0.14.1
- Upgraded dependency packages.
## v.0.14.0
- Upgraded to .NET 7.
## v.0.13.0
- Replaced `ICommandBase` with `ICommand`.
- Replaced `IQueryBase` with `IQuery`.
- Renamed `ILiteBusModule` to `IModule`.
- Removed methods `RegisterPreHandler`, `RegisterHandler`, and `RegisterPostHandler`, replacing them with `Register`.
- Removed superfluous base interfaces.
## v.0.12.0
- Added support to message registry for registering any class type as a message.
## v.0.11.3
- Fixed bug: Execute error handlers instead of pre handlers during error phase.
## v.0.11.2
- Fixed bug: Considered the count of indirect error handlers when determining if an exception should be rethrown.
## v.0.11.1
- Disabled nullable reference types.
- Ensured error handlers cover errors in pre and post handlers.
## v.0.11.0
- Introduced non-generic message registration overloads for events, queries, and messaging configuration.
- Removed the sample project.
- Added unit tests for events and queries.