使用 .NET Core 实现微服务
使用 .NET Core 实现微服务架构涉及几个关键步骤,包括服务划分、API 网关、服务通信和容器化部署。下面是一个简化的示例,展示如何使用 .NET Core 实现一个基本的微服务架构。
步骤 1:创建独立的微服务
-
定义微服务
每个微服务都是一个独立的 ASP.NET Core Web API 项目。例如,我们可以创建两个微服务:一个用户服务(UserService)和一个订单服务(OrderService)。
-
创建用户服务
使用 .NET CLI 创建一个新的 ASP.NET Core Web API 项目:
bashdotnet new webapi -n UserService
在 UserService 项目中定义一个简单的控制器:
csharpusing Microsoft.AspNetCore.Mvc; namespace UserService.Controllers { [ApiController] [Route("[controller]")] public class UsersController : ControllerBase { [HttpGet("{id}")] public IActionResult GetUserById(int id) { return Ok(new { Id = id, Name = "John Doe" }); } } }
-
创建订单服务
同样地,创建一个订单服务(OrderService)项目:
bashdotnet new webapi -n OrderService
在 OrderService 项目中定义一个简单的控制器:
csharpusing Microsoft.AspNetCore.Mvc; namespace OrderService.Controllers { [ApiController] [Route("[controller]")] public class OrdersController : ControllerBase { [HttpGet("{id}")] public IActionResult GetOrderById(int id) { return Ok(new { Id = id, Product = "Laptop", Quantity = 1 }); } } }
步骤 2:使用 API 网关
-
创建 API 网关
使用 Ocelot 作为 API 网关。创建一个新的 ASP.NET Core 项目用于 API 网关:
bashdotnet new webapi -n ApiGateway
添加 Ocelot 包:
bashdotnet add package Ocelot
配置 Ocelot。在
appsettings.json
中定义路由配置:json{ "Routes": [ { "DownstreamPathTemplate": "/users/{id}", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "localhost", "Port": 5001 } ], "UpstreamPathTemplate": "/api/users/{id}", "UpstreamHttpMethod": [ "Get" ] }, { "DownstreamPathTemplate": "/orders/{id}", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "localhost", "Port": 5002 } ], "UpstreamPathTemplate": "/api/orders/{id}", "UpstreamHttpMethod": [ "Get" ] } ], "GlobalConfiguration": { "BaseUrl": "http://localhost:5000" } }
-
配置启动文件
在
Startup.cs
中配置 Ocelot:csharppublic void ConfigureServices(IServiceCollection services) { services.AddOcelot(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); app.UseOcelot().Wait(); }
步骤 3:运行微服务和 API 网关
-
运行服务
启动 UserService 和 OrderService,指定不同的端口:
bashdotnet run --project UserService --urls "http://localhost:5001" dotnet run --project OrderService --urls "http://localhost:5002"
-
运行 API 网关
启动 ApiGateway 项目:
bashdotnet run --project ApiGateway --urls "http://localhost:5000"
步骤 4:测试微服务
使用浏览器或 Postman 访问以下 URL 测试微服务:
- 获取用户信息:
http://localhost:5000/api/users/1
- 获取订单信息:
http://localhost:5000/api/orders/1
结论
通过上述步骤,你可以创建和运行一个基本的微服务架构,其中每个微服务都是一个独立的 ASP.NET Core Web API 项目,API 网关使用 Ocelot 进行路由和负载均衡。根据具体需求,还可以添加更多的微服务、身份验证和授权机制、服务发现、监控等功能。