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 ఉపయోగించి దీనిని అమలు చేయవచ్చు.
కోడ్ ఫ్లో ఈ క్రింది దశలను అనుసరిస్తుంది:
- మీ యాప్ MongoDBలో ఒక change stream cursorను ఓపెన్ చేస్తుంది.
- డేటా మారినప్పుడు MongoDB ఈవెంట్లను విడుదల చేస్తుంది.
- మీ యాప్ ఈ మార్పులను క్లయింట్కు మ్యాప్ చేస్తుంది.
స్ట్రీమ్లను తిరిగి ప్రారంభించే (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