Udostępnij za pośrednictwem


SignalR — skalowanie w poziomie z użyciem programu SQL Server

Autor : Patrick Fletcher

Ostrzeżenie

Ta dokumentacja nie jest przeznaczona dla najnowszej wersji usługi SignalR. Przyjrzyj się ASP.NET Core SignalR.

Wersje oprogramowania używane w tym temacie

Poprzednie wersje tego tematu

Aby uzyskać informacje o wcześniejszych wersjach usługi SignalR, zobacz SignalR Older Versions (Starsze wersje usługi SignalR).

Pytania i komentarze

Prześlij opinię na temat tego, jak podoba ci się ten samouczek i co możemy poprawić w komentarzach w dolnej części strony. Jeśli masz pytania, które nie są bezpośrednio związane z samouczkiem, możesz opublikować je na forum ASP.NET SignalR lub StackOverflow.com.

W tym samouczku użyjesz SQL Server do dystrybucji komunikatów w aplikacji SignalR wdrożonej w dwóch oddzielnych wystąpieniach usług IIS. Możesz również uruchomić ten samouczek na jednej maszynie testowej, ale aby uzyskać pełny efekt, musisz wdrożyć aplikację SignalR na co najmniej dwóch serwerach. Należy również zainstalować SQL Server na jednym z serwerów lub na osobnym dedykowanym serwerze. Inną opcją jest uruchomienie samouczka przy użyciu maszyn wirtualnych na platformie Azure.

Diagram przedstawiający strzałki przechodzące z serwera S Q L do V M do komputerów. Jedna strzałka z etykietą Aktualizacja rozpoczyna się od wersji V M i przechodzi do serwera S Q L.

Wymagania wstępne

Microsoft SQL Server 2005 lub nowszy. Plan zaplecza obsługuje zarówno wersje pulpitu, jak i serwera SQL Server. Nie obsługuje SQL Server Compact Edition ani bazy danych Azure SQL. (Jeśli aplikacja jest hostowana na platformie Azure, rozważ zamiast tego plan zaplecza usługi Service Bus).

Omówienie

Zanim przejdziemy do szczegółowego samouczka, zapoznaj się z szybkim omówieniem tego, co zrobisz.

  1. Utwórz nową pustą bazę danych. Plan zaplecza utworzy niezbędne tabele w tej bazie danych.

  2. Dodaj następujące pakiety NuGet do aplikacji:

  3. Utwórz aplikację SignalR.

  4. Dodaj następujący kod do pliku Startup.cs, aby skonfigurować plan zaplecza:

    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();
        }
    }
    

    Ten kod konfiguruje plan zaplecza z wartościami domyślnymi tableCount i MaxQueueLength. Aby uzyskać informacje na temat zmieniania tych wartości, zobacz SignalR Performance: Scaleout Metrics (Wydajność usługi SignalR: Metryki skalowania w poziomie).

Konfigurowanie bazy danych

Zdecyduj, czy aplikacja będzie używać uwierzytelniania systemu Windows, czy SQL Server uwierzytelniania w celu uzyskania dostępu do bazy danych. Niezależnie od tego upewnij się, że użytkownik bazy danych ma uprawnienia do logowania, tworzenia schematów i tworzenia tabel.

Utwórz nową bazę danych dla planu wstecznego do użycia. Możesz nadać bazie danych dowolną nazwę. Nie musisz tworzyć żadnych tabel w bazie danych; plan wsteczny utworzy niezbędne tabele.

Zrzut ekranu przedstawiający okno dialogowe Eksplorator obiektów. Wybrano folder z etykietą Bazy danych.

Włączanie brokera usług

Zaleca się włączenie usługi Service Broker dla bazy danych backplane. Usługa Service Broker zapewnia natywną obsługę obsługi komunikatów i kolejkowania w SQL Server, dzięki czemu zaplecze będzie otrzymywać aktualizacje wydajniej. (Jednak plan zaplecza działa również bez usługi Service Broker).

Aby sprawdzić, czy usługa Service Broker jest włączona, wykonaj zapytanie o kolumnę is_broker_enabled w widoku katalogu sys.databases .

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

