Ćwiczenie — Wysyłanie żądań za pośrednictwem połączenia hybrydowego usługi Azure Relay

Ukończone

Aby aplikacje mogły wysyłać i odbierać komunikaty, kod w aplikacjach klienckich musi nawiązać połączenie z usługą Azure Relay i uwierzytelnić się w niej.

Masz już przekaźnik dla swojej usługi sprawdzania środków. Teraz chcesz, aby Twój lokalny składnik odbiornika mógł łączyć się z tym przekaźnikiem, co umożliwi mu odbieranie żądań i wysyłanie odpowiedzi. Chcesz również ukończyć kod w aplikacji klienckiej, który wysyła żądania sprawdzania środków do przekaźnika i czeka na odpowiedzi. Łącząc się w ten sposób z usługą przekaźnika, uwidaczniasz usługę składnikom w chmurze bez konieczności otwierania portu w zaporze lokalnej. Takie podejście pomaga chronić usługę sprawdzania środków.

W tej lekcji napiszesz kod usługi Azure Relay zarówno w aplikacjach nadawcy, jak i odbiornika.

Klonowanie przykładowych aplikacji

Masz dwie aplikacje wiersza polecenia, które wysyłają komunikaty do i nasłuchują komunikatów z utworzonego wcześniej przekaźnika. Większość kodu jest gotowa, jednak musisz jeszcze dodać do aplikacji kod usługi Azure Relay. Zacznijmy od pobrania kodu:

  • W usłudze Azure Cloud Shell po prawej stronie użyj polecenia git , aby sklonować przykładowe aplikacje:

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

Konfigurowanie aplikacji odbiornika

Najpierw upewnij się, że aplikacja odbiornika może nawiązać połączenie z przekaźnikiem. Aplikacja potrzebuje adresu przestrzeni nazw, nazwy połączenia hybrydowego, nazwy klucza i podstawowego klucza połączenia, które zostały zapisane wcześniej w pliku tekstowym.

  1. Zmień katalog na kod początkowy aplikacji odbiornika, a następnie uruchom edytor kodu:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener
    code Program.cs
    
  2. W kodzie poszukaj komentarza „// Details of the Azure Relay” (Szczegóły usługi Azure Relay). Od razu po komentarzu dodaj następujący kod:

    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. W kodzie zastąp <namespace> ciąg nazwą utworzonego wcześniej przekaźnika, a następnie skopiuj klucz z zapisanego pliku AccessKeys.txt i wklej go, aby zastąpić <your key here>element .

Aplikacja odbiornika ma teraz wszystkie informacje potrzebne do nawiązania połączenia i uwierzytelnienia przy użyciu przekaźnika na platformie Azure.

Odpowiadanie na żądania w aplikacji odbiornika

Usługę sprawdzania środków musisz dodać do przekaźnika jako odbiornik, aby otrzymywała ona żądania wysyłane do przekaźnika. Twój kod musi skonfigurować odbiornik tak, aby subskrybował zdarzenia, przetwarzał wszystkie żądania i formułował odpowiedzi. Usługa sprawdzania środków musi na przykład uzyskać nazwę z żądania, a następnie odpowiedzieć za pomocą historii środków dla tej osoby. Po skonfigurowaniu odbiornika wywołaj metodę OpenAsync(), aby rozpocząć nasłuchiwanie żądań.

  1. W pliku kodu Program.cs dla aplikacji odbiornika odszukaj komentarz „// Subscribe to the status events” (Subskrybuj zdarzenia stanu). Od razu po komentarzu dodaj następujący kod:

    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. Wyszukaj komentarz „// Obtain the name from the request” (Uzyskaj nazwę z żądania). Od razu po komentarzu dodaj następujący kod:

    TextReader tr = new StreamReader(context.Request.InputStream);
    String requestedName = tr.ReadToEnd();
    Console.WriteLine("A request was received to check credit for: " + requestedName);
    
  3. Wyszukaj komentarz „//Formulate and send the response” (Sformułuj i wyślij odpowiedź). Od razu po komentarzu dodaj następujący kod:

    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. Wyszukaj komentarz „// Open the listener” (Otwórz odbiornik). Od razu po komentarzu dodaj następujący kod:

    await listener.OpenAsync();
    Console.WriteLine("Server listening");
    
  5. Aby zapisać zmiany, naciśnij klawisze Ctrl+S, a następnie naciśnij klawisze Ctrl+Q, aby zamknąć edytor.

Konfigurowanie aplikacji nadawcy

