Nedo.AspNet.Notifications.Abstractions
1.0.0
dotnet add package Nedo.AspNet.Notifications.Abstractions --version 1.0.0
NuGet\Install-Package Nedo.AspNet.Notifications.Abstractions -Version 1.0.0
<PackageReference Include="Nedo.AspNet.Notifications.Abstractions" Version="1.0.0" />
<PackageVersion Include="Nedo.AspNet.Notifications.Abstractions" Version="1.0.0" />
<PackageReference Include="Nedo.AspNet.Notifications.Abstractions" />
paket add Nedo.AspNet.Notifications.Abstractions --version 1.0.0
#r "nuget: Nedo.AspNet.Notifications.Abstractions, 1.0.0"
#:package Nedo.AspNet.Notifications.Abstractions@1.0.0
#addin nuget:?package=Nedo.AspNet.Notifications.Abstractions&version=1.0.0
#tool nuget:?package=Nedo.AspNet.Notifications.Abstractions&version=1.0.0
Nedo.AspNet.Notifications
Store-and-forward notifications for ASP.NET Core: a message is persisted first, fanned out into one delivery row per device, and sent by a background dispatcher that retries with backoff. Nothing is sent inside the request that raised it, so a slow or unreachable transport cannot fail a user's action, and a restart resumes instead of losing the queue.
| Package | Take it when |
|---|---|
Nedo.AspNet.Notifications.Abstractions |
your code RAISES notifications — contracts and models only, no transport, no database |
Nedo.AspNet.Notifications |
you host the queue: entities, dispatcher, retry policy, device-token store, templates |
Nedo.AspNet.Notifications.Firebase |
you deliver over Firebase Cloud Messaging |
Install
dotnet add package Nedo.AspNet.Notifications
dotnet add package Nedo.AspNet.Notifications.Firebase # transport
Wiring
The library never names your DbContext. Implement INotificationStore on the context that owns
the three tables and register it:
public class AppDbContext : DbContext, INotificationStore
{
public DbSet<NotificationMessage> NotificationMessages => Set<NotificationMessage>();
public DbSet<NotificationDelivery> NotificationDeliveries => Set<NotificationDelivery>();
public DbSet<UserDeviceToken> UserDeviceTokens => Set<UserDeviceToken>();
}
builder.Services.AddNedoNotifications<AppDbContext>(builder.Configuration);
builder.Services.AddFirebaseNotifications();
AddNedoNotifications reads its own Notifications configuration section — templates, whether the
dispatcher runs in this process, batch size and backoff. Migrations are yours: the entities map
through your context, so your application generates the DDL that matches your own naming.
Raising one
await dispatcher.QueueAsync(new NotificationRequest
{
Type = "invoice.issued", // stable machine key; your own vocabulary
UserId = user.Id,
Title = "Invoice issued",
Body = "Invoice #1042 is ready.",
Data = new Dictionary<string, string> { ["invoiceId"] = "1042" },
});
The dispatcher claims rows it is about to send, so several instances can run the queue without two of them sending the same delivery. A token the transport reports as dead is retired rather than retried; a transient failure backs off and is tried again.
Transports
INotificationSender is the seam. The Firebase package implements it over FirebaseAdmin and
classifies FCM's answers — an unregistered token is a dead device, a quota or server error is
transient. Credentials come from the host through IFirebaseCredentialSource, so this package never
decides where your service-account key lives.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. 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 was computed. 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. |
-
net9.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Nedo.AspNet.Notifications.Abstractions:
| Package | Downloads |
|---|---|
|
Nedo.AspNet.Notifications
Store-and-forward notification dispatch: persisted messages and per-recipient deliveries, a background dispatcher with retry and backoff, device-token registration, and template rendering. Bring your own transport by registering an INotificationSender (see Nedo.AspNet.Notifications.Firebase). |
|
|
Nedo.AspNet.Notifications.Firebase
Firebase Cloud Messaging transport for Nedo.AspNet.Notifications: an INotificationSender over FirebaseAdmin, error classification that separates a dead device token from a transient failure, and credential loading the host supplies. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 161 | 9/24/2026 |