.NET 教程 - 你的第一个微服务
介绍
目标
熟悉使用 .NET 创建微服务的构建基块。
先决条件
无。
macOS 12.0 or later versions.
完成时间
过去 15 分钟
方案
创建返回值列表的简单服务,然后在 Docker 容器中运行该服务。
安装 .NET SDK
若要开始生成 .NET 应用,请下载并安装 .NET SDK。
下载 .NET 8 SDK (64 位)
32 位下载
|
Arm64 下载
你需要在较旧版本的 Windows 上安装其他依赖项。有关详细信息,请参阅 Windows 7 / 8.1 / Server 2012。
下载 .NET 8 SDK x64 (Intel)
下载 .NET 8 SDK Arm64 (Apple Silicon)
如果使用的是带有 Apple M1 或 M2 芯片的 Mac,则需要安装 Arm64 版本的 SDK。
检查是否已正确安装所有内容
安装完成后,打开新的命令提示符并运行以下命令:
安装完成后,打开新的终端并运行以下命令:
dotnet --version
如果安装成功,应会看到输出版本 8.0.100 或更高版本:
8.0.100
如果一切正常,请选择下面的 继续 按钮以转到下一步。
遇到错误?
如果收到“未将‘dotnet’识别为内部或外部命令”错误,请确保已打开新的命令提示符。如果快速重启计算机没有解决问题,请使用“我遇到了问题”按钮以获取解决问题的帮助。
创建服务
在命令提示符下,运行以下命令以创建应用:
在终端中,运行以下命令来创建应用:
dotnet new webapi -o MyMicroservice --no-https
然后,导航到由上一个命令创建的新目录:
cd MyMicroservice
这些命令分别代表什么?
dotnet
命令会创建一个类型为 webapi
的新应用程序(这是一个 REST API 终结点)。
-o
参数创建名为MyMicroservice
的目录,用于存储应用。--no-https
标志会创建一个应用,该应用将在没有 HTTPS 证书的情况下运行,以便保持部署简单。
使用 cd MyMicroservice
命令可进入新创建的应用目录。
生成的代码
已在 MyMicroservice
目录中创建了多个文件,以便为你提供可运行的简单服务,包括以下文件:
Program.cs
是入口点文件,包含在应用启动时加载的所有设置和配置,并具有一个简单的 API 代码,可返回未来五天的天气预报。它还会启动应用程序。MyMycroservice.http
用于测试 ASP.NET Core 项目。MyMicroservice.csproj
会定义应用面向的 .NET 版本、项目引用的库等。Properties
目录中的launchSettings.json
文件为本地开发环境定义不同的配置文件设置。创建项目时会自动分配 5000-5300 之间的端口号并将其保存在此文件上。
以下代码显示 Program.cs
文件的内容:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", () =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
return forecast;
})
.WithName("GetWeatherForecast")
.WithOpenApi();
app.Run();
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
选择下面的 继续 按钮以转到下一步。
遇到错误?
如果你收到类似于“模版 "ASP.NET Core Web API" 无法创建。无法创建模版。详细信息: 对路径 "C:\Windows\System32\MyMicroservice" 的访问被拒绝”的消息,请将当前目录更改为有权在其中新建文件夹的目录,然后尝试再次运行该命令。
如果在尝试创建项目时 Windows 找不到 SDK,且你确定已安装 SDK,则计算机可能存在 PATH 环境变量问题。请参阅此 Stack Overflow 帖子,获取如何诊断并解决此问题的说明。
如果无法解决遇到的问题,请选择下面的“我遇到了问题”按钮,以获取解决问题的帮助。
运行服务
在命令提示符下,运行以下命令:
在终端中,运行以下命令:
dotnet run
应看到与以下内容类似的输出:
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5020
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\Ana\MyMicroservice
等待应用显示正在侦听 http://localhost:<port number>,然后打开浏览器并导航到 http://localhost:<port number>/weatherforecast。
在此示例中,它显示正在侦听端口 5020,因此以下图像显示了 URL localhost:5020/weatherforecast
。
恭喜,你有简单服务正在运行!
在命令提示符上按 CTRL+C 以结束正在本地运行服务的 dotnet run
命令。
在终端上按 CTRL+C 以结束正在本地运行服务的 dotnet run
命令。
安装 Docker
Docker 是一个平台,让你能将应用及其配置和依赖项组合到单个独立的可部署的、称为容器的单元中。
如果已安装 Docker,请确保其版本为 23.0.0 或更高版本。
下载并安装
在可下载安装程序之前,将先要求你注册 Docker Store。
默认情况下,Docker 将在 Windows 上使用 Linux 容器。保留安装程序中提示时的配置设置。
安装 Docker 后,可能会要求你注销以完成安装。
检查 Docker 是否已准备好使用
安装完成后,打开新的命令提示符并运行以下命令:
安装完成后,打开新的终端并运行以下命令:
docker --version
如果命令运行并显示一些版本信息,则 Docker 安装成功。
添加 Docker 元数据
要使用 Docker 映像运行,你需要使用一个 Dockerfile
,这是一个文本文件,其中包含如何将应用构建为 Docker 映像的说明。Docker 映像包含将应用作为 Docker 容器运行所需的一切。
返回到应用目录
由于在上一步中打开了新命令提示符,因此需要返回到创建服务的目录。
由于在上一步中打开了新终端,因此需要返回到创建服务的目录。
cd MyMicroservice
添加 DockerFile
使用以下命令创建名为 Dockerfile
的文件:
touch Dockerfile
fsutil file createnew Dockerfile 0
然后,可以在喜爱的文本编辑器中打开它。
然后,可以手动或使用此命令在喜欢的文本编辑器中打开它:
open Dockerfile
start Dockerfile
在文本编辑器中将 Dockerfile
的内容替换为以下内容:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY MyMicroservice.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyMicroservice.dll"]
注意: 请确保将文件命名为 Dockerfile
,而非Dockerfile.txt
或其他名称。
可选: 添加 .dockerignore 文件
A .dockerignore 文件减少了用作 `docker 生成` 一部分的文件集。更少的文件可使生成速度更快。
使用以下命令,创建名为“.dockerignore
”的文件(类似于 .gitignore
文件,如果你熟悉的话):
touch .dockerignore
fsutil file createnew .dockerignore 0
然后,可以在喜爱的文本编辑器中打开它。
然后,可以手动或使用此命令在喜欢的文本编辑器中打开它:
open .dockerignore
start .dockerignore
在文本编辑器中将 .dockerignore
的内容替换为以下内容:
Dockerfile
[b|B]in
[O|o]bj
创建 Docker 映像
运行以下命令:
docker build -t mymicroservice .
docker build
命令使用 Dockerfile
构建Docker 映像。
-t mymicroservice
参数指示它将图像标记(命名)为mymicroservice
。- 最后一个参数告知它要使用哪个目录来查找
Dockerfile
(.
指定当前目录)。 - 此命令将下载并生成所有依赖项以创建 Docker 映像,此操作可能需要一些时间。
可以运行以下命令,以查看计算机上可用的所有映像的列表,包括刚刚创建的映像。
docker images
运行 Docker 映像
可以使用以下命令在容器中运行应用:
docker run -it --rm -p 3000:8080 --name mymicroservicecontainer mymicroservice
可以浏览到以下 URL 以访问在容器中运行的应用程序: http://localhost:3000/weatherforecast
(可选)可以使用以下命令查看在单独的命令提示符中运行的容器:
(可选)可以使用以下命令查看在单独终端窗口中运行的容器:
docker ps
在命令提示符上按 CTRL+C,以结束在容器中运行服务的 docker run
命令。
在终端上按 CTRL+C 以结束正在容器中运行服务的 docker run
命令。
恭喜! 已成功创建了可以使用 Docker 容器进行部署和扩展的小型、独立服务。
这些是微服务的基本构建基块。
后续步骤
恭喜! 你已创建并在 Docker 容器中运行简单服务。
现在可以通过下一教程了解如何将微服务部署到云。
你可能还会关注...