KhaosCode.AppLifecycle
1.0.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package KhaosCode.AppLifecycle --version 1.0.0
NuGet\Install-Package KhaosCode.AppLifecycle -Version 1.0.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="KhaosCode.AppLifecycle" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="KhaosCode.AppLifecycle" Version="1.0.0" />
<PackageReference Include="KhaosCode.AppLifecycle" />
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 KhaosCode.AppLifecycle --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: KhaosCode.AppLifecycle, 1.0.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 KhaosCode.AppLifecycle@1.0.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=KhaosCode.AppLifecycle&version=1.0.0
#tool nuget:?package=KhaosCode.AppLifecycle&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Khaos.AppLifecycle
Opinionated lifecycle manager for ASP.NET Core and generic host applications.
Features
- Startup and shutdown flows that wrap the host lifecycle
- Outcome-driven flow engine shared by startup, shutdown, and scheduled flows
- Lightweight in-process scheduler with conditional flows and optional overlap guards
- Async lifecycle events for visibility and telemetry
- NuGet content files that scaffold
AppLifecycle/*folders in consuming projects
Getting Started
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddApplicationLifecycleManager(options =>
{
options.Startup.Flow("DefaultStartup")
.BeginWith<WarmupServicesStep>()
.EndFlow();
options.Shutdown.Flow("DefaultShutdown")
.BeginWith<FlushMetricsStep>()
.EndFlow();
options.Scheduled.Flow("HealthCheck")
.OnSchedule<EvergreenTrigger>()
.NoOverlap()
.BeginWith<HealthProbeStep>()
.EndFlow();
});
builder.Services.AddTransient<WarmupServicesStep>();
builder.Services.AddTransient<FlushMetricsStep>();
builder.Services.AddTransient<HealthProbeStep>();
builder.Services.AddTransient<EvergreenTrigger>();
var app = builder.Build();
app.UseApplicationLifecycleManager();
app.Run();
Implement steps by inheriting IFlowStep<TContext> (StartupContext, ShutdownContext, or ScheduledContext). Implement triggers by inheriting IScheduleTrigger and returning the desired delay between runs.
Repository Layout
src/Khaos.AppLifecycle– library implementationtests/Khaos.AppLifecycle.Tests– xUnit test suite for engine, DSL, scheduler, and integration scenariossamples/Khaos.AppLifecycle.SampleWebApp– minimal ASP.NET Core app showcasing startup/shutdown/scheduled flowsdocs/Specification.md– high-level design document
Documentation
- Specification – product goals, architecture, and flow diagrams
- Usage Guide – walkthrough for configuring flows, triggers, and events
- Development Guide – conventions, tooling, and local workflows
- Build & Release – build, test, coverage, packaging, and publishing steps
- Versioning Guide – semantic versioning rules and MinVer tag strategy
License
MIT
| Product | Versions 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.
-
net8.0
- KhaosCode.Time (>= 1.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
-
net9.0
- KhaosCode.Time (>= 1.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.