MongoDB Change Streams सह .NET 𝗦𝗲𝗿𝘃𝗲𝗿 𝗦𝗶𝗱𝗲 𝗘𝘃𝗲𝗻𝘁𝘀

तुम्हाला ASP.NET Core मध्ये रिअल-टाइम अपडेट्स हवे आहेत. तुमच्या मनात सर्वात आधी WebSockets चा विचार येऊ शकतो.

डॅशबोर्ड आणि फीड्ससाठी एक सोपी पद्धत आहे. तुम्ही MongoDB Change Streams आणि Server-Sent Events (SSE) वापरू शकता.

ही सेटअप अत्यंत कमी कोड वापरून तुमच्या सर्व्हरकडून क्लायंटकडे वन-वे (one-way) स्ट्रीमिंग प्रदान करते.

हे कसे कार्य करते:

  • MongoDB Change Streams डेटाबेस मधील बदल त्वरित शोधतात.
  • SSE त्या बदलांना एका सिंगल HTTP कनेक्शनद्वारे ब्राउझरकडे पाठवते (push करते).
  • यामुळे तुम्हाला सतत पोलिंग (polling) करण्याची गरज पडत नाही, ज्यामुळे सर्व्हर रिसोर्सेसची बचत होते.

SSE हे एक नेटिव्ह ब्राउझर API आहे. ते लाँग-लिव्हड (long-lived) HTTP रिस्पॉन्सद्वारे कार्य करते आणि ऑटोमॅटिक रिकनेक्टला सपोर्ट करते. हे खालील गोष्टींसाठी उत्तम आहे:

  • लाईव्ह टाइमलाईन्स (Live timelines)
  • नोटिफिकेशन्स (Notifications)
  • ॲक्टिव्हिटी फीड्स (Activity feeds)
  • ॲडमिन डॅशबोर्ड्स (Admin dashboards)

ASP.NET Core Minimal APIs मध्ये, तुम्ही TypedResults.ServerSentEvents वापरून याची अंमलबजावणी करू शकता.

कोड फ्लो खालील पायऱ्यांचे अनुसरण करतो:

  1. तुमचे ॲप MongoDB मध्ये चेंज स्ट्रीम कर्सर (change stream cursor) उघडते.
  2. जेव्हा डेटा बदलतो, तेव्हा MongoDB इव्हेंट्स (events) उत्सर्जित करते.
  3. तुमचे ॲप हे बदल क्लायंटला मॅप करते.

याचा एक मोठा फायदा म्हणजे स्ट्रीम्स पुन्हा सुरू करण्याची (resume) क्षमता. MongoDB प्रत्येक बदलासाठी एक 'resume token' प्रदान करते. तुम्ही हा टोकन Last-Event-ID हेडरद्वारे पास करू शकता. जेव्हा ब्राउझर पुन्हा कनेक्ट होतो, तेव्हा तो शेवटचा पाहिलेला ID पाठवतो. तुमचे ॲप हा ID वाचते आणि MongoDB ला नेमके जिथून थांबले होते तिथूनच सुरू करण्यास सांगते.

SSE विरुद्ध SignalR, तुम्ही कधी वापरावे?

SSE वापरा जर:

  • तुम्हाला फक्त सर्व्हर-टू-क्लायंट अपडेट्सची गरज असेल.
  • तुम्हाला हलकी (lightweight) आणि टेक्स्ट-आधारित सेटअप हवी असेल.
  • तुम्हाला नेटिव्ह ब्राउझर APIs वापरायचे असतील.

SignalR वापरा जर:

  • तुम्हाला टू-वे (bi-directional) कम्युनिकेशनची गरज असेल.
  • तुम्हाला ग्रुप्स किंवा हब्ससारखी गुंतागुंतीची वैशिष्ट्ये हवी असतील.
  • तुम्हाला ऑटोमॅटिक ट्रान्सपोर्ट निगोशिएशन (WebSockets, Long Polling) हवे असेल.

साध्या लाईव्ह फीड्ससाठी SSE पासून सुरुवात करा. जेव्हा तुमच्या ॲपला अधिक समृद्ध (richer) इंटरअॅक्शनची आवश्यकता असेल, तेव्हाच SignalR कडे वळा.

टीप: MongoDB Change Streams साठी रिप्लिका सेट (replica set) किंवा शार्डेड क्लस्टर (sharded cluster) आवश्यक आहे. ते स्टँडअलोन (standalone) सर्व्हरवर काम करत नाहीत.

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

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