WJb 0.117.2

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

⚡ WJb

If you can't explain why a job runs, you don't control your system.

Most background job systems eventually become:

Job
 ↓
Retry
 ↓
Pipeline
 ↓
Middleware
 ↓
???

Then somebody asks:

  • Why did this run?
  • Why was it retried?
  • Who scheduled the next step?
  • Where is that logic?

And nobody can answer in 30 seconds.


WJb

WJb is an explicit background job engine for .NET.

Job
 ↓
Action
 ↓
IActionResult
 ↓
JobCommand

Every step is visible.

Every transition is explicit.

Every workflow is defined in code.


Simple by Default

Most job systems expose job states.

WJb exposes execution flow.

Enqueue
 ↓
Dequeue
 ↓
Complete

The action decides what happens next.

The store records what happened.


Example

public sealed class SendEmailAction : JobAction<EmailInput>
{
    public override Task<IActionResult> ExecuteAsync(
        EmailInput input, CancellationToken ct)
    {
        return NextAsync<LogAction>(
            new LogInput
            {
                Message = $"Email sent to {input.To}"
            });
    }
}

public sealed class LogAction : JobAction<LogInput>
{
    public override Task<IActionResult> ExecuteAsync(
        LogInput input, CancellationToken ct)
    {
        Console.WriteLine(input.Message);

        return CompleteAsync();
    }
}

Action Results

return CompleteAsync();

Complete the current job.

return CompleteAsync(customer);

Complete the current job and save a result.

return NextAsync<SendEmailAction>(
    new EmailInput
    {
        To = "john@example.com"
    });

Schedule the next workflow step.

Failures are represented by exceptions:

throw new InvalidOperationException(
    "SMTP server unavailable.");

Mental Model

Action      = Business Logic

Results     = Outcome

JobCommand  = Next Step

Executor    = Runner

Store       = Persistence

That's it.


Packages

Package Description
WJb Explicit background job engine
WJb.UI.Blazor Monitoring and administration UI
WJb.Sql SQL Server storage provider (commercial edition)

Use WJb If

You want to answer all of these immediately:

  • Why did this job run?
  • What did it do?
  • What will run next?
  • Why was it retried?
  • When did it start?
  • When did it finish?

Support

📧 ukrguru@gmail.com

https://ko-fi.com/ukrguru


Background jobs should be explicit.

If a workflow exists, you should be able to read it.

Product Compatible and additional computed target framework versions.
.NET 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.
  • net10.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on WJb:

Package Downloads
WJb.UI.Blazor

Free Blazor monitoring and administration UI for WJb. Includes jobs monitoring, actions management, services configuration, payload inspection and action testing.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.117.2 36 8/21/2026
0.117.1 60 8/20/2026
0.117.0 55 8/18/2026
Loading failed

Simplified action pipeline architecture.
           Added IAction<TInput> for strongly typed action execution.
           Introduced CompleteResult and NextResult workflow results.
           Added JobCommand and JobCommand<TAction> with payload support.
           Added ActionNameAttribute for custom action names.
           Added JobCommands and Results factory helpers.
           Improved test coverage across action, command, result, and attribute APIs.