Megosztás a következőn keresztül:


Az Azure SignalR szolgáltatás használata

Ez a cikk bemutatja, hogyan használhatja az SDK-t az alkalmazáskiszolgáló oldalán a SignalR Szolgáltatáshoz való csatlakozáshoz, amikor a SignalR-t használja az alkalmazáskiszolgálón.

Azure SignalR Service-példány létrehozása

Kövesse a rövid útmutatót: Arm-sablon használata az Azure SignalR üzembe helyezéséhez SignalR-szolgáltatáspéldány létrehozásához.

ASP.NET Core SignalR esetén

Telepítse a SDK-t

Futtassa a parancsot a SignalR Service SDK telepítéséhez a ASP.NET Core-projekthez.

dotnet add package Microsoft.Azure.SignalR

Az osztályban használja a Startup SignalR Service SDK-t a következő kódrészletként.

public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR()
            .AddAzureSignalR();
}

public void Configure(IApplicationBuilder app)
{
    app.UseEndpoints(routes =>
    {
        routes.MapHub<YourHubClass>("/path_for_your_hub");
    });
}

Kapcsolati sztring konfigurálása

A SignalR Service kapcsolati sztring kétféleképpen konfigurálható az alkalmazásban.

  • Állítson be egy környezeti változót névvel Azure:SignalR:ConnectionString vagy Azure__SignalR__ConnectionString.

    • A Azure-alkalmazás Szolgáltatásban helyezze az alkalmazásbeállításokba.
  • Adja meg a kapcsolati sztring paraméterként.AddAzureSignalR()

    services.AddSignalR()
            .AddAzureSignalR("<replace with your connection string>");
    

    vagy

    services.AddSignalR()
            .AddAzureSignalR(options => options.ConnectionString = "<replace with your connection string>");
    

Beállítások konfigurálása

Az Azure SignalR Service SDK használatakor testre szabhat néhány beállítást .

ConnectionString

  • Az alapértelmezett érték a fájl vagy fájl Azure:SignalR:ConnectionString connectionString appSetting.web.config
  • Újrakonfigurálható, de győződjön meg arról, hogy az érték NEM szigorúan kódolt.

InitialHubServerConnectionCount

  • Az alapértelmezett érték 5.
  • Ez a beállítás szabályozza az alkalmazáskiszolgáló és az Azure SignalR Szolgáltatás közötti hubonkénti kapcsolatok kezdeti számát. Általában tartsa meg, mivel az alapértelmezett érték elegendő. Futásidőben előfordulhat, hogy az SDK új kiszolgálókapcsolatokat indít el a teljesítmény finomhangolásához vagy a terheléselosztáshoz. Ha nagy számú ügyféllel rendelkezik, nagyobb számot adhat neki a jobb átviteli sebesség érdekében. Ha például összesen 100 000 ügyféllel rendelkezik, a kapcsolat száma növelhető vagy 15növelhető10.

MaxHubServerConnectionCount

  • Az alapértelmezett érték null.
  • Ez a beállítás szabályozza az alkalmazáskiszolgáló és az Azure SignalR Szolgáltatás közötti hubonként engedélyezett kapcsolatok maximális számát. Futásidőben előfordulhat, hogy az SDK új kiszolgálókapcsolatokat indít el a teljesítmény finomhangolásához vagy a terheléselosztáshoz. Alapértelmezés szerint szükség esetén új kiszolgálókapcsolat indul el. Ha a maximálisan engedélyezett kiszolgálói kapcsolatszám konfigurálva van, az SDK nem indít el új kapcsolatokat, amikor a kiszolgálókapcsolatok száma eléri a korlátot.

ApplicationName

  • Az alapértelmezett érték null.
  • Ez a beállítás akkor lehet hasznos, ha ugyanazt az Azure SignalR-példányt szeretné megosztani az azonos központneveket tartalmazó különböző alkalmazáskiszolgálókon. Ha nincs beállítva, a rendszer az összes csatlakoztatott alkalmazáskiszolgálót ugyanahhoz az alkalmazáshoz tartozó példánynak tekinti.

ClaimsProvider

  • Az alapértelmezett érték null.
  • Ez a beállítás szabályozza, hogy milyen jogcímeket szeretne társítani az ügyfélkapcsolattal. Akkor használatos, amikor a Service SDK hozzáférési jogkivonatot hoz létre az ügyfél számára az ügyfél egyeztetési kérésében. Alapértelmezés szerint a tárgyalásos kérelem összes jogcíme HttpContext.User fenntartott. Ezek a címen érhetők el Hub.Context.User.
  • Ezt a beállítást általában a megszokott módon kell hagynia. A testreszabás előtt győződjön meg arról, hogy tisztában van azzal, mi történik.

