Esercizio - Inviare richieste tramite una connessione ibrida di Inoltro di Azure

Completato

Il codice nelle app client deve connettersi ed eseguire l'autenticazione con Inoltro di Azure prima che le app possano inviare e ricevere messaggi.

È stato creato un inoltro per il servizio di verifica del credito. Si vuole ora abilitare il componente listener locale per la connessione all'inoltro, in modo che possa ricevere richieste e inviare risposte. Si vuole anche completare il codice nell'app client, che invia le richieste di verifica del credito all'inoltro e attenderà le risposte. Connettendosi al servizio di inoltro in questo modo, il servizio viene esposto a componenti nel cloud, senza dover aprire una porta nel firewall locale. Questo approccio permette di proteggere il servizio di verifica del credito.

In questa unità si scriverà il codice di Inoltro di Azure nelle applicazioni mittente e listener.

Clonare le app di esempio

Sono disponibili due app da riga di comando che inviano messaggi all'inoltro creato in precedenza e saranno in ascolto di messaggi dall'inoltro. La maggior parte del codice è già stata creata, ma è necessario aggiungere il codice di Inoltro di Azure alle app. Per iniziare, ottenere il codice:

  • In Azure Cloud Shell a destra usare git per clonare le app di esempio:

    git clone https://github.com/MicrosoftDocs/mslearn-expose-hybrid-services-with-azure-relay.git
    

Configurare l'app listener

Assicurarsi prima di tutto che l'app listener sia in grado di connettersi all'inoltro. L'app richiede l'indirizzo dello spazio dei nomi, il nome della connessione ibrida, il nome della chiave e la chiave di connessione primaria, che è stata salvata in precedenza in un file di testo.

  1. Passare alla directory del codice di avvio per l'app listener, quindi avviare l'editor di codice:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener
    code Program.cs
    
  2. Nel codice cercare il commento "// Details of the Azure Relay". Aggiungere il codice seguente subito dopo il commento:

    private const string RelayNamespace = "<namespace>.servicebus.windows.net";
    private const string ConnectionName = "creditcheckconnection";
    private const string KeyName = "RootManageSharedAccessKey";
    private const string Key = "<your key here>";
    
  3. Nel codice sostituire <namespace> con il nome dell'inoltro creato in precedenza, copiare la chiave dal file AccessKeys.txt salvato e quindi incollarla per sostituire <your key here>.

L'app listener ha ora tutte le informazioni necessarie per connettersi ed eseguire l'autenticazione con l'inoltro in Azure.

Rispondere alle richieste nell'app listener

È necessario aggiungere il servizio di verifica del credito all'inoltro come listener, in modo che possa ricevere le richieste inviate all'inoltro. Il codice deve configurare il listener per la sottoscrizione di eventi, l'elaborazione di tutte le richieste e la formulazione delle risposte. Il servizio di verifica del credito, ad esempio, deve ottenere il nome dalla richiesta e quindi rispondere con la cronologia del credito per la persona. Dopo aver configurato il listener, chiamare il metodo OpenAsync() per avviare l'ascolto delle richieste.

  1. Nel file di codice Program.cs per l'app listener cercare il commento "// Subscribe to the status events". Aggiungere il codice seguente subito dopo il commento:

    listener.Connecting += (o, e) => { Console.WriteLine("Connecting"); };
    listener.Offline += (o, e) => { Console.WriteLine("Credit check service is offline"); };
    listener.Online += (o, e) => { Console.WriteLine("Credit check service is online"); };
    
  2. Cercare il commento "// Obtain the name from the request". Aggiungere il codice seguente subito dopo il commento:

    TextReader tr = new StreamReader(context.Request.InputStream);
    String requestedName = tr.ReadToEnd();
    Console.WriteLine("A request was received to check credit for: " + requestedName);
    
  3. Cercare il commento "// Formulate and send the response". Aggiungere il codice seguente subito dopo il commento:

    context.Response.StatusCode = HttpStatusCode.OK;
    context.Response.StatusDescription = "Credit check successful";
    using (var sw = new StreamWriter(context.Response.OutputStream))
    {
        sw.WriteLine("Credit check for {0}: {1}", requestedName, creditStatuses[index]);
    }
    
  4. Cercare il commento "// Open the listener". Aggiungere il codice seguente subito dopo il commento:

    await listener.OpenAsync();
    Console.WriteLine("Server listening");
    
  5. Per salvare le modifiche, premere CTRL+S e quindi CTRL+Q per chiudere l'editor.