Aplikacje, które chcą sprawdzić rekord środków klienta, wysyłają żądanie do przekaźnika, który przekazuje je do odbiornika. Podobnie jak w przypadku odbiornika, należy skonfigurować aplikację nadawcy za pomocą szczegółów połączenia dla przekaźnika.

  1. W usłudze Cloud Shell zmień katalog na kod początkowy dla aplikacji nadawcy, a następnie uruchom edytor kodu:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/sender
    code Program.cs
    
  2. W oknie PLIKI wybierz pozycję Program.cs.

  3. Poszukaj komentarza „// Details of the Azure Relay” (Szczegóły usługi Azure Relay). Od razu po komentarzu dodaj następujący kod:

    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. W kodzie zastąp <namespace> ciąg nazwą utworzonego wcześniej przekaźnika, a następnie skopiuj klucz z zapisanego wcześniej pliku AccessKeys.txt i wklej go, aby zastąpić <your key here>element .

Napiwek

Nie zapomnij usunąć pliku AccessKeys.txt. W kodzie produkcyjnym zachowaj te wartości w bezpiecznej lokalizacji, takiej jak usługa Azure Key Vault.

Aplikacja nadawcy ma teraz wszystkie informacje potrzebne do nawiązania połączenia i uwierzytelnienia przy użyciu przekaźnika na platformie Azure.

Wysyłanie żądań z aplikacji nadawcy

Aby zażądać sprawdzenia środków, aplikacja nadawcy wysyła nazwę w żądaniu HTTP GET do przekaźnika. Napiszmy kod, który formułuje to żądanie.

  1. W pliku kodu Program.cs dla aplikacji nadawcy wyszukaj komentarz „// Create an HttpClient and formulate the request” (Utwórz klienta HttpClient i sformułuj żądanie). Od razu po komentarzu dodaj następujący kod:

    var client = new HttpClient();
    var request = new HttpRequestMessage()
    {
        RequestUri = uri,
        Method = HttpMethod.Get,
        Content = new StringContent(name)
    };
    request.Headers.Add("ServiceBusAuthorization", token);
    
  2. Wyszukaj komentarz „// Send the request” (Wyślij żądanie). Od razu po komentarzu dodaj następujący kod:

    var response = await client.SendAsync(request);
    
  3. Wyszukaj komentarz „// Display the result” (Wyświetl wynik). Od razu po komentarzu dodaj następujący kod:

    Console.WriteLine(await response.Content.ReadAsStringAsync());
    
  4. Aby zapisać zmiany, naciśnij klawisze Ctrl+S, a następnie naciśnij klawisze Ctrl+Q, aby zamknąć edytor.

Uruchamianie aplikacji

Aplikacje odbiornika i nadawcy zostały ukończone. Teraz możesz uruchomić obie aplikacje, użyć nadawcy, aby zażądać sprawdzenia środków, a następnie obserwować wyniki w obu aplikacjach. Aby uruchomić obie aplikacje jednocześnie, użyj drugiego wystąpienia usługi Cloud Shell do hostowania nadawcy.

  1. W usłudze Cloud Shell, aby skompilować i uruchomić aplikację odbiornika, uruchom następujące polecenia:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener
    dotnet run
    
  2. Gdy zostanie wyświetlony komunikat „Server listening” (Serwer nasłuchuje), możesz uruchomić nadawcę. Otwórz nowe wystąpienie przeglądarki i przejdź do strony Witamy w usłudze Azure Cloud Shell.

  3. Jeśli zostanie wyświetlony monit o wybranie katalogu, wybierz pozycję Piaskownica witryny Microsoft Learn.

  4. Aby skompilować i uruchomić aplikację nadawcy, uruchom następujące polecenia:

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

Testowanie aplikacji

Teraz, gdy aplikacje zostały uruchomione w osobnych wystąpieniach usługi Cloud Shell, przetestujmy je, sprawdzając rekord środków.

  1. Rozmieść okna przeglądarki w taki sposób, aby obydwa były widoczne.

  2. W aplikacji nadawcy wpisz nazwę, a następnie naciśnij klawisz Enter.

    W aplikacji odbiornika powinna zostać wyświetlona wprowadzona nazwa.

    W aplikacji nadawcy jest wyświetlana odpowiedź z odbiornika z wynikiem sprawdzenia środków.

  3. Aby zamknąć aplikację nadawcy, naciśnij klawisz Enter. Możesz ponownie uruchomić aplikację, aby sprawdzić inne nazwy. Po zakończeniu zamknij okno przeglądarki.

  4. Aby zamknąć aplikację odbiornika, naciśnij klawisze Ctrl+C.