EventHighway.Abstractions 2.2.0

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

EventHighway

BUILD Nuget Nuget The Standard - COMPLIANT The Standard The Standard Community

0 - EventHighway.Abstractions

EventHighway.Abstractions is the contract library for EventHighway — a Standard-Compliant .NET library for event-driven programming. This package contains only interfaces and lightweight models, so extension points (event handlers and storage providers) can be built against a small, stable surface without referencing the full engine.

1 - How It Works

The package provides two abstraction areas:

1.1 - Event Handler Abstractions

Everything needed to build an EventHighway-compatible event handler:

  • IEventHandler — the contract EventHighway invokes to deliver an event to your code (Id, Name and HandleAsync(content, cancellationToken) returning an EventHandlerResult).
  • EventHandlerResult — the outcome of handling an event (IsSuccess, ResponseCode, ResponseMessage and Response).
  • Exception marker interfaces — IEventHandlerValidationException, IEventHandlerDependencyException and IEventHandlerServiceException.

You should not normally need to implement IEventHandler yourself. A ready-made implementation, DelegateEventHandler, ships in the EventHighway.EventHandlers package (NuGet). The only thing left to do is supply your own delegate — either directly in your domain, or exposed from a packaged delegate client library (see the EventHighway.EventHandlers.Delegates.JoesRestApi sample for the packaged pattern).

If you do implement your own IEventHandler, make sure the exceptions it throws implement the matching marker interface:

Marker interface Throw when
IEventHandlerValidationException The event content or handler state is invalid
IEventHandlerDependencyException An external dependency (downstream API, database, etc.) failed
IEventHandlerServiceException An unexpected fault occurred inside the handler

EventHighway uses these markers to categorize your exceptions correctly in its own exception handling and delivery records — exceptions that do not implement one of them are lumped together as service exceptions.

For example, a validation exception for your own handler would look like this:

// YourDelegateEventHandlerValidationException.cs
using EventHighway.Abstractions.EventHandlers.Exceptions;

public class YourDelegateEventHandlerValidationException
    : Exception, IEventHandlerValidationException
{
    public YourDelegateEventHandlerValidationException(string message, Exception innerException)
        : base(message, innerException)
    { }
}

For reference, these are the exceptions DelegateEventHandler itself exposes — one per marker interface:

1.2 - Storage Provider Abstractions

IStorageBrokerProvider is the contract for plugging a database engine into EventHighway:

public interface IStorageBrokerProvider
{
    void Configure(DbContextOptionsBuilder optionsBuilder);
    void ConfigureModel(ModelBuilder modelBuilder);
}

A provider configures the EF Core connection (Configure) and applies any engine-specific model conventions (ConfigureModel). Two providers ship today, and you can implement your own for any other EF Core-supported engine:

Provider Project NuGet
SQL Server EventHighway.SqlServer EventHighway.SqlServer
PostgreSQL EventHighway.PostgreSql EventHighway.PostgreSql

2 - Installation

dotnet add package EventHighway.Abstractions

You only need a direct reference to this package when building your own IEventHandler or IStorageBrokerProvider implementation — the EventHighway engine and its provider packages reference it transitively.

Package Description
EventHighway The core event-driven engine (NuGet)
EventHighway.EventHandlers Ready-made IEventHandler implementations, including DelegateEventHandler (NuGet)
EventHighway.SqlServer SQL Server storage provider (NuGet)
EventHighway.PostgreSql PostgreSQL storage provider (NuGet)

4 - Standard-Compliance

This library was built according to The Standard. The library follows engineering principles, patterns and tooling as recommended by The Standard.

This library is also a community effort which involved many nights of pair-programming, test-driven development and in-depth exploration research and design discussions.


5 - Standard-Promise

The most important fulfillment aspect in a Standard compliant system is aimed towards contributing to people, its evolution, and principles. An organization that systematically honors an environment of learning, training, and sharing knowledge is an organization that learns from the past, makes calculated risks for the future, and brings everyone within it up to speed on the current state of things as honestly, rapidly, and efficiently as possible.

We believe that everyone has the right to privacy, and will never do anything that could violate that right. We are committed to writing ethical and responsible software, and will always strive to use our skills, coding, and systems for the good. We believe that these beliefs will help to ensure that our software(s) are safe and secure and that it will never be used to harm or collect personal data for malicious purposes.

The Standard Community as a promise to you is in upholding these values.


6 - Important Notice and Acknowledgements

A special thanks to all the community members, and the following dedicated engineers for their hard work and dedication to this project.

Mr. Hassan Habib

Mr. Christo du Toit

Mr.Ahmad Salim

Mr.Greg Hays

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  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.  net9.0 was computed.  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 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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework 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 tizen40 was computed.  tizen60 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.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on EventHighway.Abstractions:

Package Downloads
EventHighway

Standard-Compliant Open-Source Pub/Sub .NET library for managing events in distributed systems.

EventHighway.EventHandlers

Standard-compliant open-source .NET library containing EventHandler implementations for distributed systems, including delegate-based handlers.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.2.0 46 7/18/2026

V2 contracts for extending EventHighway:
* IEventHandler — implement to receive events in-process by HandlerId, without an HTTP endpoint.
* Storage provider contract — implement to back EventHighway V2 with any persistence technology; SQL Server and PostgreSQL ship today.