.Net 8.0 下的新RPC,IceRPC之使用Dev Containers進行 .NET QUIC 精簡開發

xlgwr發表於2024-05-03

作者引言

很高興啊,我們來到了IceRPC之使用Dev Containers進行 .NET QUIC 精簡開發,主要是一篇指引,如何使用開發容器做為開發環境,進行開發IceRPC,可適用於任務應用的開發

使用 Dev Containers 進行 .NET QUIC 精簡開發

主要是引導大家,如何使用開發容器Development Containers,進行.Net下的QUIC的開發。

QUIC 是一種考慮到效能和安全性的現代傳輸協議,是遠端過程呼叫(RPCs)的理想選擇。 然而,利用 QUIC 功能開發 .NET 應用程式,可能具有挑戰性,因為.NET 對跨平臺 QUIC 的支援有限。例如:.NET QUIC 實現需要 Linux 上的 libmsquic 庫,並且截至撰寫本文時還未支援 Windows 10 或 macOS。因此,深入研究基於 QUIC 的應用程式開發的最有效方法之一是利用開發容器development containers

開發容器(簡稱dev container) 允許將容器作為功能齊全的開發環境。它可用於執行應用程式、分離使用程式碼庫所需的工具、庫或執行時,並幫助持續整合和測試。

https://containers.dev

這些容器能夠建立行動式、一致的開發環境 - 解決 QUIC 開發.NET相關的特定平臺的挑戰,並確保團隊中的所有開發人員都在使用相同的工具和庫。

本篇將引導設定,專門用於開發 .NET 應用程式的開發容器,應用程式使用 QUIC,然後說明,如何使用此容器執行簡單的 QUIC 伺服器和客戶端。涉及開發容器的整體概念,可以應用於任何應用!

先決條件

Docker

Docker 是一個用於構建和共享容器化應用程式的工具。 Docker 開始使用的最佳方法是在電腦機器上安裝 Docker Desktop.

裝 Docker Desktop 後,啟動它並確保其執行。可以透過在終端中執行以下命令來驗證 Docker 是否正確安裝以及 Docker 守護程式是否正在執行:

docker info

Visual Studio Code

雖然可以使用任何支援 dev 容器的編輯器,但本篇將假設正在使用 Visual Studio Code(VS Code)。 因此,請確保已下載 VS Code 並安裝了 Dev Containers 擴充套件:

  • VS Code
  • Dev Containers

1. 建立 .devcontainer 目錄

既然我們已經安裝並執行了 Docker,可以開始配置我們的開發環境了。建立新目錄,或導航到要設定開發容器的現有專案。

導航到專案並建立一個頂級目錄,可以在其中儲存開發環境配置檔案和程式碼。

mkdir .devcontainer
cd .devcontainer

2. 建立 devcontainer.json

.devcontainer 資料夾中建立 devcontainer.json 檔案。該檔案將定義開發環境的配置。雖然可以使用 devcontainer.json 檔案來指定各種設定,但我們只會指示它使用我們將在下一步中建立的 Dockerfile ,並指定一些執行引數。可以在Dev Container specification中找到其他配置選項。

{
    "name": "QUIC Development Container",
    "build": {
        "dockerfile": "Dockerfile"
    }
}

這個 devcontainer.json 做了什麼?

  • 名稱 name 屬性指定開發容器的名稱。當開發容器處於活動狀態時,該名稱會顯示在 VS 程式碼狀態列中。
  • 構建 build 屬性指定將用於構建開發容器的 Dockerfile 路徑。在這種情況下,Dockerfiledevcontainer.json 檔案位於同一目錄中,並命名為Dockerfile

3. 建立 Dockerfile

下一步, 在 .devcontainer 目錄下建立 Dockerfile 檔案。 該檔案包含構建 Docker 映像的說明,這是開發容器的基礎。

FROM mcr.microsoft.com/devcontainers/dotnet:8.0-jammy

# Install libmsquic
RUN wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
    && dpkg -i packages-microsoft-prod.deb \
    && rm packages-microsoft-prod.deb \
    && apt-get update \
    && apt install libmsquic -y

這個 Dockerfile 做了什麼?

  • mcr.microsoft.com/devcontainers/dotnet:8.0-jammy 指定開發容器的基本映像。這是一個包含 .NET SDK 和執行時,以及所需的其他工具和庫 .NET 開發的 Linux 映像。
  • libmsquic Linux 平臺上的 .NET QUIC 庫。可以在QUIC in .NET中瞭解有關 QUIC 的更多資訊.

4. QUIC 和 證書

由於 QUIC 是一種安全的運輸工具,因此需要提供證書。為了簡單起見,在本篇中,我們將在下一節中使用 IceRPC 新建專案模板提供的證書。請注意,這些證書不適合生產使用,在部署應用程式時應替換為自己的證書

5. 使用 Dev Container

為了使用 QUIC 開發容器, 我們使用 icerpc-slice-* .NET 模板,來生成一個透過 QUIC 進行通訊的服務端和一個客戶端。還為我們處理 SSL 證書,是快速驗證開發容器的絕佳起點。

dotnet new install IceRPC.Templates
dotnet new icerpc-slice-client -o ExampleClient --transport quic
dotnet new icerpc-slice-server -o ExampleServer --transport quic

現在我們已經建立了伺服器和客戶端,可以在 VS Code 中開啟我們的專案,並使用 Ctrl+Shift+PCmd+Shift+P 啟動命令板,然後搜尋 Dev Container:在 Container 中開啟資料夾Open Folder in Container並選擇根級專案目錄。

這將開啟一個新的 VS Code 視窗,等待容器下載及更新Dockerfile構建 ,專案將載入到開發容器中!

Command Palette in VS Code

現在我們的專案在開發容器中開啟了,可以啟動伺服器和客戶端。透過在 VS Code 整合終端中,執行伺服器和客戶端,來完成此操作,該終端現在將使用開發容器。

VS Code window with active dev container

IceRPC 客戶端和伺服器, 執行非常簡單:

cd ExampleServer
dotnet run

# In a new terminal tab
cd ExampleClient
dotnet run

來,看看效果吧

  • 服務端
    image
  • 客戶端
    image

結論

現在應該可以看到客戶端和伺服器透過 QUIC 進行通訊!好吧,我們可以在開發容器內開始開發 QUIC 應用程式!開發容器提供了,跨不同機器的一致開發環境,並確保所有開發人員使用相同的工具和庫來吧,浪起來!

作者結語

  • 一直做,不停做,才能提升速度
  • 翻譯的不好,請手下留情,謝謝
  • 如果對我有點小興趣,如可加我哦,一起探討人生,探討道的世界
  • 覺得還不錯的話,點個
    image

相關文章