AccessTokenLifetime

  • Az alapértelmezett érték 1 hour.
  • Ez a beállítás a Service SDK által az egyes ügyfelek számára létrehozott hozzáférési jogkivonat érvényes élettartamát szabályozza. A hozzáférési jogkivonat az ügyfél egyeztetési kérésére adott válaszban lesz visszaadva.
  • Amikor ServerSentEvent az ügyfélkapcsolatot átvitelként használják vagy LongPolling használják, az ügyfélkapcsolat a lejárt idő után a hitelesítési hiba miatt le lesz zárva. Ezt az értéket növelheti, hogy elkerülje az ügyfél kapcsolatának megszakadását.

AccessTokenAlgorithm

  • Az alapértelmezett érték a HS256
  • Ez a beállítás választási lehetőséget biztosít a SecurityAlgorithms hozzáférési jogkivonatok létrehozásakor. Most már támogatott választható értékek és HS256 HS512. Vegye figyelembe, hogy HS512 biztonságosabb, de a létrehozott jogkivonat viszonylag hosszabb, mint a használt HS256.

ServerStickyMode

  • Az alapértelmezett érték Disabled.
  • Ez a beállítás a kiszolgáló ragadós módját adja meg. Amikor az ügyfél átirányítva van ahhoz a kiszolgálóhoz, amellyel először egyeztet, a kiszolgálót ragadósnak nevezzük.
  • Elosztott forgatókönyvekben több alkalmazáskiszolgáló is csatlakoztatható egy Azure SignalR-példányhoz. Az ügyfélkapcsolatok belső magyarázata szerint az ügyfél először egyeztet az alkalmazáskiszolgálóval, majd átirányítja az Azure SignalR-be az állandó kapcsolat létrehozásához. Az Azure SignalR ezután megkeres egy alkalmazáskiszolgálót, amely kiszolgálja az ügyfelet, amint azt az ügyfél és a kiszolgáló közötti adatátvitel ismerteti.
    • Amikor Disabledaz ügyfél átirányít egy véletlenszerű alkalmazáskiszolgálóra. Az alkalmazáskiszolgálók általában kiegyensúlyozott ügyfélkapcsolatokkal rendelkeznek ezzel a móddal. Ha a forgatókönyvek közvetítésre vagy csoportos küldésre kerülnek, használja ezt az alapértelmezett beállítást.
    • Amikor Preferredaz Azure SignalR megkísérli megtalálni azt az alkalmazáskiszolgálót, amellyel az ügyfél először tárgyal úgy, hogy nincs szükség más költségekre vagy globális útválasztásra. Ez akkor lehet hasznos, ha a forgatókönyvet elküldi a kapcsolatnak*. A küldés a kapcsolatra jobb teljesítménnyel és kisebb késéssel járhat, ha a feladó és a fogadó ugyanahhoz az alkalmazáskiszolgálóhoz van irányítva.
    • Amikor Requiredaz Azure SignalR mindig megpróbálja megtalálni azt az alkalmazáskiszolgálót, amellyel az ügyfél először egyeztet. Ez a beállítás akkor lehet hasznos, ha egy ügyfélkörnyezetet lekérnek a lépésből negotiate , és memóriában tárolják, majd az s-ben Hubhasználják. Ennek a lehetőségnek azonban lehetnek teljesítménybeli hátrányai, mivel az Azure SignalR-nek más erőfeszítéseket kell tennie az adott alkalmazáskiszolgáló globális megkeresésére, valamint az ügyfél és a kiszolgáló közötti forgalom globális útválasztására.

GracefulShutdown

GracefulShutdown.Mode
  • Az alapértelmezett érték a Off
  • Ez a beállítás azt a viselkedést adja meg, amikor az alkalmazáskiszolgáló SIGINT-et (CTRL + C) kap.
  • Ha a WaitForClientsClosekiszolgáló azonnali leállítása helyett az Azure SignalR szolgáltatásból eltávolítjuk, azzal megakadályozzuk, hogy új ügyfélkapcsolatok legyenek hozzárendelve ehhez a kiszolgálóhoz.
  • Ha be van MigrateClientsállítva, megpróbáljuk áttelepíteni az ügyfélkapcsolatokat egy másik érvényes kiszolgálóra. A migrálás csak egy üzenet kézbesítése után aktiválódik.
    • OnConnected és akkor aktiválódnak, amikor a kapcsolatok be- és OnDisconnected kifelé migrálhatók.
    • IConnectionMigrationFeature segítségével megállapíthatja, hogy a kapcsolat be- vagy ki van-e migrálva.
    • A részletes használathoz tekintse meg a mintakódokat.
