ASP.NET का उपयोग करके कोणीय ऐप में रीयल-टाइम वेब कार्यक्षमता कैसे जोड़ें?
इस पोस्ट में, मैं एंगुलर ऐप का उपयोग करके रीयल-टाइम वेब कार्यक्षमता जोड़ने के लिए आवश्यक चरणों से गुजरने जा रहा हूं एएसपी.नेट Azure फ़ंक्शंस 2.0 के लिए Core SignalR और Azure SignalR सर्विस बाइंडिंग। यह लेख जिन विशिष्ट विषयों को कवर करने जा रहा है वे हैं
- जोड़ें एएसपी.नेट कोर सिग्नलआर टू एएसपी.नेट कोर 2.1 वेब एपीआई
- एंगुलर ऐप से सिग्नलआर हब में संदेश प्रकाशित/सब्सक्राइब करें
- एंगुलर ऐप से एज़्योर फ़ंक्शंस 2.0 के लिए एज़्योर सिग्नलआर सर्विस बाइंडिंग का उपयोग करके सिग्नलआर हब पर संदेश प्रकाशित / सदस्यता लें
- डॉकर छवियां बनाएं और Azure Kubernetes Service पर तैनात करें
इन घटकों को विकसित करने के लिए उपयोग किए जाने वाले उपकरण मैक/वीएस कोड/वीएस 2017, एकेएस डैशबोर्ड, डेस्कटॉप के लिए डॉकर और कुबेक्टल के लिए विजुअल स्टूडियो हैं।
जोड़ें एएसपी.नेट कोर सिग्नलआर टू एएसपी.नेट कोर 2.1 वेब एपीआई
एएसपी.नेट कोर सिग्नलआर एक ओपन-सोर्स लाइब्रेरी है जो ऐप्स में रीयल-टाइम वेब कार्यक्षमता जोड़ने को सरल बनाती है। रीयल-टाइम वेब कार्यक्षमता सर्वर-साइड कोड को क्लाइंट को सामग्री को तुरंत पुश करने में सक्षम बनाती है। अगले अनुभागों में सिग्नलआर को जोड़ने के लिए आवश्यक परिवर्तनों से गुजरना होगा एएसपी.नेट कोर 2.1 वेब एपीआई सिग्नलआर के साथ Azure सिग्नलआर सर्विस और रेडिस बैकप्लेन का उपयोग करके स्केल आउट करता है।
एएसपी.नेट कोर सिग्नलआर
नीचे प्रदर्शित घटक आरेख के बारे में मुख्य संकेत हैं:
सीमा सीएसएस-ट्रिक्स
- कोणीय ऐप (ब्राउज़र) पर नेविगेट करने पर, उपयोगकर्ता को प्रमाणित किया जाएगा और एक्सेस टोकन को MSAL का उपयोग करके Azure AD से पुनर्प्राप्त किया जाएगा।
- कोणीय ऐप अनुरोधों में वाहक टोकन (जेडब्ल्यूटी) पास करेगा और एएसपी.नेट कोर 2.1 वेब एपीआई एक्सेस टोकन को मान्य करेगा
- कोणीय ऐप से कनेक्शन स्थापित करेगा एएसपी.नेट कोर सिग्नलआर हब (वेब एपीआई) और संदेश प्रकाशित/सब्सक्राइब करें
- कोणीय ऐप फंक्शन ऐप एंडपॉइंट का उपयोग करके एज़्योर सिग्नलआर सेवा से कनेक्शन स्थापित करेगा और संदेशों को प्रकाशित / सदस्यता लेगा
- कोणीय ऐप, एएसपी.नेट कोर वेब एपीआई और एसक्यूएल सर्वर को Azure Kubernetes Service में होस्ट किया जाता है। मैंने दो नोड विन्यास मानकर पॉड्स को रंग कोडित किया है।
सक्षम करने के लिए आवश्यक कदम एएसपी.नेट कोर सिग्नलआर in एएसपी.नेट कोर 2.1 वेब एपीआई हैं
जिया बेनेट मॉइस्चराइज़र समीक्षा
- सिग्नलआर हब को कॉन्फ़िगर करें: सिग्नलआर हब एपीआई आपको सर्वर से कनेक्टेड क्लाइंट पर कॉल विधियों में सक्षम बनाता है। सर्वर कोड में, आप क्लाइंट द्वारा बुलाए जाने वाले तरीकों को परिभाषित करते हैं। क्लाइंट कोड में, आप सर्वर से कॉल की जाने वाली विधियों को परिभाषित करते हैं। सिग्नलआर पर्दे के पीछे की हर चीज का ख्याल रखता है जो रीयल-टाइम क्लाइंट-टू-सर्वर और सर्वर-टू-क्लाइंट संचार को संभव बनाता है। क्लाइंट द्वारा बुलाए गए तरीकों को परिभाषित करने के लिए आवश्यक INotificationHub इंटरफ़ेस औरNotificationHub वर्ग जोड़ें।
public interface INotificationHub { Task MessageNotification(string message); Task PublishMessageAck(string value); }
public class NotificationHub : Hub { public async Task PublishMessage(string message) { await this.Clients.AllExcept(this.Context.ConnectionId).MessageNotification($'Broadcast: {message}'); await this.Clients.Caller.PublishMessageAck($'Broadcast Ack: {message}'); } public override async Task OnConnectedAsync() { await Groups.AddToGroupAsync(Context.ConnectionId, 'Users'); await base.OnConnectedAsync(); } public override async Task OnDisconnectedAsync(Exception exception) { await Groups.RemoveFromGroupAsync(Context.ConnectionId, 'Users'); await base.OnDisconnectedAsync(exception); } }
- Startup.cs वर्ग में SignalRConfigMode SingalRConfigMode = SignalRConfigMode.ASPNetCoreSignalR निर्दिष्ट करें
- ConfigureServices विधि को अपडेट करें और SignalR सेवा जोड़ें।
services.AddSignalR(options => { options.EnableDetailedErrors = true; });
-
- कॉन्फ़िगर विधि को अपडेट करें और SignalR को |_+_| . में जोड़ें निष्पादन पाइपलाइन का अनुरोध करें। मेरे द्वारा नमूने में निर्दिष्ट किया गया सिग्नलआरहब चर मान |_+_| है।
IApplicationBuilder
- JWT प्रमाणीकरण हैंडलर को एक्सेस पढ़ने की अनुमति देंवेबसाकेट या सर्वर द्वारा भेजे गए ईवेंट अनुरोध के आने पर क्वेरी स्ट्रिंग से टोकन |_+_| तरीका।
/api/SignalRHub
- अधिकृत उपयोगकर्ता के दावों को Context.User.Clams in NotificationHub क्लास में कॉल करके एक्सेस किया जा सकता है।
एकल नोड/सर्वर परिदृश्य में यह ठीक काम करता है, हालांकि जब एएसपी.नेट कोर 2.1 वेब एपीआई को बढ़ाया गया है उदा। एक से अधिक पॉड चलाने पर, एक पॉड पर सिग्नलआर हब से जुड़े क्लाइंट को दूसरे पॉड पर सिग्नलआर हब पर प्रकाशित संदेश प्राप्त नहीं होगा। एएसपी.नेट कोर सिग्नलआर रेडिस कैश और एज़ूर सिग्नलआर सर्विस स्केल आउट का समर्थन करता है।
एएसपी.नेट रेडिस कैश बैकप्लेन का उपयोग करके कोर सिग्नलआर स्केल आउट
रेडिस कैश का उपयोग बैकप्लेन के रूप में किया जा सकता है एएसपी.नेट कोर सिग्नलआर स्केल आउट। अन्य सर्वरों को संदेश अग्रेषित करने के लिए रेडिस कैश का उपयोग पब/सब के रूप में किया जाता है। इस विकल्प को सक्षम करने के लिए स्टिकी सत्रों की आवश्यकता है। पिछले कार्यान्वयन से घटक आरेख में एकमात्र परिवर्तन यह है कि वेब एपीआई पॉड्स रेडिस कैश सेवा के साथ संचार कर रहे हैं।
रेडिस बैकप्लेन का उपयोग करने के लिए आवश्यक कोड परिवर्तन हैं
- Microsoft.AspNetCore.SignalR.Redis Nuget पैकेज स्थापित करें
- Startup.cs वर्ग में SignalRConfigMode SingalRConfigMode = SignalRConfigMode.Redis निर्दिष्ट करें
- ConfigureServices विधि को अपडेट करें और AddRedis जोड़ें
app.UseSignalR((options) => { options.MapHub(SignalRHub); });
- |_+_| . का मान निर्दिष्ट करें appsettings.json . में
एएसपी.नेट Azure सिग्नलआर सर्विस बैकप्लेन का उपयोग करके कोर सिग्नलआर स्केल आउट
Azure सिग्नलआर सेवा का उपयोग बैकप्लेन के रूप में किया जा सकता है एएसपी.नेट कोर सिग्नलआर स्केल आउट। इस विकल्प को सक्षम करने के लिए स्टिकी सत्रों की आवश्यकता नहीं है।Azure सिग्नलआर सेवा का उपयोग करने के प्रमुख कारणों में से एक सादगी है। Azure सिग्नलआर सेवा के साथ, आपको प्रदर्शन, मापनीयता, उपलब्धता जैसी समस्याओं को संभालने की आवश्यकता नहीं है।पिछले कार्यान्वयन से घटक आरेख में एकमात्र परिवर्तन वेब एपीआई पॉड्स Azure सिग्नलआर सेवा के साथ संचार कर रहे हैं।
अल्बट कहां से खरीदें
Azure सिग्नलआर सेवा का उपयोग करने के लिए आवश्यक कोड परिवर्तन हैं
- Microsoft.Azure.SignalR Nuget पैकेज स्थापित करें
- Startup.cs वर्ग में SignalRConfigMode SingalRConfigMode = SignalRConfigMode.AzureSignalRService निर्दिष्ट करें
- ConfigureServices विधि को अपडेट करें और AddAzureSignalR जोड़ें
Service.AddAuthentication(...).AddJwtBearer(...)
- कॉन्फ़िगर विधि को अपडेट करें और UseAzureSignalR जोड़ें
OnMessageReceived = context => { var accessToken = context.Request.Query['access_token']; var path = context.HttpContext.Request.Path; if (!string.IsNullOrEmpty(accessToken) && (path.StartsWithSegments(SignalRHub))) { context.Token = accessToken; } return Task.CompletedTask; },
- |_+_| . का मान निर्दिष्ट करें appsettings.json . में
एंगुलर ऐप से सिग्नलआर हब में संदेश प्रकाशित/सब्सक्राइब करें
सिग्नलआर हब को प्रकाशित/सब्सक्राइब करने के लिए कोणीय ऐप नमूना अपडेट किया गया है। नीचे सूचीबद्ध कोड स्निपेट के बारे में मुख्य संकेत हैं:
- aspnet/signalr स्थापित करें जो सिग्नलआर के लिए जावास्क्रिप्ट और टाइपस्क्रिप्ट क्लाइंट के लिए समर्थन प्रदान करता है एएसपी.नेट सार
- सिग्नलआर हब यूआरएल ${this.config.get().API_URL}${this.config.get().SIGNALR_HUB} में निर्दिष्ट है
- SignalR हब के अनुरोधों को अधिकृत करने के लिए एक्सेस टोकन की आवश्यकता होती है और इसे {accessTokenFactory: () => this.authHelper.getAccessTokenFromCache() } में निर्दिष्ट किया जाता है।
- पुन: प्रयास करें कनेक्शन अंतराल 10000 . है
- ऐप MessageNotification की सदस्यता लेता है और SignalR हब के MessageAck संदेशों को प्रकाशित करता है
- ऐप PublishMessage का उपयोग करके SignalR हब को संदेश भेजता है
- 'environment.ts' में 'API_URL': 'WEB_API_URL' निर्दिष्ट करें
services.AddSignalR(options => { options.EnableDetailedErrors = true; }).AddRedis(RedisConnectionString);
एंगुलर ऐप से एज़्योर फ़ंक्शंस 2.0 के लिए एज़्योर सिग्नलआर सर्विस बाइंडिंग का उपयोग करके सिग्नलआर हब पर संदेश प्रकाशित / सदस्यता लें
इस श्रृंखला का पिछला ब्लॉग फंक्शन ऐप को विकसित करने के लिए आवश्यक चरणों का वर्णन करता हैAzure Functions 2.0 के लिए Azure SignalR सर्विस बाइंडिंग।Azure फ़ंक्शंस के माध्यम से Azure सिग्नलआर सर्विस हब को प्रकाशित/सब्सक्राइब करने के लिए कोणीय ऐप नमूना अपडेट किया गया है (आपको वेब एप्लिकेशन को होस्ट करने की आवश्यकता नहीं है)। नीचे सूचीबद्ध कोड स्निपेट के बारे में मुख्य संकेत हैं:
- aspnet/signalr स्थापित करें जो सिग्नलआर के लिए जावास्क्रिप्ट और टाइपस्क्रिप्ट क्लाइंट के लिए समर्थन प्रदान करता है एएसपी.नेट सार
- ${this.config.get().FUNCTION_APP_URL}बातचीत पोस्ट अनुरोध यूआरएल और एक्सेस टोकन वाले SignalRConnectionInfo ऑब्जेक्ट लौटाएगा।
- AccessTokenFactory निर्दिष्ट करके Azure SignalR सर्विस हब से कनेक्ट करने के लिए SignalRConnectionInfo की आवश्यकता है: () => info.accessToken और url withUrl(url, options) में
- पुन: प्रयास करें कनेक्शन अंतराल 10000 . है
- ऐप ${this.config.get().FUNCTION_APP_URL}sendmessage पर एक पोस्ट अनुरोध भेजकर SignalR हब को संदेश भेजता है
- ऐप सिग्नलआर हब के SendMessage यानी this.hubConnection.on ('sendMessage', (डेटा: कोई भी) को सब्सक्राइब करता है।
- पर्यावरण.ts में 'FUNCTION_APP_URL': 'FUNCTION_APP_URLFUNCTION_APP_URL' निर्दिष्ट करें
'RedisConnectionString': 'REDIS_CONNECTION_STRING'
डॉकर छवियाँ बनाएँ और Azure Kubernetes सेवा में परिनियोजित करें
के लिए डॉकर छवियां बनाएं एएसपी.नेट कोर वेब एपीआई और एंगुलर ऐप और इन डॉकटर छवियों को एज़्योर कुबेरनेट्स सर्विस क्लस्टर में तैनात करें। परिनियोजन के बाद, कोणीय ऐप पर ब्राउज़ करें और या तो उपयोग करके संदेश भेजें एएसपी.नेट कोर सिग्नलआर या एज़ूर फ़ंक्शंस 2.0 एंडपॉइंट।
सारांश
यह एंगुलर ऐप का उपयोग करके रीयल-टाइम वेब कार्यक्षमता जोड़ने पर लेख पूरा करता है एएसपी.नेट Azure फ़ंक्शंस 2.0 के लिए Core SignalR और Azure SignalR सर्विस बाइंडिंग। पूरा सोर्स कोड से डाउनलोड किया जा सकता है GitHub-AzureFunctions तथा गिटहब-अक्स .
मूल रूप से . पर प्रकाशित blogs.msdn.microsoft.com
आशा है कि यह पोस्ट निश्चित रूप से आपकी और आपकी मदद करेगी! पढ़ने के लिए धन्यवाद, अगर आपको यह पसंद आया तो कृपया साझा करें!
फॉक्स sportsgo.com/roku
#angular #asp-net #docker #kubernetes #azure