.NET 𝗦𝗲𝗿𝘃𝗲𝗿 𝗦𝗶𝗱𝗲 𝗘𝘃𝗲𝗻𝘁𝘀 𝗰𝗼𝗻 𝗠𝗼𝗻𝗴𝗼𝗗𝗕 𝗖𝗵𝗮𝗻𝗴𝗲 𝗦𝘁𝗿𝗲𝗮𝗺𝘀

Desideri aggiornamenti in tempo reale in ASP.NET Core. Potresti pensare subito ai WebSocket.

Esiste un modo più semplice per dashboard e feed. Puoi utilizzare MongoDB Change Streams e i Server-Sent Events (SSE).

Questa configurazione fornisce uno streaming unidirezionale dal server al client con pochissimo codice.

Come funziona:

  • MongoDB Change Streams rilevano istantaneamente le modifiche al database.
  • SSE invia tali modifiche al browser tramite una singola connessione HTTP.
  • Eviti il polling costante, risparmiando risorse del server.

SSE è un'API nativa del browser. Funziona attraverso una risposta HTTP a lunga durata e supporta le riconnessioni automatiche. È perfetto per:

  • Timeline in tempo reale
  • Notifiche
  • Feed di attività
  • Dashboard di amministrazione

Nelle ASP.NET Core Minimal APIs, puoi implementarlo utilizzando TypedResults.ServerSentEvents.

Il flusso del codice segue questi passaggi:

  1. La tua app apre un cursore di change stream in MongoDB.
  2. MongoDB emette eventi quando i dati cambiano.
  3. La tua app mappa queste modifiche verso il client.

Un grande vantaggio è la possibilità di riprendere gli stream. MongoDB fornisce un resume token per ogni modifica. Puoi passare questo token tramite l'header Last-Event-ID. Quando un browser si riconnette, invia l'ultimo ID ricevuto. La tua app legge questo ID e dice a MongoDB di ripartire esattamente da dove si era interrotto.

Quando usare SSE rispetto a SignalR?

Usa SSE se:

  • Hai bisogno solo di aggiornamenti dal server al client.
  • Vuoi una configurazione leggera e basata su testo.
  • Vuoi utilizzare le API native del browser.

Usa SignalR se:

  • Hai bisogno di una comunicazione bidirezionale.
  • Hai bisogno di funzionalità complesse come gruppi o hub.
  • Hai bisogno della negoziazione automatica del trasporto (WebSockets, Long Polling).

Inizia con SSE per feed live semplici. Passa a SignalR solo quando la tua app richiede un'interazione più ricca.

Nota: MongoDB Change Streams richiedono un replica set o un cluster sharded. Non funzionano su un server standalone.

Source: https://dev.to/mongodb/net-server-side-events-with-mongodb-change-streams-5dfb

Optional learning community: https://t.me/GyaanSetuAi