Ćwiczenie — Wysyłanie żądań za pośrednictwem połączenia hybrydowego usługi Azure Relay
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.
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
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>";
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ń.
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"); };
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);
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]); }
Wyszukaj komentarz „// Open the listener” (Otwórz odbiornik). Od razu po komentarzu dodaj następujący kod:
await listener.OpenAsync(); Console.WriteLine("Server listening");
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.
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
W oknie PLIKI wybierz pozycję Program.cs.
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>";
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.
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);
Wyszukaj komentarz „// Send the request” (Wyślij żądanie). Od razu po komentarzu dodaj następujący kod:
var response = await client.SendAsync(request);
Wyszukaj komentarz „// Display the result” (Wyświetl wynik). Od razu po komentarzu dodaj następujący kod:
Console.WriteLine(await response.Content.ReadAsStringAsync());
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.
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
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.
Jeśli zostanie wyświetlony monit o wybranie katalogu, wybierz pozycję Piaskownica witryny Microsoft Learn.
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.
Rozmieść okna przeglądarki w taki sposób, aby obydwa były widoczne.
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.
Aby zamknąć aplikację nadawcy, naciśnij klawisz Enter. Możesz ponownie uruchomić aplikację, aby sprawdzić inne nazwy. Po zakończeniu zamknij okno przeglądarki.
Aby zamknąć aplikację odbiornika, naciśnij klawisze Ctrl+C.