yapsi 2.1.2

dotnet add package yapsi --version 2.1.2
NuGet\Install-Package yapsi -Version 2.1.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="yapsi" Version="2.1.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add yapsi --version 2.1.2
#r "nuget: yapsi, 2.1.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.
// Install yapsi as a Cake Addin
#addin nuget:?package=yapsi&version=2.1.2

// Install yapsi as a Cake Tool
#tool nuget:?package=yapsi&version=2.1.2


yet another pub-sub implementation

Provides simple interfaces for publishing/subscribing to generic data "packets".


using yapsi.Default;

// create a pipeline somewhere and make it available (through dependency injection for example)
// the generic parameter is the type of data being transported by the pipeline
var pipeline = new Pipeline<string>();

// ...somewhere you want to provide data from
var contract = pipeline.Bind();

// ...somewhere else where you want to consume the data
var subscription = pipeline.Subscribe();
subscription.Published += (sender, message) => Console.WriteLine(message);

// publish some data
contract.Publish("Hello from the other side");
contract.Publish("Hello again");

Run the yapsi.Example project to see how it works.

You can add as many contracts and subscriptions you want, which means you could create a factory for injecting subscriptions into your services:


    // ...
    .ConfigureServices(services =>
        // ...

        services.AddTransient<IContract<string>>((sp) =>
            var pipeline = sp.GetRequiredService<Pipeline<string>>();

            return pipeline.Bind();

        services.AddTransient<ISubscription<string>>((sp) =>
            var pipeline = sp.GetRequiredService<Pipeline<string>>();

            return pipeline.Subscribe();

    // ...


    public class Worker : BackgroundService
        private readonly ILogger<Worker> _logger;
        private readonly ISubscription<string> _subscription;
        private readonly IContract<string> _contract;

        public Worker(ILogger<Worker> logger, ISubscription<string> subscription, IContract<string> contract)
            _logger = logger;
            _subscription = subscription;
            _contract = contract;

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
            // ideally, you would have some service supplying data and another service consuming the data, but
            // this example shows how the dependency injection works
            _subscription.Published += (sender, data) =>
                _logger.LogInformation("Received data from pipeline: {data}", data);

            while (!stoppingToken.IsCancellationRequested)
                _contract.Publish($"Worker running at: {DateTimeOffset.Now}");

                await Task.Delay(1000, stoppingToken);

Run the yapsi.HostedExample project to see this in action.

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

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on yapsi:

Package Downloads

Dependency injection extensions to ease the development with yapsi.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.1.2 331 12/27/2021
2.1.1 320 10/16/2021
2.1.0 283 10/16/2021
2.0.2 299 10/12/2021
2.0.1 317 10/12/2021
2.0.0 432 10/12/2021
1.0.0 337 10/12/2021