ResQ.BuildingBlocks.Application 0.2.0

dotnet add package ResQ.BuildingBlocks.Application --version 0.2.0
                    
NuGet\Install-Package ResQ.BuildingBlocks.Application -Version 0.2.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="ResQ.BuildingBlocks.Application" Version="0.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ResQ.BuildingBlocks.Application" Version="0.2.0" />
                    
Directory.Packages.props
<PackageReference Include="ResQ.BuildingBlocks.Application" />
                    
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 ResQ.BuildingBlocks.Application --version 0.2.0
                    
#r "nuget: ResQ.BuildingBlocks.Application, 0.2.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 ResQ.BuildingBlocks.Application@0.2.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=ResQ.BuildingBlocks.Application&version=0.2.0
                    
Install as a Cake Addin
#tool nuget:?package=ResQ.BuildingBlocks.Application&version=0.2.0
                    
Install as a Cake Tool

ResQ.BuildingBlocks.Application

The application core (outer ring) — orchestration contracts, driven ports, and cross-cutting behaviors. Depends only on ResQ.BuildingBlocks.Domain.

  • CQRS contracts: ICommand / ICommand<T> / IQuery<T> + their handlers (own mediator abstraction — no third-party pipeline dependency, so no licensing surprises).
  • Driven ports (the Core owns these; adapters implement them): IUnitOfWork, IClock, IDomainEventDispatcher.
  • Pipeline behaviors: IPipelineBehavior<TRequest,TResponse> + ValidationBehavior (FluentValidation) and LoggingBehavior.
  • Dispatch: ISender / Sender route each request to its single handler through the ordered behavior chain; IDomainEventHandler<TEvent> + DomainEventDispatcher fan domain events out to their handlers by runtime type.
  • Persistence ports: IRepository<TAggregate,TId> / IReadRepository<TAggregate,TId> and an EF-free ISpecification<T> / Specification<T> (criteria, includes, ordering, paging, tracking) — adapters translate the specification onto their query engine.
  • Pagination: OffsetPage<T> (page/size/total) and the experimental CursorPage<T> (keyset).
  • Integration ports (shared by the messaging and persistence adapters, so neither references the other): IntegrationEvent, IIntegrationEventPublisher, IMessageSerializer, IIntegrationEventTypeRegistry, IIdempotencyStore.
public sealed record CreateWidget(string Sku) : ICommand<Guid>;

internal sealed class CreateWidgetHandler(IWidgetRepository repo, IUnitOfWork uow)
    : ICommandHandler<CreateWidget, Guid>
{
    public async Task<Result<Guid>> Handle(CreateWidget command, CancellationToken ct)
    {
        var widget = Widget.Create(command.Sku);
        if (widget.IsFailure) return Result.Failure<Guid>(widget.Error);
        repo.Add(widget.Value);
        await uow.SaveChangesAsync(ct);
        return widget.Value.Id;
    }
}

Apache-2.0 · part of resq-software/dotnet.

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

NuGet packages (6)

Showing the top 5 NuGet packages that depend on ResQ.BuildingBlocks.Application:

Package Downloads
ResQ.BuildingBlocks.Adapters.Messaging

Broker-agnostic messaging adapter — implements the application's integration-event ports over an in-memory System.Threading.Channels transport, with System.Text.Json serialization, a concurrency-bounded and idempotent BackgroundService consumer (Polly retry + dead-lettering), and DI wiring. Ships no broker client.

ResQ.BuildingBlocks.ServiceDefaults

Aspire-style cross-cutting service defaults — one call wires OpenTelemetry (traces, metrics, logs), health checks, service discovery, standard HTTP resilience, and a testable IClock. Also ships the CQRS observability pipeline behaviors (tracing + metrics), strongly-typed options registration, and a Polly resilience-pipeline helper keyed on the domain ErrorType.

ResQ.BuildingBlocks.Adapters.Web

HTTP driving adapter for the ResQ building blocks — a minimal-API surface that maps the Result/Error model to RFC 7807 ProblemDetails, plus endpoint discovery, FluentValidation endpoint filters, correlation middleware, API versioning, OpenAPI/Scalar, a config-bound CORS allowlist, and one ordered AddResqWeb/UseResqWeb wiring. Depends only on the application and domain cores.

ResQ.BuildingBlocks.Adapters.Persistence

EF Core 9 persistence adapter — the scoped EfUnitOfWork that dispatches domain events before saving, a specification-driven Repository/ReadRepository, an audit interceptor, and a transactional outbox plus inbox idempotency. Provider-agnostic (references only EF Core + Relational); depends only on the application and domain cores.

ResQ.BuildingBlocks.Testing

Lightweight, dependency-free test doubles for the ResQ building blocks — deterministic clock, unit-of-work fakes, recording dispatchers/publishers, a fluent test-data Builder, capturing/xUnit logger providers, hexagon dependency-rule data, and a one-call test-double registration helper. No Docker or ASP.NET; safe for any unit-test project.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0 380 8/16/2026