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) இந்த நிலைகளைப் பின்பற்றுகிறது:

  1. உங்கள் ஆப் MongoDB-இல் ஒரு change stream cursor-ஐத் திறக்கிறது.
  2. தரவு மாறும்போது MongoDB நிகழ்வுகளை (events) வெளியிடுகிறது.
  3. உங்கள் ஆப் இந்த மாற்றங்களை கிளையண்டிற்குத் தொடர்புபடுத்துகிறது (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