在 .NET 中搭建微服务应用需遵循模块化、独立部署和分布式治理等核心原则。以下是结合最新实践(.NET 8 和 Docker/Kubernetes)的完整流程:
⚙️ 一、环境准备
安装 .NET SDK
- 下载 .NET 8 SDK(跨平台支持 Win/Linux/macOS)
- 验证安装:
dotnet --version
安装 Docker
- 用于容器化微服务:Docker Desktop
- 验证安装:
docker --version
🧩 二、创建基础微服务(以用户服务为例)
步骤:
创建 Web API 项目
dotnet new webapi -n UserService -f net8.0 --no-https cd UserService
实现业务逻辑
修改Controllers/UsersController.cs
:[ApiController] [Route("api/[controller]")] public class UsersController : ControllerBase { [HttpGet("{id}")] public IActionResult GetUser(int id) { return Ok(new { Id = id, Name = "John Doe", Email = "john@example.com" }); } }
运行服务
dotnet run --urls http://localhost:5001
- 访问
http://localhost:5001/api/users/1
测试
- 访问
📦 三、容器化微服务
添加 Dockerfile(项目根目录)
# 构建阶段 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY UserService.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", "UserService.dll"]
构建并运行容器
docker build -t user-service . docker run -d -p 5001:80 --name user-container user-service
- 访问
http://localhost:5001/api/users/1
- 访问
🌐 四、构建多服务架构
创建订单服务(同用户服务步骤)
dotnet new webapi -n OrderService -f net8.0 --no-https
添加 API 网关(Ocelot)
- 创建网关项目:
dotnet new webapi -n ApiGateway cd ApiGateway dotnet add package Ocelot
- 配置
appsettings.json
:{ "Routes": [ { "DownstreamPathTemplate": "/api/users/{id}", "DownstreamHostAndPorts": [ { <
- 创建网关项目: