Scale-out di SignalR con il bus di servizio di Azure (SignalR 1.x)

di Patrick Fletcher

Avviso

Questa documentazione non è per la versione più recente di SignalR. Esaminare ASP.NET Core SignalR.

In questa esercitazione si distribuirà un'applicazione SignalR in un ruolo Web di Windows Azure usando il backplane del bus di servizio per distribuire i messaggi a ogni istanza del ruolo.

Diagramma che illustra la relazione tra l'argomento dello spazio dei nomi del bus di servizio, i ruoli Web e i computer e gli account disponibili.

Prerequisiti:

Il backplane del bus di servizio è compatibile anche con il bus di servizio per Windows Server versione 1.1. Tuttavia, non è compatibile con la versione 1.0 del bus di servizio per Windows Server.

Prezzi

Il backplane del bus di servizio usa argomenti per inviare messaggi. Per informazioni sui prezzi più recenti, vedere Bus di servizio. Al momento della stesura di questo articolo, è possibile inviare 1.000.000 messaggi al mese per meno di $1. Il backplane invia un messaggio del bus di servizio per ogni chiamata di un metodo hub SignalR. Esistono anche alcuni messaggi di controllo per connessioni, disconnessioni, join o uscita da gruppi e così via. Nella maggior parte delle applicazioni, la maggior parte del traffico dei messaggi sarà chiamate al metodo hub.

Panoramica

Prima di passare all'esercitazione dettagliata, ecco una rapida panoramica delle operazioni che verranno eseguite.

  1. Usare windows portale di Azure per creare un nuovo spazio dei nomi del bus di servizio.

  2. Aggiungere questi pacchetti NuGet all'applicazione:

  3. Creare un'applicazione SignalR.

  4. Aggiungere il codice seguente a Global.asax per configurare il backplane:

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

Per ogni applicazione, selezionare un valore diverso per "NomeApp". Non usare lo stesso valore in più applicazioni.

Creare i servizi di Azure

Creare un servizio cloud, come descritto in Come creare e distribuire un servizio cloud. Seguire la procedura descritta nella sezione "Procedura: Creare un servizio cloud con Creazione rapida". Per questa esercitazione non è necessario caricare un certificato.

Screenshot del riquadro NUOVO con l'opzione Servizio cloud e l'icona evidenziati nell'applicazione, nonché un cerchio rosso.

Creare un nuovo spazio dei nomi del bus di servizio, come descritto in Come usare argomenti/sottoscrizioni del bus di servizio. Seguire la procedura descritta nella sezione "Creare uno spazio dei nomi del servizio".

Screenshot della schermata Aggiungi un nuovo spazio dei nomi con le voci immesse nei campi Nome spazio dei nomi e Area.

Nota

Assicurarsi di selezionare la stessa area per il servizio cloud e lo spazio dei nomi del bus di servizio.

Creare il progetto di Visual Studio

Avviare Visual Studio. Scegliere Nuovo progetto dal menu File.

Nella finestra di dialogo Nuovo progetto espandere Visual C#. In Modelli installati selezionare Cloud e quindi servizio cloud di Windows Azure. Mantenere .NET Framework 4.5 predefinito. Assegnare all'applicazione il nome ChatService e fare clic su OK.

Screenshot della schermata Nuovo progetto con l'opzione Visual C # del servizio cloud di Windows Azure evidenziata.

Nella finestra di dialogo Nuovo servizio cloud di Windows Azure selezionare ASP.NET ruolo Web MVC 4. Fare clic sul pulsante freccia destra (>) per aggiungere il ruolo alla soluzione.

Posizionare il puntatore del mouse sul nuovo ruolo, in modo che l'icona a forma di matita sia visibile. Fare clic su questa icona per rinominare il ruolo. Assegnare al ruolo il nome "SignalRChat" e fare clic su OK.

Screenshot della schermata Nuovo servizio cloud di Windows Azure con l'opzione Signal R Chat evidenziata nel riquadro della soluzione Servizio cloud di Windows Azure.

Nella procedura guidata Nuovo ASP.NET Progetto MVC 4 selezionare Applicazione Internet. Fare clic su OK. La creazione guidata progetto crea due progetti:

  • ChatService: questo progetto è l'applicazione Windows Azure. Definisce i ruoli di Azure e altre opzioni di configurazione.
  • SignalRChat: questo progetto è il progetto ASP.NET MVC 4.

