Tapline 0.2.0
dotnet add package Tapline --version 0.2.0
NuGet\Install-Package Tapline -Version 0.2.0
<PackageReference Include="Tapline" Version="0.2.0" />
<PackageVersion Include="Tapline" Version="0.2.0" />
<PackageReference Include="Tapline" />
paket add Tapline --version 0.2.0
#r "nuget: Tapline, 0.2.0"
#:package Tapline@0.2.0
#addin nuget:?package=Tapline&version=0.2.0
#tool nuget:?package=Tapline&version=0.2.0
Tapline
Tapline's router hosted in ASP.NET Core: real-time, last-mile fan-out of shared state and ordered messages to many clients, prioritised, conflated and ack-clocked, over the transport you already have.
- Blazor Server: Tapline over the circuit's own SignalR connection: no second transport, Blazor's own messages never reordered, frames interleaved in priority lanes, each client paced from its acknowledgements.
- MagicOnion (gRPC), the router's side: a session's outlet held across its calls, frames written one at a time as the call takes them.
- Data providers in a process of their own, reached by routers over MagicOnion: their topics, step 1s, notices, health, heartbeats, drains and mailboxes.
- Sign-in by a realm's authentication service of modules (passkeys by WebAuthn, passthrough, tickets, your own), each handing a proven user to your backend, which says who they are.
- LiveGrid: a virtual data grid for live data in Blazor. The server keeps each reader's window, the rows in view and either side; Tapline carries it to the page as binary rows, only what changed, conflated to the reader's link; and the page draws the rows itself (
tapline-grid.js). Its source can be an append-only database and the stream of its changes, merged (StoreAndStream). - Alerts: rules over any source, by shape: each shape evaluated once and published as one value, each page taking it no oftener than its rule's throttle (
tapline-alerts.js). - Hosting: the router's identity, heartbeats and health; the out-of-band fetch and module endpoints; the ops port and the router's viewer; and the browser client,
tapline.js, served at_content/Tapline/.
builder.Services.AddRazorComponents().AddInteractiveServerComponents();
builder.Services.AddBlazorRealtime(); // the circuit transport, and the router it serves
// ...
app.MapBlazorRealtime(); // the out-of-band and module endpoints
The core and the .NET client are Tapline.Client, which this brings in. WebAssembly folds and password sign-in are Tapline.Wasm. LiveGrid over a database through ChalkQL is Tapline.Grid.ChalkQL.
Documentation
License
Elastic License 2.0 (ELv2), included as LICENSE.txt.
The source code is available under the same license at github.com/markhammond/tapline.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- MagicOnion.Server (>= 7.11.0)
- Tapline.Client (>= 0.2.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Tapline:
| Package | Downloads |
|---|---|
|
Tapline.Wasm
Tapline's WebAssembly, run by Wasmtime: a data provider's folds, finalizers and stale-data functions as sandboxed modules, fuel- and memory-bounded on the router; and password sign-in by OPAQUE (RFC 9807), a module of Tapline's authentication in which the password never leaves the client — on the server, and in the browser (opaque.mjs, tapline-opaque.mjs). |
|
|
Tapline.Grid.ChalkQL
LiveGrid bolted onto a database and its stream through ChalkQL: the store's pages pushed down as SQL, and each view's filter, stated once, kept as ChalkQL standing views over the rows the stream sent that the database hasn't reached, so a row passes as the database would pass it. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Initial public release.