Sdílet prostřednictvím


Škálování aplikace SignalR službou Azure Service Bus

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 nasadíte aplikaci SignalR do webové role Windows Azure pomocí backplane služby Service Bus k distribuci zpráv do každé instance role. (Backplane služby Service Bus můžete použít také s webovými aplikacemi v Azure App Service.)

Diagram znázorňující šipky od tématu k webovým rolím do počítačů Šipka s popiskem publikování začíná na webových rolích a přejde na Téma.

Požadavky:

Backplane služby Service Bus je také kompatibilní se službou Service Bus pro Windows Server verze 1.1. Není ale kompatibilní s verzí 1.0 služby Service Bus pro Windows Server.

Ceny

Backplane služby Service Bus používá k odesílání zpráv témata. Nejnovější informace o cenách najdete v tématu Service Bus. V době psaní tohoto textu můžete posílat 1 000 000 zpráv měsíčně za méně než 1 USD. Backplane odešle zprávu service bus pro každé vyvolání metody centra SignalR. K dispozici jsou také řídicí zprávy pro připojení, odpojení, spojování nebo opouštění skupin atd. Ve většině aplikací bude většina provozu zpráv vyvoláním metod centra.

Přehled

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

  1. Pomocí windows Azure Portal vytvořte nový obor názvů služby Service Bus.

  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 void Configuration(IAppBuilder app)
    {
        string connectionString = "Service Bus connection string";
        GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName");
    
        app.MapSignalR();
        // ...
    }
    

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

Pro každou aplikaci vyberte jinou hodnotu pro "YourAppName". Nepoužívejte stejnou hodnotu ve více aplikacích.

Vytvoření služeb Azure

Vytvořte cloudovou službu, jak je popsáno v tématu Vytvoření a nasazení cloudové služby. Postupujte podle kroků v části Postupy: Vytvoření cloudové služby pomocí rychlého vytvoření. Pro účely tohoto kurzu nemusíte nahrávat certifikát.

Snímek obrazovky s možností Cloud Service zakroužkovanou červeně

Vytvořte nový obor názvů služby Service Bus, jak je popsáno v tématu Použití témat a předplatných služby Service Bus. Postupujte podle kroků v části Vytvoření oboru názvů služby.

Snímek obrazovky s oknem s názvem Přidání nového oboru názvů s následujícími možnostmi

Poznámka

Nezapomeňte vybrat stejnou oblast pro cloudovou službu a obor názvů služby Service Bus.

Vytvoření projektu sady Visual Studio

Spusťte Visual Studio. V nabídce Soubor klikněte na Nový projekt.

V dialogovém okně Nový projekt rozbalte Visual C#. V části Nainstalované šablony vyberte Cloud a pak vyberte Cloudová služba Windows Azure. Ponechte výchozí rozhraní .NET Framework 4.5. Pojmenujte aplikaci ChatService a klikněte na OK.

Snímek obrazovky s dialogovým oknem Nový projekt Cloud je vybraný ve složce Office Share Point. Chatovací služba je v poli Název.

V dialogovém okně Nová cloudová služba Windows Azure vyberte ASP.NET Webová role. Kliknutím na tlačítko se šipkou vpravo (>) přidejte roli do řešení.

Najeďte myší na novou roli, aby se zobrazila ikona tužky. Kliknutím na tuto ikonu roli přejmenujete. Pojmenujte roli SignalRChat a klikněte na OK.

Snímek obrazovky s dialogovým oknem Nová cloudová služba Windows Azure Signal R Chat je zadaný nad webovou rolí A S P dot NET.

V dialogovém okně Nový projekt ASP.NET vyberte MVC a klikněte na OK.

Snímek obrazovky s dialogovým oknem Nový projekt S P dot NET M V C je vybraná šablona.

Průvodce projektem vytvoří dva projekty:

  • Chatservice: Tento projekt je aplikace Windows Azure. Definuje role Azure a další možnosti konfigurace.
  • SignalRChat: Tento projekt je váš projekt ASP.NET MVC 5.

Vytvoření chatovací aplikace SignalR

Pokud chcete vytvořit chatovací aplikaci, postupujte podle pokynů v kurzu Začínáme s využitím SignalR a MVC 5.

K instalaci požadovaných knihoven použijte NuGet. 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říkazy:

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

Pomocí možnosti -ProjectName nainstalujte balíčky do projektu ASP.NET MVC místo do projektu Windows Azure.

Konfigurace backplane

Do souboru Startup.cs vaší aplikace přidejte následující kód:

public void Configuration(IAppBuilder app)
{
    // Any connection or hub wire up and configuration should go here
    string connectionString = "";
    GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");  

    app.MapSignalR();
}

Teď potřebujete získat připojovací řetězec služby Service Bus. V Azure Portal vyberte obor názvů služby Service Bus, který jste vytvořili, a klikněte na ikonu Přístupová klávesa.

Snímek obrazovky, který zobrazuje znaménko plus s popiskem Vytvořit, klíč označený přístupovým klíčem a odpadkový koš s popiskem Delete

Zkopírujte připojovací řetězec do schránky a vložte ho do proměnné connectionString .

Snímek obrazovky s dialogovým oknem Access Key Connect to your namespace (Připojit k oboru názvů)

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

Nasazení do Azure

V Průzkumník řešení rozbalte složku Role v projektu ChatService.

Snímek obrazovky znázorňující otevřenou složku s názvem Role Je vybraná možnost Signal R Chat.

Klikněte pravým tlačítkem na roli SignalRChat a vyberte Vlastnosti. Vyberte kartu Konfigurace . V části Instance vyberte 2. Můžete také nastavit velikost virtuálního počítače na Extra Small.

Snímek obrazovky znázorňující instance Počet instancí je nastavený na hodnotu 2 a velikost V M je nastavená na Mimořádně malá.

Uložte změny.

V Průzkumník řešení klikněte pravým tlačítkem na projekt ChatService. Vyberte Publikovat.

Snímek obrazovky znázorňující Průzkumník řešení Možnost Publikovat je vybraná v místní nabídce Chatovací služba.

Pokud do Windows Azure publikujete poprvé, musíte si stáhnout přihlašovací údaje. V průvodci publikováním klikněte na Přihlásit se a stáhněte si přihlašovací údaje. Zobrazí se výzva, abyste se přihlásili k Azure Portal Windows a stáhli soubor nastavení publikování.

Snímek obrazovky s dialogovým oknem Publikovat windows Aplikace Azure Přihlášení ke stažení přihlašovacích údajů je červeně zakroužkované.

Klikněte na Importovat a vyberte stažený soubor nastavení publikování.

Klikněte na Next (Další). V dialogovém okně Nastavení publikování v části Cloudová služba vyberte cloudovou službu, kterou jste vytvořili dříve.

Snímek obrazovky se stránkou Nastavení publikování Ve Windows Azure

Klikněte na Publikovat. Nasazení aplikace a spuštění virtuálních počítačů může trvat několik minut.

Když teď spustíte chatovací aplikaci, instance rolí komunikují prostřednictvím Azure Service Bus pomocí tématu Služby Service Bus. Téma je fronta zpráv, která umožňuje více odběratelům.

Backplane automaticky vytvoří téma a předplatná. Pokud chcete zobrazit odběry a aktivitu zpráv, otevřete Azure Portal, vyberte obor názvů služby Service Bus a klikněte na Témata.

Snímek obrazovky s navigační nabídkou s vybranými tématy

Několik minut trvá, než se aktivita zpráv zobrazí na řídicím panelu.

Snímek obrazovky znázorňující graf aktivit odběru a zpráv na časové ose

SignalR spravuje životnost tématu. Pokud je vaše aplikace nasazená, nepokoušejte se ručně odstraňovat témata ani měnit nastavení tématu.

Poradce při potížích

System.InvalidOperationException Jediná podporovaná úroveň IsolationLevel je IsolationLevel.Serializable.

K této chybě může dojít, pokud je úroveň transakce pro operaci nastavená na jinou hodnotu než Serializable. Ověřte, že se neprovádí žádné operace s jinými úrovněmi transakcí.