GracefulShutdown.Timeout
  • Az alapértelmezett érték a 30 seconds
  • Ez a beállítás az ügyfelek bezárására/migrálására való várakozás leghosszabb idejét adja meg.

ServiceScaleTimeout

  • Az alapértelmezett érték a 5 minutes
  • Ez a beállítás megadja a dinamikus skálázási szolgáltatásvégpontokra való várakozás leghosszabb idejét, amely legalább az online ügyfeleket érinti. Az egyetlen alkalmazáskiszolgáló és a szolgáltatásvégpont közötti dinamikus skálázás általában másodpercek alatt befejezhető, miközben figyelembe veszi, hogy több alkalmazáskiszolgálóval és több szolgáltatásvégponttal rendelkezik-e hálózati jitterrel, és biztosítani szeretné az ügyfél stabilitását, ennek megfelelően konfigurálhatja ezt az értéket.

MaxPollIntervalInSeconds

  • Az alapértelmezett érték a 5
  • Ez a beállítás határozza meg az Azure SignalR Service-beli kapcsolatokhoz LongPolling engedélyezett maximális lekérdezési időközt. Ha a következő lekérdezési kérelem nem jön be MaxPollIntervalInSeconds, az Azure SignalR Service törli az ügyfélkapcsolatot.
  • Az érték csak a következőre korlátozódik [1, 300]: .

TransportTypeDetector

  • Alapértelmezett érték: Minden átvitel engedélyezve van.
  • Ez a beállítás egy függvényt határoz meg, amely testre szabja az ügyfelek által a HTTP-kérések küldéséhez használható átviteleket.
  • Az átvitelek konfigurálása helyett HttpConnectionDispatcherOptions.Transports használja ezt a beállítást.

Minta

A fenti beállításokat az alábbi mintakódhoz hasonlóan konfigurálhatja.

services.AddSignalR()
        .AddAzureSignalR(options =>
            {
                options.InitialHubServerConnectionCount = 10;
                options.AccessTokenLifetime = TimeSpan.FromDays(1);
                options.ClaimsProvider = context => context.User.Claims;

                options.GracefulShutdown.Mode = GracefulShutdownMode.WaitForClientsClose;
                options.GracefulShutdown.Timeout = TimeSpan.FromSeconds(10);
                options.TransportTypeDetector = httpContext => AspNetCore.Http.Connections.HttpTransportType.WebSockets | AspNetCore.Http.Connections.HttpTransportType.LongPolling;
            });

Az örökölt ASP.NET SignalR esetében

Feljegyzés

Ha először próbálja ki a SignalR-t, javasoljuk, hogy használja a ASP.NET Core SignalR-t, egyszerűbb , megbízhatóbb és könnyebben használható.

Telepítse a SDK-t

Telepítse a SignalR Service SDK-t a ASP.NET-projektbe Csomagkezelő konzollal:

Install-Package Microsoft.Azure.SignalR.AspNet

Az osztályban használja a Startup SignalR Service SDK-t a következő kódrészletként, és cserélje le MapSignalR() a következőre MapAzureSignalR({your_applicationName}). Cserélje le {YourApplicationName} az alkalmazás nevére, ez az egyedi név, amely megkülönbözteti ezt az alkalmazást a többi alkalmazással. Értékként is használható this.GetType().FullName .

public void Configuration(IAppBuilder app)
{
    app.MapAzureSignalR(this.GetType().FullName);
}

Kapcsolati sztring konfigurálása

Állítsa a kapcsolati sztring a web.config fájlban a connectionStrings következő szakaszra:

<configuration>
    <connectionStrings>
        <add name="Azure:SignalR:ConnectionString" connectionString="Endpoint=...;AccessKey=..."/>
    </connectionStrings>
    ...
</configuration>

Beállítások konfigurálása

Az Azure SignalR Service SDK használatakor testre szabhat néhány beállítást .

ConnectionString

  • Az alapértelmezett érték a fájl vagy fájl Azure:SignalR:ConnectionString connectionString appSetting.web.config
  • Újrakonfigurálható, de győződjön meg arról, hogy az érték NEM szigorúan kódolt.

