Fluxera.Extensions.Hosting.Abstractions
8.2.3
Prefix Reserved
dotnet add package Fluxera.Extensions.Hosting.Abstractions --version 8.2.3
NuGet\Install-Package Fluxera.Extensions.Hosting.Abstractions -Version 8.2.3
<PackageReference Include="Fluxera.Extensions.Hosting.Abstractions" Version="8.2.3" />
paket add Fluxera.Extensions.Hosting.Abstractions --version 8.2.3
#r "nuget: Fluxera.Extensions.Hosting.Abstractions, 8.2.3"
// Install Fluxera.Extensions.Hosting.Abstractions as a Cake Addin #addin nuget:?package=Fluxera.Extensions.Hosting.Abstractions&version=8.2.3 // Install Fluxera.Extensions.Hosting.Abstractions as a Cake Tool #tool nuget:?package=Fluxera.Extensions.Hosting.Abstractions&version=8.2.3
Fluxera.Extensions.Hosting
A library that extends the Microsoft.Extensions.Hosting library with modular host implementations for various application platforms.
The library uses the generic host implementation and build a modular structure upon it. It is possible to split your application into login modules that can be shared between different types of applications.
Available Hosts
The modular host is available for the following applicattion types:
- ASP.NET Core
- Blazor WebAssembly
- Console / Windows Service
- WPF
- MAUI
Usage
Every application needs a host and a startup module class. The application is composed of modules that define dependencies on other modules and optional modules that are loaded as plugins.
public class ConsoleApplicationModule : ConfigureServicesModule
{
public override void ConfigureServices(IServiceConfigurationContext context)
{
context.Services.AddHostedService<ConsoleHostedService>();
context.Services.AddSingleton<IWeatherService, WeatherService>();
context.Services.AddOptions<WeatherSettings>().Bind(context.Configuration.GetSection("Weather"));
}
}
This startup module just configures some services and regiosters them in the service collection. The service confiuration pipelineis split up into three steps: pre-configure-, configure- and post-configure-services. Each methos is executed in every module, before moving to the next method.
If you need to configure the application after the creation of the service provider you can just
use the base class ConfigureApplicationModule
which provides a similar three step
pipeline for initializing the application: pre-configure, configure and post-configure. Additionally
this base class provides a methos that is executed on every module when the application shuts down.
In addtition to the two base classes ConfigureServicesModule
and ConfigureApplicationModule
you are free to use one of the module interfaces to meet you configuration needs.
- IModule
- IConfigureServicesModule
- IPreConfigureServices
- IConfigureServices
- IPostConfigureServices
- IConfigureApplicationModule
- IPreConfigureApplication
- IConfigureApplication
- IPostConfigureApplication
- IShutdownApplicationModule
- IConfigureServicesModule
You can even just implement the IModule
interface on your module class, if you don't need any
configuration and application initialization.
public class ConsoleApplicationHost : ConsoleApplicationHost<ConsoleApplicationModule>
{
}
The simplest application host class just inherits from one of the available base classes for the application type you are running.
Each base class provides several methods you can overide to configure additional plugin modules, or a custom logger to use while bootstrapping the host. Please refer to the samples for more information.
public static class Program
{
public static async Task Main(string[] args)
{
await ApplicationHost.RunAsync<ConsoleApplicationHost>(args);
Console.WriteLine();
Console.WriteLine("Press any key to quit...");
Console.ReadKey(true);
}
}
All what's left to do is to run the host using one of the available static entry-points.
Product | Versions 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 is compatible. 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. |
-
net6.0
- Fluxera.Extensions.DependencyInjection.Abstractions (>= 8.3.3)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.1)
-
net7.0
- Fluxera.Extensions.DependencyInjection.Abstractions (>= 8.3.3)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.1)
-
net8.0
- Fluxera.Extensions.DependencyInjection.Abstractions (>= 8.3.3)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Fluxera.Extensions.Hosting.Abstractions:
Package | Downloads |
---|---|
Fluxera.Extensions.Hosting
A modular application host. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
8.2.3 | 243 | 7/9/2024 |
8.2.2 | 1,731 | 6/15/2024 |
8.2.1 | 937 | 6/2/2024 |
8.2.0 | 990 | 5/26/2024 |
8.1.3 | 2,501 | 4/26/2024 |
8.1.2 | 228 | 4/26/2024 |
8.1.1 | 233 | 4/26/2024 |
8.1.0 | 899 | 4/24/2024 |
8.0.7 | 5,654 | 4/18/2024 |
8.0.6 | 1,098 | 4/13/2024 |
8.0.5 | 239 | 4/13/2024 |
8.0.4 | 1,105 | 3/19/2024 |
8.0.3 | 3,259 | 2/22/2024 |
8.0.2 | 7,701 | 1/4/2024 |
8.0.1 | 1,162 | 11/23/2023 |
8.0.0 | 1,535 | 11/15/2023 |
7.1.9 | 1,173 | 7/23/2023 |
7.1.8 | 263 | 7/20/2023 |
7.1.7 | 998 | 6/21/2023 |
7.1.6 | 2,273 | 4/25/2023 |
7.1.5 | 2,848 | 4/24/2023 |
7.1.4 | 1,203 | 4/13/2023 |
7.1.3 | 1,381 | 3/16/2023 |
7.1.2 | 2,110 | 2/28/2023 |
7.1.1 | 1,742 | 1/26/2023 |
7.1.0 | 2,198 | 1/18/2023 |
7.0.6 | 4,110 | 12/22/2022 |
7.0.5 | 432 | 12/13/2022 |
7.0.4 | 3,006 | 12/9/2022 |
7.0.3 | 486 | 11/24/2022 |
7.0.2 | 522 | 11/15/2022 |
7.0.1 | 509 | 11/12/2022 |
7.0.0 | 495 | 11/9/2022 |
6.2.2 | 6,488 | 10/12/2022 |
6.2.1 | 9,433 | 10/9/2022 |
6.2.0 | 5,644 | 10/1/2022 |
6.1.1 | 5,651 | 9/20/2022 |
6.1.0 | 5,854 | 9/16/2022 |
6.0.17 | 5,488 | 9/15/2022 |
6.0.14 | 5,799 | 7/30/2022 |
6.0.13 | 5,658 | 6/30/2022 |
6.0.12 | 5,634 | 6/15/2022 |
6.0.11 | 5,417 | 6/7/2022 |
6.0.10 | 12,369 | 5/28/2022 |
6.0.9 | 18,984 | 5/10/2022 |
6.0.8 | 5,126 | 5/5/2022 |
6.0.7 | 1,726 | 4/20/2022 |
6.0.6 | 1,706 | 4/20/2022 |
6.0.5 | 1,695 | 4/11/2022 |
6.0.4 | 1,675 | 4/10/2022 |
6.0.3 | 1,699 | 3/24/2022 |
6.0.2 | 1,691 | 2/17/2022 |
6.0.1 | 860 | 12/23/2021 |