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

Unahitaji sasisho za wakati halisi (real-time updates) katika ASP.NET Core. Unaweza kufikiria kutumia WebSockets kwanza.

Kuna njia rahisi zaidi kwa ajili ya dashibodi (dashboards) na virudisho (feeds). Unaweza kutumia MongoDB Change Streams na Server-Sent Events (SSE).

Mpangilio huu unatoa mtiririko wa upande mmoja (one-way streaming) kutoka kwenye seva yako kwenda kwa mteja (client) kwa kutumia kodi kidogo sana.

Jinsi inavyofanya kazi:

  • MongoDB Change Streams hugundua mabadiliko ya hifadhidata papo hapo.
  • SSE husukuma mabadiliko hayo kwenye kivinjari (browser) kupitia muunganisho mmoja wa HTTP.
  • Unaepuka kuulizia mara kwa mara (constant polling), jambo ambalo huokoa rasilimali za seva.

SSE ni API ya asili ya kivinjari. Inafanya kazi kupitia jibu la HTTP la muda mrefu (long-lived HTTP response) na inasaidia kuunganishwa upya kiotomatiki. Ni bora kwa:

  • Nyakati za moja kwa moja (Live timelines)
  • Arifa (Notifications)
  • Virudisho vya shughuli (Activity feeds)
  • Dashibodi za admin (Admin dashboards)

Katika ASP.NET Core Minimal APIs, unaweza kutekeleza hili ukitumia TypedResults.ServerSentEvents.

Mtiririko wa kodi unafuata hatua hizi:

  1. Programu yako inafungua "change stream cursor" katika MongoDB.
  2. MongoDB hutoa matukio (events) wakati data inapobadilika.
  3. Programu yako huunganisha mabadiliko haya kwa mteja.

Faida moja kubwa ni uwezo wa kuendeleza mtiririko (resume streams). MongoDB hutoa "resume token" kwa kila mabadiliko. Unaweza kupitisha token hii kupitia kichwa cha Last-Event-ID. Kivinjari kinapojiunganisha upya, kinatuma ID ya mwisho iliyoiona. Programu yako inasoma ID hii na kuiambia MongoDB ianze mahali ilipoishia hasa.

Unapaswa kutumia SSE badala ya SignalR lini?

Tumia SSE ikiwa:

  • Unahitaji tu sasisho kutoka kwenye seva kwenda kwa mteja.
  • Unataka mpangilio mwepesi unaotegemea maandishi (text-based).
  • Unataka kutumia API za asili za kivinjari.

Tumia SignalR ikiwa:

  • Unahitaji mawasiliano ya pande mbili (bi-directional).
  • Unahitaji vipengele tata kama vikundi (groups) au vituo (hubs).
  • Unahitaji mazungumzo ya kiotomatiki ya usafirishaji (automatic transport negotiation) kama WebSockets au Long Polling.

Anza na SSE kwa ajili ya virudisho rahisi vya moja kwa moja. Hamia kwenye SignalR pale tu programu yako inapohitaji mwingiliano (interaction) wa kina zaidi.

Kumbuka: MongoDB Change Streams zinahitaji "replica set" au "sharded cluster". Hazifanyi kazi kwenye seva inayojitegemea (standalone server).

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

Jumuiya ya hiari ya kujifunza: https://t.me/GyaanSetuAi