Exercício – Enviar pedidos através de uma ligação híbrida do Azure Relay

Concluído

O código nas aplicações cliente tem de ser ligado e autenticado no Azure Relay para que as aplicações possam enviar e receber mensagens.

Criou um reencaminhamento para o seu serviço de verificação de crédito. Agora, quer ativar o componente de serviço de escuta no local para ligar ao reencaminhamento, para que possa receber pedidos e enviar respostas. Você também deseja completar o código no aplicativo cliente, que envia solicitações de verificação de crédito para o retransmissor e aguarda respostas. Ao ligar ao serviço de reencaminhamento desta forma, expõe o serviço aos componentes na cloud, sem ter de abrir uma porta na firewall no local. Esta abordagem ajuda a proteger o serviço de verificação de crédito.

Nesta unidade, você escreve o código do Azure Relay nos aplicativos remetente e ouvinte.

Clonar as aplicações de exemplo

Você tem dois aplicativos de linha de comando que enviam mensagens e escutam mensagens da retransmissão criada anteriormente. A maioria do código está concluída, mas tem de adicionar o código do Azure Relay às aplicações. Vamos começar por obter o código:

  • No Azure Cloud Shell à direita, use git para clonar os aplicativos de exemplo:

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

Configurar a aplicação de serviço de escuta

Primeiro, vamos garantir que a aplicação de serviço de escuta consegue ligar ao reencaminhamento. A aplicação precisa do endereço do espaço de nomes, do nome da ligação híbrida, do nome chave e da chave de ligação primária, que guardou anteriormente num ficheiro de texto.

  1. Altere o diretório para o código inicial do aplicativo ouvinte e, em seguida, inicie o editor de código:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener
    code Program.cs
    
  2. No código, procure o comentário "// Details of the Azure Relay". Imediatamente a seguir ao comentário, adicione este código:

    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. No código, substitua <namespace> pelo nome da retransmissão criada anteriormente, copie a chave do arquivo AccessKeys.txt salvo e cole-a para substituir <your key here>.

A aplicação de serviço de escuta tem agora todas as informações de que precisa para se ligar e autenticar no reencaminhamento no Azure.

Responder aos pedidos na aplicação de serviço de escuta

Tem de adicionar o serviço de verificação de crédito ao reencaminhamento como serviço de escuta, para receber os pedidos enviados para o reencaminhamento. O código tem de configurar o serviço de escuta para subscrever eventos, processar pedidos e formular respostas. O serviço de verificação de crédito, por exemplo, tem de obter o nome do pedido e, em seguida, responder com o histórico de crédito para essa pessoa. Quando tiver configurado o serviço de escuta, chame o método OpenAsync() para começar a escutar os pedidos.

  1. No ficheiro de código Program.cs da aplicação de serviço de escuta, procure o comentário "// Subscribe to the status events". Imediatamente a seguir ao comentário, adicione este código:

    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. Procure o comentário "// Obtain the name from the request". Imediatamente a seguir ao comentário, adicione este código:

    TextReader tr = new StreamReader(context.Request.InputStream);
    String requestedName = tr.ReadToEnd();
    Console.WriteLine("A request was received to check credit for: " + requestedName);
    
  3. Procure o comentário "// Formulate and send the response". Imediatamente a seguir ao comentário, adicione este código:

    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. Procure o comentário "// Open the listener". Imediatamente a seguir ao comentário, adicione este código:

    await listener.OpenAsync();
    Console.WriteLine("Server listening");
    
  5. Para guardar as alterações, prima Ctrl+S e, em seguida, prima Ctrl+Q para fechar o editor.

Configurar a aplicação de remetente

As aplicações que queiram verificar o registo de crédito de um cliente enviam um pedido para o reencaminhamento, que o reencaminha para o serviço de escuta. Quanto ao serviço de escuta, configura a aplicação de remetente com os detalhes de ligação do reencaminhamento.

  1. No Cloud Shell, altere o diretório para o código de arranque da aplicação de remetente e, em seguida, inicie o editor de código:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/sender
    code Program.cs
    
  2. Na janela FILES, selecione Program.cs.

  3. Procure o comentário "// Details of the Azure Relay". Imediatamente a seguir ao comentário, adicione este código:

    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. No código, substitua <namespace> pelo nome da retransmissão criada anteriormente e, em seguida, copie a chave do arquivo AccessKeys.txt que você salvou anteriormente e cole-a para substituir <your key here>.

Gorjeta

Não se esqueça de excluir o AccessKeys.txt. No código de produção, mantenha esses valores em um local seguro, como o Azure Key Vault.

A aplicação de remetente tem agora todas as informações de que precisa para se ligar e autenticar no reencaminhamento no Azure.

Enviar pedidos a partir da aplicação de remetente

Para pedir uma verificação de crédito, a aplicação de remetente envia um nome num pedido HTTP GET para o reencaminhamento. Vamos escrever o código que formula esse pedido.

  1. No ficheiro de código Program.cs da aplicação de remetente, procure o comentário "// Create an HttpClient and formulate the request". Imediatamente a seguir ao comentário, adicione este código:

    var client = new HttpClient();
    var request = new HttpRequestMessage()
    {
        RequestUri = uri,
        Method = HttpMethod.Get,
        Content = new StringContent(name)
    };
    request.Headers.Add("ServiceBusAuthorization", token);
    
  2. Procure o comentário "// Send the request". Imediatamente a seguir ao comentário, adicione este código:

    var response = await client.SendAsync(request);
    
  3. Procure o comentário "// Display the result". Imediatamente a seguir ao comentário, adicione este código:

    Console.WriteLine(await response.Content.ReadAsStringAsync());
    
  4. Para guardar as alterações, prima Ctrl+S e, em seguida, prima Ctrl+Q para fechar o editor.

Iniciar as aplicações

As aplicações de serviço de escuta e remetente estão concluídas. Agora pode executar ambas as aplicações, utilizar o remetente para pedir uma verificação de crédito e, em seguida, observar os resultados em ambas as aplicações. Para executar ambos os aplicativos ao mesmo tempo, use uma segunda instância do Cloud Shell para hospedar o remetente.

  1. No Cloud Shell, para criar e executar a aplicação de serviço de escuta, execute estes comandos:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener
    dotnet run
    
  2. Quando receber a mensagem "Servidor a escutar", pode iniciar o remetente. Abra uma nova instância do browser e aceda à página Bem-vindo ao Azure Cloud Shell.

  3. Se lhe for pedido para selecionar um diretório, selecione Microsoft Learn Sandbox.

  4. Para criar e executar a aplicação de remetente, execute estes comandos:

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

Testar as aplicações

Agora que as aplicações estão em execução em instâncias separadas do Cloud Shell, vamos testá-las através da verificação de um registo de crédito.

  1. Organize as janelas do browser para que possa ver ambas.

  2. Na aplicação de remetente, escreva um nome e, em seguida, prima Enter.

    Na aplicação de serviço de escuta, o nome introduzido deverá ser apresentado.

    Na aplicação de remetente, a resposta do serviço de escuta aparece com o resultado da verificação de crédito.

  3. Para sair da aplicação de remetente, prima Enter. Pode executar a aplicação novamente para verificar outros nomes. Quando terminar, feche a janela do browser.

  4. Para sair da aplicação de serviço de escuta, selecione Ctrl+C.