EventHighway.Abstractions
2.2.0
dotnet add package EventHighway.Abstractions --version 2.2.0
NuGet\Install-Package EventHighway.Abstractions -Version 2.2.0
<PackageReference Include="EventHighway.Abstractions" Version="2.2.0" />
<PackageVersion Include="EventHighway.Abstractions" Version="2.2.0" />
<PackageReference Include="EventHighway.Abstractions" />
paket add EventHighway.Abstractions --version 2.2.0
#r "nuget: EventHighway.Abstractions, 2.2.0"
#:package EventHighway.Abstractions@2.2.0
#addin nuget:?package=EventHighway.Abstractions&version=2.2.0
#tool nuget:?package=EventHighway.Abstractions&version=2.2.0

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,NameandHandleAsync(content, cancellationToken)returning anEventHandlerResult).EventHandlerResult— the outcome of handling an event (IsSuccess,ResponseCode,ResponseMessageandResponse).- Exception marker interfaces —
IEventHandlerValidationException,IEventHandlerDependencyExceptionandIEventHandlerServiceException.
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:
- DelegateEventHandlerValidationException.cs
- DelegateEventHandlerDependencyException.cs
- DelegateEventHandlerServiceException.cs
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.
3 - Related Packages & Projects
| 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 | Versions 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. |
-
.NETStandard 2.0
- System.Threading.Tasks.Extensions (>= 4.6.3)
-
net10.0
- Microsoft.EntityFrameworkCore (>= 10.0.9)
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.