SOFTURE.Common.HealthCheck 0.3.1

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

SOFTURE

License: MIT NuGet .NET

A collection of reusable .NET libraries providing common infrastructure for building distributed, observable, and resilient microservices. Each module is published as an independent NuGet package and can be adopted incrementally.

Packages

Package Description
SOFTURE.Common.Authentication JWT Bearer authentication setup and configuration
SOFTURE.Common.CQRS CQRS middleware and validation behaviors for MediatR pipelines
SOFTURE.Common.Correlation Request correlation ID tracking for distributed tracing
SOFTURE.Common.HealthCheck Health check framework with standardized response format
SOFTURE.Common.Logging Structured logging with Serilog and Seq integration
SOFTURE.Common.Observability OpenTelemetry tracing and metrics (Prometheus, OTLP)
SOFTURE.Common.Resilience HTTP resilience policies — retry, circuit breaker, hedging, fallback
SOFTURE.Common.StronglyTypedIdentifiers Strongly-typed ID abstractions with EF Core and FastEndpoints support
SOFTURE.MessageBroker.Rabbit RabbitMQ message publishing and consuming via MassTransit

Getting Started

Prerequisites

Installation

Install the packages you need via NuGet:

dotnet add package SOFTURE.Common.Authentication
dotnet add package SOFTURE.Common.CQRS
dotnet add package SOFTURE.Common.Correlation
dotnet add package SOFTURE.Common.HealthCheck
dotnet add package SOFTURE.Common.Logging
dotnet add package SOFTURE.Common.Observability
dotnet add package SOFTURE.Common.Resilience
dotnet add package SOFTURE.Common.StronglyTypedIdentifiers
dotnet add package SOFTURE.MessageBroker.Rabbit

Usage

All modules integrate through IServiceCollection extension methods in your Program.cs or Startup.cs.

Authentication

Configures JWT Bearer authentication with symmetric key signing.

services.AddCommonAuthentication<AppSettings>();

Your settings class must implement IAuthenticationSettings and provide:

  • JwtSecret — symmetric signing key
  • ValidAudience — expected token audience
  • ValidIssuer — expected token issuer

CQRS

Registers MediatR pipeline behaviors for automatic command validation using FluentValidation.

services.AddMiddlewares();

Logging

Sets up Serilog with console output and Seq sink. Automatically registers a Seq health check.

services.AddCommonLogging<AppSettings>();

Your settings class must implement ISeqSettings and provide:

  • Url — Seq server endpoint
  • ApiKey — Seq API key

Observability

Configures OpenTelemetry with ASP.NET Core, HttpClient, EF Core, and Npgsql instrumentation. Exports metrics via Prometheus and traces via OTLP.

services.AddCommonObservability<AppSettings>();

// In the pipeline:
app.UseCommonOpenTelemetry();

Your settings class must implement IObservabilitySettings and provide:

  • Url — OTLP collector endpoint

Resilience

Registers a named resilience pipeline ("retry") with hedging, fallback, retry (exponential backoff with jitter), and circuit breaker strategies.

services.AddCommonResilience();

Usage in application code:

// Inject ResiliencePipelineProvider<string>
var pipeline = pipelineProvider.GetPipeline<HttpResponseMessage>("retry");
var response = await pipeline.ExecuteAsync(
    async token => await httpClient.GetAsync("https://api.example.com", token), ct);

Correlation

Registers a scoped correlation ID provider for request tracking across services.

services.AddCommonCorrelationProvider();

Health Checks

Registers custom health checks with a standardized /hc endpoint.

services.AddCommonHealthCheck<MyCustomHealthCheck>();

// In the pipeline:
app.MapCommonHealthChecks();

Health check classes must extend CheckBase and implement ICommonHealthCheck.

Message Broker (RabbitMQ)

Configures MassTransit with RabbitMQ for publishing and consuming messages. Includes in-memory outbox, correlation logging filters, and automatic consumer discovery.

Publisher:

services.AddCommonPublisher<AppSettings>();

Consumer:

services.AddCommonConsumers<AppSettings>(
    assembly: typeof(Program).Assembly,
    retryCount: 3,
    prefetchCount: 50,
    exponentialRetry: true);

Your settings class must implement IRabbitSettings and provide:

  • Url — RabbitMQ connection URL
  • Name — queue name (consumers only)

Consumer classes are discovered automatically — any non-abstract class implementing IConsumer<IMessage> or IConsumer<IBulkMessage> in the provided assembly will be registered.

Strongly Typed Identifiers

Provides type-safe entity identifiers with EF Core value converters and JSON serialization support for FastEndpoints.

EF Core configuration (in DbContext):

protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
{
    configurationBuilder.ConfigureStronglyIdentifiers<LanguageAssemblyMarker>();
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.ConfigureStronglyIdentifiers();
}

JSON serialization:

jsonOptions.RegisterStronglyTypedIdConverters<LanguageAssemblyMarker>();

Supports Guid, int, and long identifier value types.

Supported Frameworks

Framework Status
.NET 6.0 Supported
.NET 8.0 Supported
.NET 9.0 Supported
.NET 10.0 Supported

Contributing

Contributions are welcome! To get started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -m 'Add my feature')
  4. Push to the branch (git push origin feature/my-feature)
  5. Open a Pull Request

Building locally

cd API
dotnet restore
dotnet build

Releasing

Each package has its own GitHub Actions workflow. To release a new version:

  1. Create a GitHub Release with a version tag (e.g., 1.0.0)
  2. The corresponding workflow will pack and push the package to NuGet.org

License

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

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  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 (4)

Showing the top 4 NuGet packages that depend on SOFTURE.Common.HealthCheck:

Package Downloads
SOFTURE.Common.Logging

SOFTURE - Logging

SOFTURE.MessageBroker.Rabbit

SOFTURE - MessageBroker - Rabbit

SOFTURE.Typesense

SOFTURE - Typesense

SOFTURE.Fakturownia

SOFTURE - Fakturownia

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.1 0 4/7/2026
0.3.0 423 3/13/2026
0.2.4 964 11/20/2025
0.2.3 425 11/20/2025
0.2.2 418 11/20/2025
0.2.1 416 11/19/2025
0.2.0 411 11/19/2025
0.1.4 184 11/15/2025
0.1.3 708 6/27/2025
0.1.2 161 6/27/2025
0.1.1 309 11/26/2024
0.1.0 1,987 11/26/2024
0.0.10 248 9/21/2024
0.0.9 264 9/3/2024
0.0.8 201 8/13/2024
0.0.7 205 8/13/2024
0.0.6 234 8/13/2024
0.0.5 814 8/13/2024
0.0.4 2,373 8/12/2024
0.0.3 276 8/12/2024
Loading failed