LightMediator.EventBus.SignalR
0.5.1.1
See the version list below for details.
dotnet add package LightMediator.EventBus.SignalR --version 0.5.1.1
NuGet\Install-Package LightMediator.EventBus.SignalR -Version 0.5.1.1
<PackageReference Include="LightMediator.EventBus.SignalR" Version="0.5.1.1" />
<PackageVersion Include="LightMediator.EventBus.SignalR" Version="0.5.1.1" />
<PackageReference Include="LightMediator.EventBus.SignalR" />
paket add LightMediator.EventBus.SignalR --version 0.5.1.1
#r "nuget: LightMediator.EventBus.SignalR, 0.5.1.1"
#addin nuget:?package=LightMediator.EventBus.SignalR&version=0.5.1.1
#tool nuget:?package=LightMediator.EventBus.SignalR&version=0.5.1.1
LightMediator
LightMediator is a lightweight library designed to simplify decoupled communication in distributed Windows services. It works with multiple notification types and supports services across different namespaces.
Features
- Lightweight and efficient.
- Supports publish-subscribe, request-response, and one-way notifications.
- Simplifies working with decoupled services in distributed systems.
- Easy to integrate with existing applications.
- Supports commands and command handlers for request-response communication.
Installation
You can install the LightMediator NuGet package using the following command:
dotnet add package LightMediator
Usage
Publish Notifications
You can publish notifications to subscribers using the LightMediator instance:
var mediator = new LightMediator();
mediator.Publish(new Notification("ServiceStarted"));
Handle Notifications
To handle notifications, create a class that implements the INotificationHandler<T>
interface. Ensure that Notification
implements the INotification
interface:
public class Notification : INotification
{
public string Message { get; }
public Notification(string message)
{
Message = message;
}
}
public class NotificationHandler : INotificationHandler<Notification>
{
public Task Handle(Notification notification, CancellationToken cancellationToken)
{
Console.WriteLine($"Received: {notification.Message}");
return Task.CompletedTask;
}
}
Use Commands and Command Handlers
LightMediator also supports commands and command handlers to facilitate request-response communication.
Define a Command
A command is a class that implements the IRequest<TResponse>
interface, where TResponse
is the type of the response the command expects.
public class TestCommand : IRequest<TestCommandResponse>
{
public string Message { get; set; }
}
Define a Command Handler
A command handler is a class that implements the IRequestHandler<TRequest, TResponse>
interface. The handler contains the logic for processing the command.
public class TestCommandHandler : RequestHandler<TestCommand, TestCommandResponse>
{
private readonly ILogger<TestCommandResponseHandler> _logger;
public TestCommandHandler(ILogger<TestCommandResponseHandler> logger)
{
_logger = logger;
}
public override async Task<TestCommandResponse> Handle(TestCommand request, CancellationToken cancellationToken)
{
// Handle the command and return a response
return new TestCommandResponse
{
ResponseMessage = $"Received command with message: {request.Message}"
};
}
}
Define a Command Response
The response is a class that contains the result of processing the command.
public class TestCommandResponse
{
public string ResponseMessage { get; set; }
}
Sending a Command
You can send a command and get a response using the Send
method from LightMediator.
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private readonly IMediator _mediator;
public Worker(ILogger<Worker> logger,IMediator mediator)
{
_mediator = mediator;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
await _mediator.Send(new TestCommand()
{
Title = "Test",
Description = "Test",
});
var res = await _mediator.Send<bool>(new TestCommandResponse()
{
Title = "Test",
Description = "Test",
});
if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}
await Task.Delay(1000, stoppingToken);
}
}
}
Registering Commands , Notifications and Handlers
You can register handlers with the dependency injection container in your application startup:
// Add Mediator to the Dependency Injection container
builder.Services.AddLightMediator(options =>
{
// Configure options for the mediator
options.IgnoreNamespaceInAssemblies = true;
options.IgnoreNotificationDifferences = true;
options.RegisterNotificationsByAssembly = true;
options.RegisterRequestsByAssembly = true;
//Specify the assemblies to scan for notification and request
options.Assemblies = new[]
{
Assembly.GetExecutingAssembly(),
ServiceAExtensions.GetServiceAssembly(),
ServiceBExtensions.GetServiceAssembly(),
ServiceCExtensions.GetServiceAssembly()
};
});
License
This project is licensed under the MIT License. See the LICENSE file for details.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- LightMediator.EventBus (>= 0.5.1.1)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.0)
- Microsoft.AspNetCore.Routing (>= 2.3.0)
- Microsoft.AspNetCore.SignalR (>= 1.2.0)
- Microsoft.AspNetCore.SignalR.Client (>= 9.0.2)
- Microsoft.Extensions.Hosting (>= 9.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
0.5.1.14 | 101 | 5/31/2025 |
0.5.1.12 | 79 | 5/23/2025 |
0.5.1.10 | 136 | 5/22/2025 |
0.5.1.9 | 156 | 5/21/2025 |
0.5.1.8 | 141 | 5/21/2025 |
0.5.1.7 | 143 | 5/19/2025 |
0.5.1.6 | 143 | 5/18/2025 |
0.5.1.5 | 96 | 5/18/2025 |
0.5.1.4 | 96 | 5/18/2025 |
0.5.1.3 | 98 | 5/18/2025 |
0.5.1.1 | 242 | 5/13/2025 |
0.5.1 | 226 | 5/13/2025 |
0.5.0 | 209 | 5/12/2025 |
- Create base features
- Add signalr hub for handleing mediator communications
- Add signalr endpointbuilder extension