MongoDB Change Streams ਦੇ ਨਾਲ .NET 𝗦𝗲𝗿𝘃𝗲𝗿 𝗦𝗶𝗱𝗲 𝗘𝘃𝗲𝗻𝘁𝘀

ਤੁਸੀਂ ASP.NET Core ਵਿੱਚ real-time updates ਚਾਹੁੰਦੇ ਹੋ। ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਮਨ ਵਿੱਚ ਸਭ ਤੋਂ ਪਹਿਲਾਂ WebSockets ਦਾ ਵਿਚਾਰ ਆਵੇ।

Dashboards ਅਤੇ feeds ਲਈ ਇੱਕ ਸਰਲ ਤਰੀਕਾ ਹੈ। ਤੁਸੀਂ MongoDB Change Streams ਅਤੇ Server-Sent Events (SSE) ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।

ਇਹ setup ਬਹੁਤ ਘੱਟ ਕੋਡ ਦੇ ਨਾਲ ਤੁਹਾਡੇ server ਤੋਂ client ਤੱਕ one-way streaming ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ:

  • MongoDB Change Streams ਡਾਟਾਬੇਸ ਵਿੱਚ ਹੋਣ ਵਾਲੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਤੁਰੰਤ ਪਛਾਣ ਲੈਂਦੇ ਹਨ।
  • SSE ਇੱਕ ਸਿੰਗਲ HTTP connection ਰਾਹੀਂ ਉਹਨਾਂ ਤਬਦੀਲੀਆਂ ਨੂੰ browser ਤੱਕ ਪਹੁੰਚਾਉਂਦਾ ਹੈ।
  • ਤੁਸੀਂ ਲਗਾਤਾਰ polling ਤੋਂ ਬਚ ਸਕਦੇ ਹੋ, ਜਿਸ ਨਾਲ server resources ਬਚਦੇ ਹਨ।

SSE ਇੱਕ native browser API ਹੈ। ਇਹ ਇੱਕ long-lived HTTP response ਰਾਹੀਂ ਕੰਮ ਕਰਦਾ ਹੈ ਅਤੇ automatic reconnects ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਇਹ ਇਹਨਾਂ ਲਈ ਬਿਲਕੁਲ ਸਹੀ ਹੈ:

  • Live timelines
  • Notifications
  • Activity feeds
  • Admin dashboards

ASP.NET Core Minimal APIs ਵਿੱਚ, ਤੁਸੀਂ TypedResults.ServerSentEvents ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸਨੂੰ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ।

ਕੋਡ ਦਾ ਪ੍ਰਵਾਹ ਇਹਨਾਂ ਕਦਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ:

  1. ਤੁਹਾਡੀ app MongoDB ਵਿੱਚ ਇੱਕ change stream cursor ਖੋਲ੍ਹਦੀ ਹੈ।
  2. ਜਦੋਂ ਡਾਟਾ ਬਦਲਦਾ ਹੈ, ਤਾਂ MongoDB events ਜਾਰੀ ਕਰਦਾ ਹੈ।
  3. ਤੁਹਾਡੀ app ਇਹਨਾਂ ਤਬਦੀਲੀਆਂ ਨੂੰ client ਤੱਕ ਪਹੁੰਚਾਉਂਦੀ (map ਕਰਦੀ) ਹੈ।

ਇੱਕ ਵੱਡਾ ਫਾਇਦਾ streams ਨੂੰ ਦੁਬਾਰਾ ਸ਼ੁਰੂ (resume) ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਹੈ। MongoDB ਹਰ ਤਬਦੀਲੀ ਲਈ ਇੱਕ resume token ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸ token ਨੂੰ Last-Event-ID header ਰਾਹੀਂ ਭੇਜ ਸਕਦੇ ਹੋ। ਜਦੋਂ browser ਦੁਬਾਰਾ connect ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਹ ਆਪਣੀ ਆਖਰੀ ID ਭੇਜਦਾ ਹੈ ਜੋ ਇਸਨੇ ਦੇਖੀ ਸੀ। ਤੁਹਾਡੀ app ਇਸ ID ਨੂੰ ਪੜ੍ਹਦੀ ਹੈ ਅਤੇ MongoDB ਨੂੰ ਉੱਥੋਂ ਹੀ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਕਹਿੰਦੀ ਹੈ ਜਿੱਥੇ ਇਹ ਰੁਕਿਆ ਸੀ।

ਤੁਹਾਨੂੰ SignalR ਦੇ ਮੁਕਾਬਲੇ SSE ਦੀ ਵਰਤੋਂ ਕਦੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ?

SSE ਦੀ ਵਰਤੋਂ ਕਰੋ ਜੇਕਰ:

  • ਤੁਹਾਨੂੰ ਸਿਰਫ਼ server-to-client updates ਦੀ ਲੋੜ ਹੈ।
  • ਤੁਸੀਂ ਇੱਕ lightweight, text-based setup ਚਾਹੁੰਦੇ ਹੋ।
  • ਤੁਸੀਂ native browser APIs ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।

SignalR ਦੀ ਵਰਤੋਂ ਕਰੋ ਜੇਕਰ:

  • ਤੁਹਾਨੂੰ two-way (bi-directional) communication ਦੀ ਲੋੜ ਹੈ।
  • ਤੁਹਾਨੂੰ groups ਜਾਂ hubs ਵਰਗੀਆਂ ਗੁੰਝਲਦਾਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਲੋੜ ਹੈ।
  • ਤੁਹਾਨੂੰ automatic transport negotiation (WebSockets, Long Polling) ਦੀ ਲੋੜ ਹੈ।

ਸਧਾਰਨ live feeds ਲਈ SSE ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। SignalR ਵੱਲ ਉਦੋਂ ਹੀ ਵਧੋ ਜਦੋਂ ਤੁਹਾਡੀ app ਨੂੰ ਵਧੇਰੇ ਗੁੰਝਲਦਾਰ interaction ਦੀ ਲੋੜ ਹੋਵੇ।

ਨੋਟ: MongoDB Change Streams ਲਈ replica set ਜਾਂ sharded cluster ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ standalone server 'ਤੇ ਕੰਮ ਨਹੀਂ ਕਰਦੇ।

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

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