Škálování aplikace SignalR SQL Serverem (SignalR 1.x)
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.
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.
Vytvořte novou prázdnou databázi. Backplane vytvoří potřebné tabulky v této databázi.
Přidejte do aplikace tyto balíčky NuGet:
Vytvořte aplikaci SignalR.
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.
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]
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.
Zahrňte také službu pro správu (uvedenou v části 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.
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í.)
Po spuštění aplikace uvidíte, že služba SignalR automaticky vytvořila tabulky v databázi:
SignalR spravuje tabulky. Dokud je vaše aplikace nasazená, neodstraňovat řádky, neupravovat tabulku atd.