Configurare l'app mittente

Le app che vogliono verificare il record di credito di un cliente inviano una richiesta all'inoltro, che la invia al listener. Per quanto riguarda il listener, è necessario configurare l'app mittente con i dettagli di connessione per l'inoltro.

  1. In Cloud Shell passare alla directory del codice di avvio per l'app mittente e quindi avviare l'editor di codice:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/sender
    code Program.cs
    
  2. Nella finestra FILE selezionare Program.cs.

  3. Cercare il commento "// Details of the Azure Relay". Aggiungere il codice seguente subito dopo il commento:

    private const string RelayNamespace = "<namespace>.servicebus.windows.net";
    private const string ConnectionName = "creditcheckconnection";
    private const string KeyName = "RootManageSharedAccessKey";
    private const string Key = "<your key here>";
    
  4. Nel codice sostituire <namespace> con il nome dell'inoltro creato in precedenza, copiare la chiave dal file AccessKeys.txt salvato e quindi incollarla per sostituire <your key here>.

Suggerimento

Non dimenticare di eliminare il AccessKeys.txt. Nel codice di produzione mantenere questi valori in una posizione sicura, ad esempio Azure Key Vault.

L'app mittente ha ora tutte le informazioni necessarie per connettersi ed eseguire l'autenticazione nell'inoltro in Azure.

Inviare richieste dall'app mittente

Per richiedere una verifica del credito, l'app mittente invia un nome in una richiesta HTTP GET all'inoltro. Si scriverà ora il codice che formula questa richiesta.

  1. Nel file di codice Program.cs per l'app mittente cercare il commento "// Create an HttpClient and formulate the request". Aggiungere il codice seguente subito dopo il commento:

    var client = new HttpClient();
    var request = new HttpRequestMessage()
    {
        RequestUri = uri,
        Method = HttpMethod.Get,
        Content = new StringContent(name)
    };
    request.Headers.Add("ServiceBusAuthorization", token);
    
  2. Cercare il commento "// Send the request". Aggiungere il codice seguente subito dopo il commento:

    var response = await client.SendAsync(request);
    
  3. Cercare il commento "// Display the result". Aggiungere il codice seguente subito dopo il commento:

    Console.WriteLine(await response.Content.ReadAsStringAsync());
    
  4. Per salvare le modifiche, premere CTRL+S e quindi CTRL+Q per chiudere l'editor.

Avviare le app

Le app listener e mittente sono state completate. È ora possibile eseguire entrambe le app, usare il mittente per richiedere una verifica del credito e quindi osservare i risultati in entrambe le app. Per eseguire entrambe le app insieme, si userà una seconda istanza di Cloud Shell in cui ospitare il mittente.

  1. Per compilare ed eseguire l'app listener In Cloud Shell, eseguire questi comandi:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener
    dotnet run
    
  2. Quando si riceve il messaggio che indica che il server è in ascolto, è possibile avviare il mittente. Aprire una nuova istanza del browser e passare alla pagina Benvenuto in Azure Cloud Shell.

  3. Se viene chiesto di selezionare una directory, scegliere Microsoft Learn Sandbox.

  4. Per compilare ed eseguire l'app mittente, eseguire questi comandi:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/sender
    dotnet run
    

Testare le app

Ora che le app sono entrambe in esecuzione in istanze separate di Cloud Shell, è possibile testarle verificando un record di credito.

  1. Disporre le finestre del browser in modo che sia possibile visualizzarle entrambe.

  2. Nell'app mittente digitare un nome e quindi premere INVIO.

    Nell'app listener dovrebbe essere visualizzato il nome immesso.

    La risposta dal listener viene visualizzata nell'app mittente con il risultato della verifica del credito.

  3. Per uscire dall'app mittente, premere INVIO. È possibile eseguire di nuovo l'app per verificare altri nomi. Al termine, chiudere la finestra del browser.

  4. Per uscire dall'app listener, premere CTRL+C.