MongoDB Change Streams மூலம் .NET 𝗦𝗲𝗿𝘃𝗲𝗿 𝗦𝗶𝗱𝗲 𝗘𝘃𝗲𝗻𝘁𝘀
நீங்கள் ASP.NET Core-இல் நிகழ்நேரப் புதுப்பிப்புகளை (real-time updates) விரும்புகிறீர்கள். முதலில் WebSockets பற்றி நீங்கள் நினைக்கலாம்.
டேஷ்போர்டுகள் (dashboards) மற்றும் ஃபீடுகளுக்கு (feeds) ஒரு எளிமையான வழி உள்ளது. நீங்கள் MongoDB Change Streams மற்றும் Server-Sent Events (SSE)-ஐப் பயன்படுத்தலாம்.
இந்த அமைப்பு மிகக் குறைந்த குறியீட்டுடன் (code), உங்கள் சேவையகத்திலிருந்து (server) உங்கள் கிளையண்டிற்கு (client) ஒருவழித் தரவுப் பரிமாற்றத்தை (one-way streaming) வழங்குகிறது.
இது எவ்வாறு செயல்படுகிறது:
- MongoDB Change Streams தரவுத்தள மாற்றங்களை உடனடியாகக் கண்டறிகின்றன.
- SSE அந்த மாற்றங்களை ஒரு ஒற்றை HTTP இணைப்பின் மூலம் உலாவியில் (browser) கொண்டு சேர்க்கிறது.
- நீங்கள் தொடர்ச்சியான போலிங் (polling) செய்வதைத் தவிர்க்கலாம், இது சேவையக வளங்களைச் (server resources) சேமிக்கிறது.
SSE என்பது ஒரு நேட்டிவ் பிரவுசர் API ஆகும். இது நீண்ட கால HTTP பதிலின் (long-lived HTTP response) மூலம் செயல்படுகிறது மற்றும் தானியங்கி மறுஇணைப்புகளை (automatic reconnects) ஆதரிக்கிறது. இது கீழ்க்கண்டவற்றுக்குச் சிறந்தது:
- நேரலை காலவரிசைகள் (Live timelines)
- அறிவிப்புகள் (Notifications)
- செயல்பாட்டு ஃபீடுகள் (Activity feeds)
- அட்மின் டேஷ்போர்டுகள் (Admin dashboards)
ASP.NET Core Minimal APIs-இல், நீங்கள் TypedResults.ServerSentEvents-ஐப் பயன்படுத்தி இதைச் செயல்படுத்தலாம்.
குறியீட்டு ஓட்டம் (code flow) இந்த நிலைகளைப் பின்பற்றுகிறது:
- உங்கள் ஆப் MongoDB-இல் ஒரு change stream cursor-ஐத் திறக்கிறது.
- தரவு மாறும்போது MongoDB நிகழ்வுகளை (events) வெளியிடுகிறது.
- உங்கள் ஆப் இந்த மாற்றங்களை கிளையண்டிற்குத் தொடர்புபடுத்துகிறது (maps).
இதன் ஒரு முக்கிய நன்மை, ஸ்ட்ரீம்களைத் தொடரும் (resume) திறன் ஆகும். ஒவ்வொரு மாற்றத்திற்கும் MongoDB ஒரு resume token-ஐ வழங்குகிறது. இந்த டோக்கனை நீங்கள் Last-Event-ID ஹெடர் (header) மூலம் அனுப்பலாம். ஒரு பிரவுசர் மறுஇணைக்கப்படும்போது, அது கடைசியாகப் பார்த்த ID-ஐ அனுப்பும். உங்கள் ஆப் இந்த ID-ஐப் படித்து, விட்ட இடத்திலிருந்து சரியாகத் தொடங்குமாறு MongoDB-இடம் கூறுகிறது.
SSE மற்றும் SignalR - எப்போது எதைப் பயன்படுத்த வேண்டும்?
பின்வரும் சூழல்களில் SSE-ஐப் பயன்படுத்தவும்:
- உங்களுக்கு சர்வர்-டு-கிளையன்ட் (server-to-client) புதுப்பிப்புகள் மட்டுமே தேவைப்பட்டால்.
- நீங்கள் ஒரு லேசான (lightweight), உரை அடிப்படையிலான (text-based) அமைப்பை விரும்பினால்.
- நீங்கள் நேட்டிவ் பிரவுசர் API-களைப் பயன்படுத்த விரும்பினால்.
பின்வரும் சூழல்களில் SignalR-ஐப் பயன்படுத்தவும்:
- உங்களுக்கு இருவழி (bi-directional) தகவல் தொடர்பு தேவைப்பட்டால்.
- உங்களுக்கு குரூப்கள் (groups) அல்லது ஹப்ஸ் (hubs) போன்ற சிக்கலான அம்சங்கள் தேவைப்பட்டால்.
- உங்களுக்கு தானியங்கி டிரான்ஸ்போர்ட் நெகோஷியேஷன் (automatic transport negotiation - WebSockets, Long Polling) தேவைப்பட்டால்.
எளிய நேரலை ஃபீடுகளுக்கு SSE-இல் தொடங்குங்கள். உங்கள் ஆப்பிற்கு அதிகப்படியானத் தொடர்பு (richer interaction) தேவைப்படும்போது மட்டும் SignalR-க்கு மாறவும்.
குறிப்பு: MongoDB Change Streams-க்கு ஒரு replica set அல்லது sharded cluster தேவை. அவை ஒரு standalone server-இல் செயல்படாது.
மூலம்: https://dev.to/mongodb/net-server-side-events-with-mongodb-change-streams-5dfb
விருப்பத்தேர்வு கற்றல் சமூகம்: https://t.me/GyaanSetuAi