Zrzut ekranu przedstawiający okno z widokiem katalogu sys dot database.

Aby włączyć usługę Service Broker, użyj następującego zapytania SQL:

ALTER DATABASE YOUR_DATABASE SET ENABLE_BROKER

Uwaga

Jeśli to zapytanie wydaje się zakleszczać, upewnij się, że nie ma żadnych aplikacji połączonych z bazą danych.

Jeśli włączono śledzenie, ślady będą również pokazywać, czy usługa Service Broker jest włączona.

Tworzenie aplikacji SignalR

Utwórz aplikację SignalR, wykonując jedną z następujących samouczków:

Następnie zmodyfikujemy aplikację czatu, aby obsługiwała skalowanie w poziomie przy użyciu SQL Server. Najpierw dodaj pakiet NuGet SignalR.SqlServer do projektu. W programie Visual Studio z menu Narzędzia wybierz pozycję Menedżer pakietów NuGet, a następnie wybierz pozycję Konsola menedżera pakietów. W oknie Konsola menedżera pakietów wprowadź następujące polecenie:

Install-Package Microsoft.AspNet.SignalR.SqlServer

Następnie otwórz plik Startup.cs. Dodaj następujący kod do metody Configure :

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();
    }
}

Wdrażanie i uruchamianie aplikacji

Przygotuj wystąpienia systemu Windows Server do wdrożenia aplikacji SignalR.

Dodaj rolę usług IIS. Uwzględnij funkcje tworzenia aplikacji, w tym protokół WebSocket.

Zrzut ekranu przedstawiający okno dialogowe Kreator dodawania ról i funkcji. Wybrane są role serwera i protokół WebSocket.

Uwzględnij również usługę zarządzania (wymienioną w obszarze "Narzędzia do zarządzania").

Zrzut ekranu przedstawiający okno dialogowe Kreator dodawania ról i funkcji. Wybrano pozycję Role serwera i usługa zarządzania.

Zainstaluj program Web Deploy 3.0. Po uruchomieniu Menedżera usług IIS zostanie wyświetlony monit o zainstalowanie Platforma Microsoft Web lub pobranie instalatora. W Instalatorze platformy wyszukaj pozycję Web Deploy i zainstaluj narzędzie Web Deploy 3.0

Zrzut ekranu przedstawiający wdrożenie internetowe 3 punkt 0 wybrane w wynikach wyszukiwania.

Sprawdź, czy usługa zarządzania siecią Web jest uruchomiona. Jeśli nie jest, uruchom tę usługę. (Jeśli usługa zarządzania siecią Web nie jest widoczna na liście usług systemu Windows, upewnij się, że podczas dodawania roli usług IIS zainstalowano usługę zarządzania).

Na koniec otwórz port 8172 dla protokołu TCP. Jest to port używany przez narzędzie Web Deploy.

Teraz możesz przystąpić do wdrażania projektu programu Visual Studio z maszyny dewelopera na serwerze. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy rozwiązanie i kliknij polecenie Publikuj.

Aby uzyskać bardziej szczegółową dokumentację dotyczącą wdrażania w internecie, zobacz Web Deployment Content Map for Visual Studio and ASP.NET (Mapa zawartości wdrażania sieci Web dla programu Visual Studio i ASP.NET).

W przypadku wdrożenia aplikacji na dwóch serwerach można otworzyć każde wystąpienie w osobnym oknie przeglądarki i zobaczyć, że każda z nich odbiera komunikaty usługi SignalR z drugiej. (Oczywiście w środowisku produkcyjnym dwa serwery znajdują się za modułem równoważenia obciążenia).

Zrzut ekranu przedstawiający dwa otwarte okna przeglądarki z wdrożonym aplikacją na dwóch serwerach.

Po uruchomieniu aplikacji widać, że usługa SignalR automatycznie utworzyła tabele w bazie danych:

Zrzut ekranu przedstawiający okno dialogowe Eksplorator obiektów z folderami i plikami.

Usługa SignalR zarządza tabelami. Tak długo, jak aplikacja jest wdrażana, nie usuwaj wierszy, modyfikuj tabelę itd.