練習 - 透過 Azure 轉送混合式連線傳送要求
用戶端應用程式中的程式碼必須先連線到 Azure 轉送並向其進行驗證,應用程式才能傳送和接收訊息。
您已建立信用查核服務的轉送。 現在您想要讓內部部署接聽項元件連線到轉送,以便接收要求並傳送回應。 您也想要在用戶端應用程式中完成程式碼,這會將信用查核要求傳送到轉送並等候回應。 藉由以此方式連線到轉送服務,即可將服務公開給雲端中的元件,而不需要在內部部署防火牆上開啟連接埠。 這種方法可協助保護信用查核服務。
在本單元中,您會在傳送者和接聽項應用程式中撰寫 Azure 轉送程式碼。
複製範例應用程式
您有兩個命令列應用程式,分別會將訊息傳送到稍早建立的轉送,以及從轉送接聽訊息。 大部分的程式碼都已完成,但您必須將 Azure 轉送程式碼新增至應用程式。 讓我們從取得程式碼開始:
在右側的 Azure Cloud Shell 中,使用
git
來複製範例應用程式:git clone https://github.com/MicrosoftDocs/mslearn-expose-hybrid-services-with-azure-relay.git
設定接聽項應用程式
首先,讓我們確定接聽項應用程式可以連線到轉送。 應用程式需要稍早儲存在文字檔中的命名空間位址、混合式連線名稱、金鑰名稱和主要連線金鑰。
將目錄變更為接聽項應用程式的起始程式碼,然後啟動程式碼編輯器:
cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener code Program.cs
在程式碼中,尋找「// Details of the Azure Relay (Azure 轉送的詳細資料)」註解。 在註解後面緊接著新增此程式碼:
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>";
在程式碼中,以稍早建立的轉送名稱取代
<namespace>
、從儲存的 AccessKeys.txt 檔案複製金鑰,然後貼上以取代<your key here>
。
接聽項應用程式現在具有連線到 Azure 轉送並向其進行驗證所需的所有資訊。
回應接聽項應用程式中的要求
您必須將信用查核服務新增至轉送作為接聽項,以便接收傳送到轉送的要求。 程式碼必須設定接聽項來訂閱事件、處理任何要求,以及制訂回應。 例如,信用查核服務必須從要求取得名稱,然後以該人員的信用記錄回應。 當您設定接聽項時,呼叫 OpenAsync()
方法以開始接聽要求。
在接聽項應用程式的 Program.cs 程式碼檔案中,尋找「// Subscribe to the status events (訂閱狀態事件)」註解。 在註解後面緊接著新增此程式碼:
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"); };
尋找「// Obtain the name from the request (從要求取得名稱)」註解。 在註解後面緊接著新增此程式碼:
TextReader tr = new StreamReader(context.Request.InputStream); String requestedName = tr.ReadToEnd(); Console.WriteLine("A request was received to check credit for: " + requestedName);
尋找「// Formulate and send the response (制訂和傳送回應)」註解。 在註解後面緊接著新增此程式碼:
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]); }
尋找「// Open the listener (開啟接聽項)」註解。 在註解後面緊接著新增此程式碼:
await listener.OpenAsync(); Console.WriteLine("Server listening");
若要儲存變更,請選取 Ctrl+S,然後選取 Ctrl+Q 以關閉編輯器。
設定傳送者應用程式
想要查核客戶信用記錄的應用程式會將要求傳送到轉送,再將其轉寄到接聽項。 如同接聽項,您可以使用轉送的連線詳細資料來設定傳送者應用程式。
在 Cloud Shell 中,將目錄變更為傳送者應用程式的起始程式碼,然後啟動程式碼編輯器:
cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/sender code Program.cs
在 [檔案] 視窗中,選取 Program.cs。
尋找「// Details of the Azure Relay (Azure 轉送的詳細資料)」註解。 在註解後面緊接著新增此程式碼:
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>";
在程式碼中,以稍早建立的轉送名稱取代
<namespace>
、從稍早儲存的 AccessKeys.txt 檔案複製金鑰,然後貼上以取代<your key here>
。
提示
別忘了刪除 AccessKeys.txt。 在生產程式碼中,將這些值保留在安全的位置,例如 Azure Key Vault。
傳送者應用程式現在具有連線到 Azure 轉送並向其進行驗證所需的所有資訊。
從傳送者應用程式傳送要求
若要要求信用查核,傳送者應用程式會以 HTTP GET 要求將名稱傳送到轉送。 讓我們來撰寫制訂該要求的程式碼。
在傳送者應用程式的 Program.cs 程式碼檔案中,尋找「// Create an HttpClient and formulate the request (建立 HttpClient 並制訂要求)」註解。 在註解後面緊接著新增此程式碼:
var client = new HttpClient(); var request = new HttpRequestMessage() { RequestUri = uri, Method = HttpMethod.Get, Content = new StringContent(name) }; request.Headers.Add("ServiceBusAuthorization", token);
尋找「// Send the request (傳送要求)」註解。 在註解後面緊接著新增此程式碼:
var response = await client.SendAsync(request);
尋找「// Display the result (顯示結果)」註解。 在註解後面緊接著新增此程式碼:
Console.WriteLine(await response.Content.ReadAsStringAsync());
若要儲存變更,請選取 Ctrl+S,然後選取 Ctrl+Q 以關閉編輯器。
啟動應用程式
接聽項和傳送者應用程式已完成。 您現在可以執行這兩個應用程式、使用傳送者來要求信用查核,然後在這兩個應用程式中觀察結果。 若要同時執行這兩個應用程式,請使用第二個 Cloud Shell 執行個體來裝載傳送者。
在 Cloud Shell 中,若要建立並執行接聽項應用程式,請執行下列命令:
cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener dotnet run
當收到「伺服器正在接聽」訊息時,您可以啟動傳送者。 開啟瀏覽器的新執行個體,然後前往歡迎使用 Azure Cloud Shell (英文) 頁面。
如果系統要求選取目錄,請選擇 [Microsoft Learn 沙箱]。
若要建立並執行傳送者應用程式,請執行下列命令:
cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/sender dotnet run
測試應用程式
現在兩個應用程式都在 Cloud Shell 的個別執行個體中執行,讓我們藉由查核信用記錄來進行測試。
排列瀏覽器視窗,供可以看到兩者。
在傳送者應用程式中鍵入名稱,然後按 Enter。
在接聽程式應用程式中,您輸入的名稱應隨即出現。
在傳送者應用程式中,來自接聽程式的回覆會隨即與信用查核的結果一起出現。
若要結束傳送者應用程式,請按 Enter。 您可以再次執行應用程式以查核其他名稱。 完成後,請關閉瀏覽器視窗。
若要結束接聽程式應用程式,請選取 Ctrl+C。