Creare l'applicazione SignalR Chat

Per creare l'applicazione di chat, seguire la procedura descritta nell'esercitazione Introduzione con SignalR e MVC 4.

Usare NuGet per installare le librerie necessarie. Dal menu Strumenti selezionare Gestione pacchetti NuGet e quindi console di Gestione pacchetti. Nella finestra Console di Gestione pacchetti immettere i comandi seguenti:

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

Usare l'opzione -ProjectName per installare i pacchetti nel progetto MVC ASP.NET anziché nel progetto Windows Azure.

Configurare il backplane

Nel file Global.asax dell'applicazione aggiungere il codice seguente:

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

    RouteTable.Routes.MapHubs();
}

A questo momento è necessario ottenere la stringa di connessione del bus di servizio. Nella portale di Azure selezionare lo spazio dei nomi del bus di servizio creato e fare clic sull'icona Chiave di accesso.

Screenshot delle opzioni Crea, Chiave di accesso ed Elimina nello spazio dei nomi del bus di servizio con lo stato attivo sull'opzione Crea.

Copiare la stringa di connessione negli Appunti, quindi incollarla nella variabile connectionString .

Screenshot della schermata Access Key Connect to your namespace (Connetti chiave di accesso allo spazio dei nomi), che mostra i campi Stringa di connessione, Autorità di certificazione predefinita e Chiave predefinita.

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

Distribuisci in Azure

In Esplora soluzioni espandere la cartella Ruoli all'interno del progetto ChatService.

Screenshot dell'albero Esplora soluzioni che mostra l'opzione Signal R Chat contenuta nella cartella Ruoli del progetto servizio Chat.

Fare clic con il pulsante destro del mouse sul ruolo SignalRChat e scegliere Proprietà. Selezionare la scheda Configurazione . In Istanze selezionare 2. È anche possibile impostare le dimensioni della macchina virtuale su Extra Small.

Screenshot della sezione Istanze della scheda di configurazione, che mostra un valore 2 immesso nel campo Numero istanze e il campo Dimensioni M V impostato su Extra Small.

Salvare le modifiche.

In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ChatService. Selezionare Pubblica.

Screenshot del progetto del servizio chat della schermata Esplora soluzioni, con un menu a discesa con il pulsante destro del mouse che mostra la pagina Pubblica... Opzione.

Se si tratta della prima pubblicazione in Windows Azure, è necessario scaricare le credenziali. Nella procedura guidata Pubblica fare clic su "Accedi per scaricare le credenziali". Verrà richiesto di accedere a Windows portale di Azure e scaricare un file di impostazioni di pubblicazione.

Screenshot della scheda Pubblica windows applicazione Azure della schermata Accedi con il collegamento Accedi per scaricare le credenziali evidenziato.

Fare clic su Importa e selezionare il file delle impostazioni di pubblicazione scaricato.

Fare clic su Avanti. Nella finestra di dialogo Impostazioni di pubblicazione , in Servizio cloud selezionare il servizio cloud creato in precedenza.

Screenshot della scheda Impostazioni di Windows applicazione Azure pubblica, che mostra il campo Servizio cloud nella scheda Impostazioni comuni.

Fare clic su Pubblica. La distribuzione dell'applicazione e l'avvio delle macchine virtuali possono richiedere alcuni minuti.

Quando si esegue l'applicazione chat, le istanze del ruolo comunicano tramite bus di servizio di Azure usando un argomento del bus di servizio. Un argomento è una coda di messaggi che consente più sottoscrittori.

Il backplane crea automaticamente l'argomento e le sottoscrizioni. Per visualizzare le sottoscrizioni e l'attività dei messaggi, aprire la portale di Azure, selezionare lo spazio dei nomi del bus di servizio e fare clic su "Argomenti".

Screenshot del campo Servizio cloud selezionato che ora popola nella portale di Azure, con il campo Nome del servizio cloud evidenziato.

È necessario alcuni minuti per visualizzare l'attività del messaggio nel dashboard.

Screenshot del dashboard portale di Azure che visualizza la sequenza temporale dell'attività dei messaggi, che mostra una riga blu e viola per indicare diverse cronologie dei messaggi.

SignalR gestisce la durata dell'argomento. Purché l'applicazione venga distribuita, non provare a eliminare manualmente gli argomenti o modificare le impostazioni nell'argomento.