InitialHubServerConnectionCount

  • Az alapértelmezett érték 5.
  • Ez a beállítás szabályozza az alkalmazáskiszolgáló és az Azure SignalR Szolgáltatás közötti hubonkénti kapcsolatok kezdeti számát. Általában tartsa meg, mivel az alapértelmezett érték elegendő. Futásidőben előfordulhat, hogy az SDK új kiszolgálókapcsolatokat indít el a teljesítmény finomhangolásához vagy a terheléselosztáshoz. Ha nagy számú ügyféllel rendelkezik, nagyobb számot adhat neki a jobb átviteli sebesség érdekében. Ha például összesen 100 000 ügyféllel rendelkezik, a kapcsolat száma növelhető vagy 15növelhető10.

MaxHubServerConnectionCount

  • Az alapértelmezett érték null.
  • Ez a beállítás szabályozza az alkalmazáskiszolgáló és az Azure SignalR Szolgáltatás közötti hubonként engedélyezett kapcsolatok maximális számát. Futásidőben előfordulhat, hogy az SDK új kiszolgálókapcsolatokat indít el a teljesítmény finomhangolásához vagy a terheléselosztáshoz. Alapértelmezés szerint szükség esetén új kiszolgálókapcsolat indul el. Ha a maximálisan engedélyezett kiszolgálói kapcsolatszám konfigurálva van, az SDK nem indít el új kapcsolatokat, amikor a kiszolgálókapcsolatok száma eléri a korlátot.

ApplicationName

  • Az alapértelmezett érték null.
  • Ez a beállítás akkor lehet hasznos, ha ugyanazt az Azure SignalR-példányt szeretné megosztani az azonos központneveket tartalmazó különböző alkalmazáskiszolgálókon. Ha nincs beállítva, a rendszer az összes csatlakoztatott alkalmazáskiszolgálót ugyanahhoz az alkalmazáshoz tartozó példánynak tekinti.

ClaimProvider

  • Az alapértelmezett érték null.
  • Ez a beállítás szabályozza, hogy milyen jogcímeket szeretne társítani az ügyfélkapcsolattal. Akkor használatos, amikor a Service SDK hozzáférési jogkivonatot hoz létre az ügyfél számára az ügyfél egyeztetési kérésében. Alapértelmezés szerint a tárgyalásos kérelem összes jogcíme IOwinContext.Authentication.User fenntartott.
  • Ezt a beállítást általában a megszokott módon kell hagynia. A testreszabás előtt győződjön meg arról, hogy tisztában van azzal, mi történik.

AccessTokenLifetime

  • Az alapértelmezett érték 1 hour.
  • Ez a beállítás szabályozza a hozzáférési jogkivonat érvényes élettartamát, amelyet a Service SDK minden ügyfélhez létrehoz. A hozzáférési jogkivonat az ügyfél egyeztetési kérésére adott válaszban lesz visszaadva.
  • Amikor ServerSentEvent az ügyfélkapcsolatot átvitelként használják vagy LongPolling használják, az ügyfélkapcsolat a lejárt idő után a hitelesítési hiba miatt le lesz zárva. Ezt az értéket növelheti, hogy elkerülje az ügyfél kapcsolatának megszakadását.

AccessTokenAlgorithm

  • Az alapértelmezett érték a HS256
  • Ez a beállítás választási lehetőséget biztosít a SecurityAlgorithms hozzáférési jogkivonatok létrehozásakor. Most már támogatott választható értékek és HS256 HS512. Vegye figyelembe, hogy HS512 biztonságosabb, de a létrehozott jogkivonat viszonylag hosszabb, mint a használt HS256.

