MongoDB Change Streams తో .NET 𝗦𝗲𝗿𝘃𝗲𝗿 𝗦𝗶𝗱𝗲 𝗘𝘃𝗲𝗻𝘁𝘀

మీరు ASP.NET Coreలో రియల్-టైమ్ అప్‌డేట్‌లను కోరుకుంటున్నారు. మీరు మొదట WebSockets గురించి ఆలోచించవచ్చు.

డ్యాష్‌బోర్డ్‌లు మరియు ఫీడ్‌ల కోసం ఒక సులభమైన మార్గం ఉంది. మీరు MongoDB Change Streams మరియు Server-Sent Events (SSE)లను ఉపయోగించవచ్చు.

ఈ సెటప్ చాలా తక్కువ కోడ్‌తో మీ సర్వర్ నుండి క్లయింట్‌కు వన్-వే స్ట్రీమింగ్‌ను అందిస్తుంది.

ఇది ఎలా పనిచేస్తుంది:

  • MongoDB Change Streams డేటాబేస్ మార్పులను తక్షణమే గుర్తిస్తాయి.
  • SSE ఆ మార్పులను ఒకే HTTP కనెక్షన్ ద్వారా బ్రౌజర్‌కు పంపిస్తుంది.
  • మీరు నిరంతర పోలింగ్ (polling) అవసరం లేకుండా చేయవచ్చు, దీనివల్ల సర్వర్ వనరులు ఆదా అవుతాయి.

SSE అనేది ఒక నేటివ్ బ్రౌజర్ API. ఇది లాంగ్-లివ్డ్ (long-lived) HTTP రెస్పాన్స్ ద్వారా పనిచేస్తుంది మరియు ఆటోమేటిక్ రీకనెక్ట్‌లను సపోర్ట్ చేస్తుంది. ఇది వీటికి సరిగ్గా సరిపోతుంది:

  • లైవ్ టైమ్‌లైన్‌లు
  • నోటిఫికేషన్‌లు
  • యాక్టివిటీ ఫీడ్‌లు
  • అడ్మిన్ డ్యాష్‌బోర్డ్‌లు

ASP.NET Core Minimal APIsలో, మీరు TypedResults.ServerSentEvents ఉపయోగించి దీనిని అమలు చేయవచ్చు.

కోడ్ ఫ్లో ఈ క్రింది దశలను అనుసరిస్తుంది:

  1. మీ యాప్ MongoDBలో ఒక change stream cursorను ఓపెన్ చేస్తుంది.
  2. డేటా మారినప్పుడు MongoDB ఈవెంట్‌లను విడుదల చేస్తుంది.
  3. మీ యాప్ ఈ మార్పులను క్లయింట్‌కు మ్యాప్ చేస్తుంది.

స్ట్రీమ్‌లను తిరిగి ప్రారంభించే (resume) సామర్థ్యం ఉండటం దీనిలోని ఒక ప్రధాన ప్రయోజనం. ప్రతి మార్పు కోసం MongoDB ఒక resume tokenను అందిస్తుంది. మీరు ఈ టోకెన్‌ను Last-Event-ID హెడర్ ద్వారా పంపవచ్చు. బ్రౌజర్ తిరిగి కనెక్ట్ అయినప్పుడు, అది చూసిన చివరి IDని పంపిస్తుంది. మీ యాప్ ఈ IDని చదివి, సరిగ్గా ఎక్కడ ఆగిపోయిందో అక్కడి నుండి ప్రారంభించమని MongoDBకి చెబుతుంది.

SSE మరియు SignalR లలో దేనిని ఎప్పుడు ఉపయోగించాలి?

ఈ క్రింది సందర్భాలలో SSEని ఉపయోగించండి:

  • మీకు కేవలం సర్వర్-టు-క్లయింట్ అప్‌డేట్‌లు మాత్రమే కావాలనుకుంటే.
  • మీరు లైట్‌వెయిట్, టెక్స్ట్-ఆధారిత సెటప్‌ను కోరుకుంటే.
  • మీరు నేటివ్ బ్రౌజర్ APIలను ఉపయోగించాలనుకుంటే.

ఈ క్రింది సందర్భాలలో SignalRని ఉపయోగించండి:

  • మీకు టూ-వే (bi-directional) కమ్యూనికేషన్ కావాలనుకుంటే.
  • మీకు గ్రూపులు లేదా హబ్‌ల వంటి సంక్లిష్టమైన ఫీచర్లు కావాలనుకుంటే.
  • మీకు ఆటోమేటిక్ ట్రాన్స్‌పోర్ట్ నెగోషియేషన్ (WebSockets, Long Polling) కావాలనుకుంటే.

సాధారణ లైవ్ ఫీడ్‌ల కోసం SSEతో ప్రారంభించండి. మీ యాప్‌కు మరింత లోతైన ఇంటరాక్షన్ అవసరమైనప్పుడు మాత్రమే SignalRకి మారండి.

గమనిక: MongoDB Change Streams కోసం రిప్లికా సెట్ (replica set) లేదా షార్డెడ్ క్లస్టర్ (sharded cluster) అవసరం. ఇవి స్టాండ్‌అలోన్ సర్వర్‌పై పనిచేయవు.

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

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