NetEvolve.Pulse.Extensibility 0.3.0

Prefix Reserved
dotnet add package NetEvolve.Pulse.Extensibility --version 0.3.0
                    
NuGet\Install-Package NetEvolve.Pulse.Extensibility -Version 0.3.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NetEvolve.Pulse.Extensibility" Version="0.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NetEvolve.Pulse.Extensibility" Version="0.3.0" />
                    
Directory.Packages.props
<PackageReference Include="NetEvolve.Pulse.Extensibility" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add NetEvolve.Pulse.Extensibility --version 0.3.0
                    
#r "nuget: NetEvolve.Pulse.Extensibility, 0.3.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package NetEvolve.Pulse.Extensibility@0.3.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=NetEvolve.Pulse.Extensibility&version=0.3.0
                    
Install as a Cake Addin
#tool nuget:?package=NetEvolve.Pulse.Extensibility&version=0.3.0
                    
Install as a Cake Tool

NetEvolve.Pulse.Extensibility

NuGet Version NuGet Downloads License

NetEvolve.Pulse.Extensibility delivers the core contracts for building CQRS mediators: commands, queries, events, handlers, interceptors, and configurators that compose the Pulse pipeline.

Features

  • Minimal abstractions for commands, queries, events, and request/response flows
  • Strongly typed handler interfaces with single-handler guarantees for commands and queries
  • Interceptor interfaces for cross-cutting concerns (logging, validation, metrics, caching)
  • Fluent mediator configuration via IMediatorConfigurator and extension methods
  • Designed for framework-agnostic use while pairing seamlessly with NetEvolve.Pulse
  • Test-friendly primitives including Void responses and TimeProvider awareness

Installation

NuGet Package Manager

Install-Package NetEvolve.Pulse.Extensibility

.NET CLI

dotnet add package NetEvolve.Pulse.Extensibility

PackageReference

<PackageReference Include="NetEvolve.Pulse.Extensibility" Version="x.x.x" />

Quick Start

using NetEvolve.Pulse.Extensibility;

public record CreateInvoiceCommand(string CustomerId, decimal Amount) : ICommand<InvoiceCreated>;
public record InvoiceCreated(Guid InvoiceId);

public sealed class CreateInvoiceHandler
    : ICommandHandler<CreateInvoiceCommand, InvoiceCreated>
{
    public Task<InvoiceCreated> HandleAsync(
        CreateInvoiceCommand command,
        CancellationToken cancellationToken) =>
        Task.FromResult(new InvoiceCreated(Guid.NewGuid()));
}

public record GetInvoiceQuery(Guid Id) : IQuery<Invoice>;
public record Invoice(Guid Id, string CustomerId, decimal Amount);

public sealed class GetInvoiceHandler : IQueryHandler<GetInvoiceQuery, Invoice>
{
    public Task<Invoice> HandleAsync(GetInvoiceQuery query, CancellationToken cancellationToken) =>
        Task.FromResult(new Invoice(query.Id, "CUST-123", 125.00m));
}

Usage

Basic Example

Pair the contracts with the Pulse mediator for DI and dispatching:

using Microsoft.Extensions.DependencyInjection;
using NetEvolve.Pulse;
using NetEvolve.Pulse.Extensibility;

var services = new ServiceCollection();
services.AddPulse();
services.AddScoped<ICommandHandler<CreateInvoiceCommand, InvoiceCreated>, CreateInvoiceHandler>();
services.AddScoped<IQueryHandler<GetInvoiceQuery, Invoice>, GetInvoiceHandler>();

var provider = services.BuildServiceProvider();
var mediator = provider.GetRequiredService<IMediator>();

var created = await mediator.SendAsync<CreateInvoiceCommand, InvoiceCreated>(
    new CreateInvoiceCommand("CUST-123", 125.00m));
var invoice = await mediator.QueryAsync<GetInvoiceQuery, Invoice>(
    new GetInvoiceQuery(created.InvoiceId));

Advanced Example

Extend the configurator with your own interceptors and plug them into Pulse:

using NetEvolve.Pulse.Extensibility;

public static class MediatorConfiguratorExtensions
{
    public static IMediatorConfigurator AddCustomValidation(
        this IMediatorConfigurator configurator)
    {
        // Register validation interceptors or pipelines here
        return configurator;
    }
}

// Register with Pulse
services.AddPulse(config =>
{
    config.AddActivityAndMetrics()
          .AddCustomValidation();
});

Configuration

// Configure mediator features during startup
services.AddPulse(config =>
{
    // Built-in observability interceptors
    config.AddActivityAndMetrics();

    // Custom extension methods for validation, caching, retries, etc.
    // config.AddCustomValidation();
});

Requirements

  • .NET 8.0, .NET 9.0, or .NET 10.0
  • Suitable for ASP.NET Core, console, worker, and library projects
  • OpenTelemetry packages required when using AddActivityAndMetrics() through Pulse

Documentation

For complete documentation, please visit the official documentation.

Contributing

Contributions are welcome! Please read the Contributing Guidelines before submitting a pull request.

Support

License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❤️ by the NetEvolve Team

Product 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.  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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on NetEvolve.Pulse.Extensibility:

Package Downloads
NetEvolve.Pulse

Pulse - A high-performance, lightweight CQRS mediator library specifically designed for modern ASP.NET Core applications. Pulse implements the mediator pattern to facilitate clean, decoupled communication between application components through commands, queries, and events. The library provides automatic handler discovery and registration through dependency injection, ensuring type-safe message dispatching with minimal boilerplate code. Key features include: comprehensive interceptor pipeline for cross-cutting concerns (validation, logging, metrics, caching), scoped lifetime management for thread-safe operations within HTTP request boundaries, built-in support for async/await patterns, zero-allocation optimizations for high-throughput scenarios, and seamless integration with ASP.NET Core's service container. Pulse enforces CQRS principles by requiring exactly one handler per command/query while supporting multiple event handlers for domain event broadcasting. Ideal for microservices, modular monoliths, vertical slice architectures, and any application requiring clear separation between read and write operations. The library promotes testability through its abstraction-based design and enables building maintainable, scalable applications following clean architecture and domain-driven design principles.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.0 39 1/11/2026