SignalR — skalowanie w poziomie z użyciem usługi Azure Service Bus (SignalR 1.x)

Autor : Patrick Fletcher

Ostrzeżenie

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

W tym samouczku wdrożysz aplikację SignalR w roli internetowej platformy Windows Azure przy użyciu backplanu usługi Service Bus w celu dystrybucji komunikatów do każdego wystąpienia roli.

Diagram przedstawiający relację między tematem przestrzeni nazw usługi Service Bus, rolami sieci Web i dostępnymi komputerami i kontami.

Wymagania wstępne:

Zaplecze magistrali usług jest również zgodne z usługą Service Bus dla systemu Windows Server w wersji 1.1. Nie jest jednak zgodny z wersją 1.0 usługi Service Bus dla systemu Windows Server.

Cennik

Plan wsteczny usługi Service Bus używa tematów do wysyłania komunikatów. Aby uzyskać najnowsze informacje o cenach, zobacz Service Bus. W momencie pisania tego tekstu możesz wysłać 1000 000 wiadomości miesięcznie za mniej niż 1 USD. Płaszczyzna wsteczna wysyła komunikat magistrali usług dla każdej wywołania metody centrum SignalR. Istnieją również pewne komunikaty sterujące dla połączeń, rozłączeń, dołączania lub opuszczania grup itd. W większości aplikacji większość ruchu komunikatów będzie wywołaniami metody centrum.

Omówienie

Zanim przejdziemy do szczegółowego samouczka, poniżej przedstawiono krótkie omówienie tego, co zrobisz.

  1. Użyj Azure Portal systemu Windows, aby utworzyć nową przestrzeń nazw usługi Service Bus.

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

  3. Tworzenie aplikacji SignalR.

  4. Dodaj następujący kod do pliku Global.asax, aby skonfigurować płaszczyznę wsteczną:

    protected void Application_Start()
    {
        string connectionString = "Service Bus connection string";
        GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName");
    
        RouteTable.Routes.MapHubs();
        // ...
    }
    

Dla każdej aplikacji wybierz inną wartość "YourAppName". Nie używaj tej samej wartości w wielu aplikacjach.

Tworzenie usług platformy Azure

Utwórz usługę w chmurze zgodnie z opisem w temacie How to Create and Deploy a Cloud Service (Jak utworzyć i wdrożyć usługę w chmurze). Postępuj zgodnie z instrukcjami w sekcji "Instrukcje: tworzenie usługi w chmurze przy użyciu szybkiego tworzenia". W tym samouczku nie trzeba przekazywać certyfikatu.

Zrzut ekranu przedstawiający okienko NOWY z wyróżnioną opcją Usługa w chmurze i ikoną wyróżnioną w aplikacji oraz czerwonym okręgiem.

Utwórz nową przestrzeń nazw usługi Service Bus zgodnie z opisem w temacie How to Use Service Bus Topics/Subscriptions (Jak używać tematów/subskrypcji usługi Service Bus). Wykonaj kroki opisane w sekcji "Tworzenie przestrzeni nazw usługi".

Zrzut ekranu przedstawiający ekran Dodawanie nowej przestrzeni nazw z wpisami wprowadzonymi w polach Nazwa przestrzeni nazw i Region.

Uwaga

Upewnij się, że wybrano ten sam region dla usługi w chmurze i przestrzeni nazw usługi Service Bus.

Tworzenie projektu programu Visual Studio

Uruchom program Visual Studio. W menu Plik kliknij pozycję Nowy projekt.

W oknie dialogowym Nowy projekt rozwiń węzeł Visual C#. W obszarze Zainstalowane szablony wybierz pozycję Chmura , a następnie wybierz pozycję Usługa w chmurze platformy Windows Azure. Zachowaj domyślną .NET Framework 4.5. Nadaj aplikacji nazwę ChatService i kliknij przycisk OK.

Zrzut ekranu przedstawiający ekran Nowy projekt z wyróżnioną opcją Visual C# usługi w chmurze platformy Windows Azure.

W oknie dialogowym Nowa usługa w chmurze platformy Windows Azure wybierz pozycję ASP.NET rolę sieci Web MVC 4. Kliknij przycisk strzałki w prawo (>), aby dodać rolę do rozwiązania.

Umieść kursor myszy nad nową rolą, aby ikona ołówka widoczna. Kliknij tę ikonę, aby zmienić nazwę roli. Nadaj roli nazwę "SignalRChat" i kliknij przycisk OK.

Zrzut ekranu przedstawiający ekran Nowa usługa w chmurze platformy Windows Azure z wyróżnioną opcją Signal R Chat w okienku rozwiązania Windows Azure Cloud Service.

W kreatorze Nowy projekt MVC 4 ASP.NET wybierz pozycję Aplikacja internetowa. Kliknij przycisk OK. Kreator projektu tworzy dwa projekty:

  • ChatService: ten projekt jest aplikacją platformy Windows Azure. Definiuje role platformy Azure i inne opcje konfiguracji.
  • SignalRChat: ten projekt jest projektem ASP.NET MVC 4.

