FluentMediator alternatives and similar packages
Based on the "Event aggregator and messenger" category.
Alternatively, view FluentMediator alternatives based on common mentions on social networks and blogs.
-
TinyMessenger
A lightweight event aggregator/messenger for loosely coupled communication. -
Blazor.EventAggregator
Lightweight Event Aggregator for Blazor (Razor Components). -
Rx Event Aggregator
Super-simple Reactive-Extension code from Reactive.EventAggregator
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of FluentMediator or a related project?
README
FluentMediator
:twisted_rightwards_arrows: We will not require you to add dependencies into your domain or to implement frameworks interfaces in your event handlers. Finally a really loosely coupled mediator library was born.
Install
Install-Package FluentMediator
For seameless .NET Core integration:
Install-Package FluentMediator.Microsoft.Extensions.DependencyInjection
How
Setup your events and pipelines using depedency injection. You can be very creative here! It supports async methods and cancellable tokens parameters, you could append multiple steps select one to return a message. An example:
services.AddFluentMediator(builder => {
builder.On<PingRequest>().Pipeline()
.Call<IPingHandler>((handler, request) => handler.MyMethod(request))
.Call<IPingHandler>((handler, request) => handler.MyLongMethod(request))
.Return<PingResponse, IPingHandler>(
(handler, request) => handler.MyOtherMethod(request)
);
});
Then you are able to use the injected IMediator
interface.
Publishing Events
// Puts the message in the pipeline, calls three handlers.
mediator.Publish<PingRequest>(ping);
Sending Commands and Queries
// Calls the three handlers then get the response from `MyOtherMethod(PingRequest)`.
PingResponse response = mediator.Send<PingResponse>(new PingRequest("Ping"));
Console.WriteLine(response.Message); // Prints "Pong"
Why
When designing CQRS or Event-Driven applications we need to publish events from the infrastructure layer into the domain event handlers. We do not want framework dependencies leaking out to the Model then FluentMediator was born.
Contributors
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore --> Ivan Paulovich💻 🎨 ⚠️ Joakim Carselind👀 🤔 Vaggelis Mparmpas⚠️
<!-- ALL-CONTRIBUTORS-LIST:END -->