Skip to content

πŸ”€ FluentMediator is an unobtrusive library that allows developers to build custom pipelines for Commands, Queries and Events.

License

Notifications You must be signed in to change notification settings

ivanpaulovich/FluentMediator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

6f1c0a5 Β· Feb 4, 2020

History

93 Commits
Feb 4, 2020
Oct 20, 2019
Oct 20, 2019
Feb 4, 2020
Feb 4, 2020
Oct 17, 2019
Oct 8, 2019
Oct 13, 2019
Oct 6, 2019
Oct 6, 2019
Oct 21, 2019
Oct 20, 2019
Oct 19, 2019
Feb 4, 2020

Repository files navigation

FluentMediator

Build Status All Contributors GitHub issues GitHub pull requests NuGet

πŸ”€ 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

Ivan Paulovich
Ivan Paulovich

πŸ’» 🎨 ⚠️
Joakim Carselind
Joakim Carselind

πŸ‘€ πŸ€”
Vaggelis Mparmpas
Vaggelis Mparmpas

⚠️

Please contribute with Issues, Wiki and Samples.