ServerStickyMode

  • Az alapértelmezett érték Disabled.
  • Ez a beállítás a kiszolgáló ragadós módját adja meg. Amikor az ügyfél átirányítva van ahhoz a kiszolgálóhoz, amellyel először egyeztet, a kiszolgálót ragadósnak nevezzük.
  • Elosztott forgatókönyvekben több alkalmazáskiszolgáló is csatlakoztatható egy Azure SignalR-példányhoz. Az ügyfélkapcsolatok belső magyarázata szerint az ügyfél először egyeztet az alkalmazáskiszolgálóval, majd átirányítja az Azure SignalR-be az állandó kapcsolat létrehozásához. Az Azure SignalR ezután megkeres egy alkalmazáskiszolgálót, amely kiszolgálja az ügyfelet, amint azt az ügyfél és a kiszolgáló közötti adatátvitel ismerteti.
    • Amikor Disabledaz ügyfél átirányít egy véletlenszerű alkalmazáskiszolgálóra. Az alkalmazáskiszolgálók általában kiegyensúlyozott ügyfélkapcsolatokkal rendelkeznek ezzel a móddal. Ha a forgatókönyvek közvetítésre vagy csoportos küldésre kerülnek, használja ezt az alapértelmezett beállítást.
    • Amikor Preferredaz Azure SignalR megkísérli megtalálni azt az alkalmazáskiszolgálót, amellyel az ügyfél először tárgyal úgy, hogy nincs szükség más költségekre vagy globális útválasztásra. Ez akkor lehet hasznos, ha a forgatókönyvet elküldi a kapcsolatnak*. A küldés a kapcsolatra jobb teljesítménnyel és kisebb késéssel járhat, ha a feladó és a fogadó ugyanahhoz az alkalmazáskiszolgálóhoz van irányítva.
    • Amikor Requiredaz Azure SignalR mindig megpróbálja megtalálni azt az alkalmazáskiszolgálót, amellyel az ügyfél először egyeztet. Ez a beállítás akkor lehet hasznos, ha egy ügyfélkörnyezetet lekérnek a lépésből negotiate , és memóriában tárolják, majd az s-ben Hubhasználják. Ennek a lehetőségnek azonban lehetnek teljesítménybeli hátrányai, mivel az Azure SignalR-nek más erőfeszítéseket kell tennie az adott alkalmazáskiszolgáló globális megkeresésére, valamint az ügyfél és a kiszolgáló közötti forgalom globális útválasztására.

MaxPollIntervalInSeconds

  • Az alapértelmezett érték a 5
  • Ez a beállítás határozza meg az Inaktív kapcsolatokhoz engedélyezett maximális üresjárati időt az Azure SignalR Service-ben. A ASP.NET SignalR esetében a hosszú lekérdezési átviteli típusra vagy újracsatlakoztatásra vonatkozik. Ha a következő /reconnect vagy /poll kérés nem jön be MaxPollIntervalInSeconds, az Azure SignalR Service törli az ügyfélkapcsolatot.
  • Az érték csak a következőre korlátozódik [1, 300]: .

Minta

A fenti beállításokat az alábbi mintakódhoz hasonlóan konfigurálhatja.

app.Map("/signalr",subApp => subApp.RunAzureSignalR(this.GetType().FullName, new HubConfiguration(), options =>
{
    options.InitialHubServerConnectionCount = 1;
    options.AccessTokenLifetime = TimeSpan.FromDays(1);
    options.ClaimProvider = context => context.Authentication?.User.Claims;
}));

Alkalmazáskiszolgáló vertikális felskálázása

Az Azure SignalR Szolgáltatással az állandó kapcsolatok ki vannak töltve az alkalmazáskiszolgálóról, így az üzleti logika központi osztályokban való implementálására összpontosíthat. A nagy méretű ügyfélkapcsolatok kezelésekor azonban továbbra is fel kell méreteznie az alkalmazáskiszolgálókat a jobb teljesítmény érdekében. Az alábbiakban néhány tippet talál az alkalmazáskiszolgálók horizontális felskálázására.

  • Több alkalmazáskiszolgáló is csatlakozhat ugyanahhoz az Azure SignalR-szolgáltatáspéldányhoz.
  • Ha ugyanazt az Azure SignalR-példányt szeretné megosztani az azonos hubneveket tartalmazó különböző alkalmazásokhoz, állítsa be őket különböző ApplicationName beállítással. Ha nincs beállítva, a rendszer az összes csatlakoztatott alkalmazáskiszolgálót ugyanahhoz az alkalmazáshoz tartozó példánynak tekinti.
  • Ha az ApplicationName beállítás és a hubosztály neve megegyezik, a különböző alkalmazáskiszolgálók kapcsolatai ugyanabban a központban vannak csoportosítva.
  • Minden ügyfélkapcsolat csak az egyik alkalmazáskiszolgálón jön létre, és az ügyféltől érkező üzenetek csak ugyanarra az alkalmazáskiszolgálóra lesznek elküldve. Ha globálisan (az összes alkalmazáskiszolgálóról) szeretné elérni az ügyféladatokat, az ügyféladatok az összes alkalmazáskiszolgálóról való mentéséhez központi tárolót kell használnia.

Következő lépések

Ebből a cikkből megtudhatja, hogyan használhatja a SignalR szolgáltatást az alkalmazásokban. A SignalR szolgáltatással kapcsolatos további információkért tekintse meg az alábbi cikkeket.