Sdílet prostřednictvím


Šklálování aplikace SignalR SQL Serverem

Patrick Fletcher

Upozornění

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

Verze softwaru použité v tomto tématu

Předchozí verze tohoto tématu

Informace o starších verzích služby SignalR najdete v tématu Starší verze služby SignalR.

Dotazy a komentáře

Pošlete nám prosím zpětnou vazbu k tomu, jak se vám tento kurz líbil a co bychom mohli vylepšit v komentářích v dolní části stránky. Pokud máte dotazy, které přímo nesouvisejí s kurzem, můžete je publikovat na fóru ASP.NET SignalR nebo StackOverflow.com.

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 znázorňující šipky od S Q L Serveru do V M do počítačů Jedna šipka s popiskem Update (Aktualizace) začíná na V M a přejde na server 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 Startup.cs přidejte následující kód pro konfiguraci backplane:

    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            string sqlConnectionString = "Connecton string to your SQL DB";
            GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
            app.MapSignalR();
        }
    }
    

    Tento kód nakonfiguruje backplane s výchozími hodnotami TableCount a MaxQueueLength. Informace o změně těchto hodnot najdete v tématu Výkon služby SignalR: Metriky škálování.

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 dialogovým oknem Průzkumník objektů Je vybraná složka s popiskem Databáze.

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 oknem zobrazujícím zobrazení katalogu databází sys dot

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 Startup.cs. Do metody Configure přidejte následující kód:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        // Any connection or hub wire up and configuration should go here
        string sqlConnectionString = "Connecton string to your SQL DB";
        GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
        app.MapSignalR();
    }
}

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 s dialogovým oknem Průvodce přidáním rolí a funkcí Jsou vybrané role serveru a protokol WebSocket.

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

Snímek obrazovky s dialogovým oknem Průvodce přidáním rolí a funkcí Jsou vybrány role serveru a služba správy.

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 s web deploy 3 point 0 vybranou ve výsledcích hledání

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 se dvěma otevřenými okny prohlížeče zobrazující aplikaci nasazenou na dvou serverech

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

Snímek obrazovky s dialogovým oknem Průzkumník objektů zobrazujícího složky a soubory

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