Pulse.NET 0.0.4-alpha

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

// Install Pulse.NET as a Cake Tool
#tool nuget:?package=Pulse.NET&version=0.0.4-alpha&prerelease

Pulse.NET

🌏 Overview

Pulse.NET is a .NET library providing enhancements to the workflow management in your .NET applications. We introduce multiple debouncer and throttler implementations, both for different use cases and action types. The library is implemented with thread safety, while also exposing interfaces with great ease to use.

To be more specific, this library helps you improve the performance of your application, by limiting invoking frequency of your workflow when not necessary, while maintaining sufficient reliability thanks to our parameter-handling strategy.

⚙️ Requirements

This library currently support following frameworks.

  • .NET Framework 4.5+
  • .NET Standard 1.2+ (with NETStandard.Library)
  • .NET Standard 2.0+
  • .NET 6.0+

🛠️ Usage

Use NuGet Package Manager to install this library to your project.

Install-Package Pulse.NET

After adding current library as a reference to your project, you are able to use the utilities we provide. Following instructions may be helpful when you use the library.

0. Do I need it?

As we have claimed in the first section of this documentation, this library is created for workflow management tasks. If you require instant invocation of actions in your project, please note that this toolset might not be for you.

1. Debouncer vs. Throttler

Typically, when a series of repeated actions are taken continuously and only the last invocation is valid, a debouncer is recommended. However, if you need to reveal intermediate effects of the actions, you can then choose to create a throttler.

2. Parameters Handling

There are 3 types of parameter strategy in this library.

  • No parameter - The action to invoke contains no parameters, and by sending invoking signals to the debouncer/throttler, no parameters are attached.
  • Latest parameter - Before the action is actually invoked, for example, we're in the debouncing/throttling period, every parameter brought by your invocation signal sent to the debouncer/throttler will replace the previous ones. Therefore, when the action is finally invoked, the parameters it invokes on are always the latest ones.
  • Cumulative parameter - Before we invoke the action, we cumulate all input parameters into a batch and invoke the action on the batch. It is up to you to decide the type of the single-invocation parameter and the parameter batch, so if two objects of a specific type can be merged into one, you can more easily create such a debouncer/throttler to apply cumulated effects of multiple invocations while keeping perfect performance.

3. Synchronous vs. Asynchronous

Both are supported by our library. You can just simply choose the type you need for the task. For your information, synchronous functions are called actions and asynchronous ones are called tasks in our definition.

👋 Contribution

Feel free to contribute to this library by creating an issue or a pull request on GitHub.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  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. 
.NET Core netcoreapp1.0 was computed.  netcoreapp1.1 was computed.  netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard1.2 is compatible.  netstandard1.3 was computed.  netstandard1.4 was computed.  netstandard1.5 was computed.  netstandard1.6 was computed.  netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen30 was computed.  tizen40 was computed.  tizen60 was computed. 
Universal Windows Platform uap was computed.  uap10.0 was computed. 
Windows Phone wpa81 was computed. 
Windows Store netcore451 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.5

    • No dependencies.
  • .NETStandard 1.2

  • .NETStandard 2.0

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.0.4-alpha 182 11/4/2023
0.0.3-alpha 73 11/4/2023
0.0.2-alpha 65 10/23/2023
0.0.1-alpha 71 10/21/2023