Tworzenie aplikacji czatu usługi SignalR

Aby utworzyć aplikację czatu, wykonaj kroki opisane w samouczku Wprowadzenie z usługami SignalR i MVC 4.

Użyj narzędzia NuGet, aby zainstalować wymagane biblioteki. W 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 polecenia:

Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR.ServiceBus

-ProjectName Użyj opcji , aby zainstalować pakiety w projekcie ASP.NET MVC, a nie w projekcie platformy Windows Azure.

Konfigurowanie płaszczyzny wstecznej

W pliku Global.asax aplikacji dodaj następujący kod:

protected void Application_Start()
{
    string connectionString = "";
    GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");  

    RouteTable.Routes.MapHubs();
}

Teraz musisz pobrać parametry połączenia usługi Service Bus. W Azure Portal wybierz utworzoną przestrzeń nazw usługi Service Bus i kliknij ikonę Klucz dostępu.

Zrzut ekranu przedstawiający opcje tworzenia, klucza dostępu i usuwania oraz ikony w przestrzeni nazw usługi Service Bus z fokusem na opcji Utwórz.

Skopiuj parametry połączenia do schowka, a następnie wklej je do zmiennej connectionString .

Zrzut ekranu przedstawiający ekran Łączenie klucza dostępu z przestrzenią nazw z polami Parametry połączenia, Wystawca domyślny i Klucz domyślny.

string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";

Wdróż na platformie Azure

W Eksplorator rozwiązań rozwiń folder Roles w projekcie ChatService.

Zrzut ekranu przedstawiający drzewo Eksplorator rozwiązań z opcją Signal R Chat zawartą w folderze Role projektu Usługi czatu.

Kliknij prawym przyciskiem myszy rolę SignalRChat i wybierz pozycję Właściwości. Wybierz kartę Konfiguracja . W obszarze Wystąpienia wybierz pozycję 2. Możesz również ustawić rozmiar maszyny wirtualnej na Wartość Bardzo mała.

Zrzut ekranu przedstawiający sekcję Wystąpienia karty konfiguracji z wartością 2 wprowadzoną w polu Liczba wystąpień, a pole Rozmiar maszyny wirtualnej ustawiono na Wartość Bardzo mała.

Zapisz zmiany.

W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ChatService. Kliknij pozycję Opublikuj.

Zrzut ekranu przedstawiający projekt usługi czatu Eksplorator rozwiązań z menu rozwijanym prawym przyciskiem myszy przedstawiającym publikowanie... Opcja.

Jeśli po raz pierwszy publikujesz dane na platformie Windows Azure, musisz pobrać poświadczenia. W kreatorze Publikowanie kliknij pozycję "Zaloguj się, aby pobrać poświadczenia". Spowoduje to wyświetlenie monitu o zalogowanie się do Azure Portal systemu Windows i pobranie pliku ustawień publikowania.

Zrzut ekranu przedstawiający kartę Zaloguj się na ekranie Publikowanie systemu Windows aplikacja systemu Azure z wyróżnionym linkiem Zaloguj się w celu pobrania poświadczeń.

Kliknij przycisk Importuj i wybierz pobrany plik ustawień publikowania.

Kliknij przycisk Dalej. W oknie dialogowym Ustawienia publikowania w obszarze Usługa w chmurze wybierz utworzoną wcześniej usługę w chmurze.

Zrzut ekranu przedstawiający kartę Ustawienia na ekranie Publikowanie aplikacja systemu Azure systemu Windows z polem Usługa w chmurze na karcie Wspólne ustawienia.

Kliknij przycisk Opublikuj. Wdrożenie aplikacji i uruchomienie maszyn wirtualnych może potrwać kilka minut.

Teraz po uruchomieniu aplikacji do czatu wystąpienia ról komunikują się za pośrednictwem Azure Service Bus przy użyciu tematu usługi Service Bus. Temat to kolejka komunikatów, która umożliwia wielu subskrybentom.

Płaszczyzna wsteczna automatycznie tworzy temat i subskrypcje. Aby wyświetlić działania subskrypcji i komunikatów, otwórz Azure Portal, wybierz przestrzeń nazw usługi Service Bus i kliknij pozycję "Tematy".

Zrzut ekranu przedstawiający wybrane pole Usługi w chmurze wypełnione w Azure Portal z wyróżnionym polem Nazwa usługi w chmurze.

Wyświetlenie działania komunikatu na pulpicie nawigacyjnym zajmuje kilka minut.

Zrzut ekranu przedstawiający oś czasu działania komunikatów na pulpicie nawigacyjnym Azure Portal przedstawiający niebieską i fioletową linię wskazującą różne historie komunikatów.

Usługa SignalR zarządza okresem istnienia tematu. Tak długo, jak aplikacja jest wdrożona, nie próbuj ręcznie usuwać tematów ani zmieniać ustawień w temacie.