編寫第一個 .NET 微服務


本文翻譯自.NET官網 .NET Tutorial - Hello World Microservice

介紹

本文的目的是:通過創建一個返回列表的簡單服務,並在 Docker 容器中運行該服務,讓您熟悉使用 .NET 創建微服務的構建過程。

安裝 .NET SDK

要開始構建 .NET 應用程序,首先下載並安裝 .NET Core SDK(軟件開發工具包)。

根據操作系統的類型下載並安裝對應版本的 .NET Core SDK v3.1:.NET SDK (64-位).NET SDK (32-位)

全部 .NET SDK 下載頁面(Download .NET SDKs for Visual Studio):
https://dotnet.microsoft.com/download/visual-studio-sdks

檢查安裝是否正確

.NET SDK 安裝完成后,打開一個命令提示符窗口並運行以下命令:

dotnet

如果命令運行時,打印出的信息是介紹如何使用 dotnet,說明安裝正確。

創建您的服務

創建一個應用

在命令提示符窗口運行以下命令:

dotnet new webapi -o myMicroservice --no-https

cd myMicroservice

第一行中 dotnet 命令創建了一個 webapi(一個 REST API 終端)類型的“新”應用。

  • 參數 -o 創建一個名為 myMicroservice 的目錄,用於存儲應用程序。
  • 標記 --no-https 創建一個不需要 HTTPS 證書就可以運行的應用程序,以便簡化部署。

使用 cd myMicroservice 命令進入新建應用程序的目錄。

生成的代碼

可以看到,在 myMicroservice 目錄中創建了幾個文件,為您提供了一個可以運行的簡單服務。

  • myMicroservice.csproj 定義了項目引用的庫等。
  • Startup.cs 包含應用程序啟動時加載的所有設置和配置。
  • Controllers/WeatherForecastController.cs 有一個簡單 API 的代碼,可以返回未來 5 天的天氣預報(模擬數據)。

Controllers/WeatherForecastController.cs 文件中代碼:

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        var rng = new Random();
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = rng.Next(-20, 55),
            Summary = Summaries[rng.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

運行您的服務

確保命令提示符定位在 myMicroservice 目錄中,運行以下命令:

dotnet run

命令完成后,在瀏覽器中打開『http://localhost:5000/WeatherForecast』

The API endpoint returns JSON data containing weather forecast information

恭喜,您已經運行了一個簡單的服務。

安裝 Docker

Docker 是一個平台,它可以讓你將一個應用程序及其配置和依賴項組合成一個叫作容器的單獨的、可獨立部署的單元。

下載並安裝 Docker Desktop

請參閱我之前翻譯的 Docker 快速入門(一)

檢查 Docker 是否可用

安裝完成后,打開一個新的命令提示符窗口並運行以下命令:

docker --version

若命令運行后,顯示一個版本信息,那么表示 Docker 安裝成功了。

添加 Docker 元數據

要運行 Docker 鏡像,需要一個 Dockerfile —— 一個文本文件,其中包含如何將應用構建為 Docker 鏡像的指令。Docker 鏡像包含將您的應用作為 Docker 容器運行所需的所有內容。

添加 Dockerfile 文件

myMicroservice 目錄中,使用文本編輯器(推薦使用 Visual Studio Code)創建一個名為 Dockerfile 的文件,包含以下內容:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY myMicroservice.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "myMicroservice.dll"]

注意:確保將文件命名為 Dockerfile(沒有擴展名),而不是 Dockerfile.txt 或其他名稱。

添加 .dockerignore 文件(可選的)

.dockerignore 文件可以減少 docker build 過程中使用的文件集,文件越少則構建越快。

在文本編輯器中創建一個名為 .dockerignore 的文件(這個文件類似於 .gitignore 文件,如果你熟悉的話),包含以下內容:

Dockerfile
[b|B]in
[O|o]bj

創建 Docker 鏡像

運行以下命令:

docker build -t mymicroservice .

docker build 命令使用 Dockerfile 構建 Docker 鏡像。

  • 參數 -t mymicroservice 告訴命令標記(或命名)鏡像為 mymicroservice
  • 最后一個參數告訴命令使用哪個目錄來查找 Dockerfile (. 指定當前目錄)。

譯者注:
如果是第一次在本機上構建基於 mcr.microsoft.com/dotnet/core/sdk:3.1mcr.microsoft.com/dotnet/core/aspnet:3.1 的鏡像,構建 mymicroservice 鏡像將會是一個漫長的過程,因為從官方 Docker 注冊表拉取鏡像實在是太慢了!耐心等待,終會成功的,我已經實踐過了。

等待鏡像構建完成,可以運行下面的命令來查看計算機上可用的所有鏡像的列表,包括您剛剛創建的 mymicroservice 鏡像。

docker images

運行 Docker 鏡像

您可以使用下面的命令在容器中運行您的應用:

docker run -it --rm -p 3000:80 --name mymicroservicecontainer mymicroservice

可選地,您可以在單獨的新的命令提示符窗口中輸入下面的命令查看正在運行的容器:

docker ps

在運行 docker run 命令后,您可以在瀏覽器中輸入 URL『http://localhost:3000/WeatherForecast』 來訪問正在容器中運行的應用程序。

The API endpoint returns JSON data containing weather forecast information

恭喜!您已經成功地創建了一個可以使用 Docker 容器部署和縮放的小型、獨立的服務。

以上這些就是微服務的基本構建塊。


作者 : Microsoft 官網
譯者 : 技術譯民
出品 : 技術譯站
鏈接 : 英文原文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM