gRPC 是由 Google 推出來的一個資料傳輸的框架,是架構在 HTTP/2 的基礎上,去年 Azure 上的 App Service 可以支援這架構的程式,但是僅限於 Linux 的 App Service,就在這幾天的微軟開發者大會 Build 上終於發佈 Windows 的 App Service 也可以支援了,於是就來實做看看,並且記錄一下要注意的事項。
![](https://dotblogsfile.blob.core.windows.net/user/anyun/e4f8dd24-6b6c-4054-8e00-d227007869b0/1716625182.png.png)
實做
程式範例就簡單的建立基本範本的 gRPC 專案。
![](https://dotblogsfile.blob.core.windows.net/user/anyun/e4f8dd24-6b6c-4054-8e00-d227007869b0/1716621765.png.png)
不需要特別修改直接執行並且用 Postman 測試可以正常運作。
![](https://dotblogsfile.blob.core.windows.net/user/anyun/e4f8dd24-6b6c-4054-8e00-d227007869b0/1716621927.png.png)
接下來建立 App Service 的時候要注意要選擇 .NET 8 以及方案要選擇 Premium v3
,不然會無法支援 gRPC。
之後可以降為 Standard 定價層,但是如果直接建立 Standard 定價層有可能部署出來的還是舊的 Windows 版本,就會導致無法支援
![](https://dotblogsfile.blob.core.windows.net/user/anyun/e4f8dd24-6b6c-4054-8e00-d227007869b0/1716622132.png.png)
接下來是最重要的部分,到 App Service 組態內調整設定,有三個必要的調整:
- HTTP 版本請選擇 2.0
- HTTP 2.0 Proxy 選擇開啟
- 端對端 TLS 加密選擇開啟 (沒有這選項的話代表前面建立的 App Service Plan 是錯誤的)
![](https://dotblogsfile.blob.core.windows.net/user/anyun/e4f8dd24-6b6c-4054-8e00-d227007869b0/1716622878.png.png)
之後把程式部署上去之後測試,可以正確的得到回傳的結果了。
![](https://dotblogsfile.blob.core.windows.net/user/anyun/e4f8dd24-6b6c-4054-8e00-d227007869b0/1716623065.png.png)
結論
原本因為 Windows 架構上的關係一直沒辦法支援 gRPC ,一開始只能在 Linux 版的 App Service,這次的更新終於可以支援了,雖然還在 Preview 階段,目前得先建立 Premium v3 定價層才可以使用,後續可以再改成 Standard 定價層,但是反過來可能會不行,如果不行的話需要檢查建立出來的 Windows 版本要是 Microsoft Windows NT 10.0.20348.0
或以上才是可以支援的版本。
![](https://dotblogsfile.blob.core.windows.net/user/anyun/e4f8dd24-6b6c-4054-8e00-d227007869b0/1716625385.png.png)
也因為有開啟端對端 TLS 加密,所以也無法降到 Basic,所以目前最少需求會是 Standard 定價層才行。