Škálování aplikace SignalR SQL Serverem (SignalR 1.x)

Patrick Fletcher

Upozornění

Tato dokumentace není určená pro nejnovější verzi SignalR. Podívejte se na ASP.NET Core SignalR.

V tomto kurzu použijete SQL Server k distribuci zpráv v aplikaci SignalR nasazené ve dvou samostatných instancích služby IIS. Tento kurz můžete spustit také na jednom testovacím počítači, ale abyste získali plný efekt, musíte aplikaci SignalR nasadit na dva nebo více serverů. Musíte také nainstalovat SQL Server na jeden ze serverů nebo na samostatný vyhrazený server. Další možností je spustit kurz pomocí virtuálních počítačů v Azure.

Diagram serveru S Q L a jeho vztahu mezi V Ms, počítači, odesíláním dotazů a aktualizacemi serveru S Q L

Požadavky

Microsoft SQL Server 2005 nebo novější. Backplane podporuje desktopovou i serverovou edici SQL Server. Nepodporuje SQL Server Compact Edition ani Azure SQL Database. (Pokud je vaše aplikace hostovaná v Azure, zvažte místo toho backplane služby Service Bus.)

Přehled

Než se dostaneme k podrobnému kurzu, tady je stručný přehled toho, co budete dělat.

  1. Vytvořte novou prázdnou databázi. Backplane vytvoří potřebné tabulky v této databázi.

  2. Přidejte do aplikace tyto balíčky NuGet:

  3. Vytvořte aplikaci SignalR.

  4. Do souboru Global.asax přidejte následující kód pro konfiguraci backplane:

    protected void Application_Start()
    {
        string sqlConnectionString = "Connecton string to your SQL DB";
        GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
    
        RouteTable.Routes.MapHubs();
        // ...
    }
    

Konfigurace databáze

Rozhodněte, jestli aplikace bude pro přístup k databázi používat ověřování Systému Windows nebo ověřování SQL Server. Bez ohledu na to se ujistěte, že uživatel databáze má oprávnění k přihlášení, vytváření schémat a vytváření tabulek.

Vytvořte novou databázi pro backplane, která se má použít. Databázi můžete pojmenovat libovolným názvem. V databázi nemusíte vytvářet žádné tabulky. backplane vytvoří potřebné tabulky.

Snímek obrazovky s oknem Průzkumník objektů se zvýrazněnou složkou Databases a zobrazující její obsažené podsložky

Povolení služby Service Broker

Doporučuje se povolit Service Broker pro databázi backplane. Service Broker poskytuje nativní podporu pro zasílání zpráv a řazení do fronty v SQL Server, což umožňuje backplane přijímat aktualizace efektivněji. (Backplane ale funguje i bez služby Service Broker.)

Pokud chcete zkontrolovat, jestli je služba Service Broker povolená, zadejte dotaz na sloupec is_broker_enabled v zobrazení katalogu sys.databases .

SELECT [name], [service_broker_guid], [is_broker_enabled]
FROM [master].[sys].[databases]

Snímek obrazovky s kartou S Q L Query 1 tečka S Q L zobrazenou ve službě Service Broker s kartami Výsledky a Zprávy

Pokud chcete povolit Service Broker, použijte následující dotaz SQL:

ALTER DATABASE YOUR_DATABASE SET ENABLE_BROKER

Poznámka

Pokud se zdá, že se tento dotaz zablokuje, ujistěte se, že k databázi nejsou připojené žádné aplikace.

Pokud jste povolili trasování, trasování také zobrazí, jestli je povolená služba Service Broker.

Vytvoření aplikace SignalR

Vytvořte aplikaci SignalR podle některého z těchto kurzů:

Dále upravíme chatovací aplikaci tak, aby podporovala horizontální navýšení kapacity s SQL Server. Nejprve do projektu přidejte balíček NuGet SignalR.SqlServer. V sadě Visual Studio v nabídce Nástroje vyberte Správce balíčků NuGet a pak vyberte Konzola Správce balíčků. V okně konzoly Správce balíčků zadejte následující příkaz:

Install-Package Microsoft.AspNet.SignalR.SqlServer

Pak otevřete soubor Global.asax. Do metody Application_Start přidejte následující kód:

protected void Application_Start()
{
    string sqlConnectionString = "<add your SQL connection string here>";
    GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);

    RouteTable.Routes.MapHubs();
}

Nasazení a spuštění aplikace

Připravte instance Windows Serveru na nasazení aplikace SignalR.

Přidejte roli IIS. Zahrnout funkce "Vývoj aplikací", včetně protokolu WebSocket.

Snímek obrazovky Průvodce přidáním rolí a funkcí se zvýrazněnými možnostmi Role serveru a Protokol webového soketu

Zahrňte také službu pro správu (uvedenou v části Nástroje pro správu).

Snímek obrazovky Průvodce přidáním rolí a funkcí se zvýrazněnými možnostmi Role serveru a Nástroje pro správu

Nainstalujte Nasazení webu 3.0. Když spustíte Správce služby IIS, zobrazí se výzva k instalaci Webová platforma Microsoft nebo si můžete stáhnout instalační program. V instalačním programu platformy vyhledejte Nasazení webu a nainstalujte Nasazení webu 3.0.

Snímek obrazovky instalačního programu webové platformy 4 bod 5 zobrazující výsledky hledání se zvýrazněnou možností Nasazení webu 3 bod 0

Zkontrolujte, jestli je spuštěná služba webové správy. Pokud ne, službu spusťte. (Pokud v seznamu služeb systému Windows nevidíte Službu pro správu webu, ujistěte se, že jste ji nainstalovali při přidání role IIS.)

Nakonec otevřete port 8172 pro TCP. Toto je port, který nástroj pro nasazení webu používá.

Teď jste připraveni nasadit projekt sady Visual Studio z vývojového počítače na server. V Průzkumník řešení klikněte pravým tlačítkem na řešení a klikněte na Publikovat.

Podrobnější dokumentaci k nasazení webu najdete v tématu Mapa obsahu nasazení webu pro Visual Studio a ASP.NET.

Pokud nasadíte aplikaci na dva servery, můžete každou instanci otevřít v samostatném okně prohlížeče a zjistit, že každý z nich přijímá zprávy SignalR od druhého. (V produkčním prostředí by se oba servery samozřejmě nacházely za nástrojem pro vyrovnávání zatížení.)

Snímek obrazovky s oknem prohlížeče Internet Explorer s obrazovkou Index, na které se zobrazují zprávy Signal R

Po spuštění aplikace uvidíte, že služba SignalR automaticky vytvořila tabulky v databázi:

Snímek obrazovky Průzkumník objektů se zvýrazněným serverem MIKE dash S Q L a zobrazující jeho obsažené složky a servery

SignalR spravuje tabulky. Dokud je vaše aplikace nasazená, neodstraňovat řádky, neupravovat tabulku atd.