如何为采用整洁架构的后端API添加.NET Aspire
为整洁架构后端API集成.NET Aspire的步骤
整洁架构核心遵循内层不依赖外层、依赖抽象的规则,集成.NET Aspire时需严格维护分层边界,将Aspire的服务管理、配置、监控能力注入到对应层级中,具体操作如下:
1. 创建.NET Aspire宿主项目(AppHost)
如果还没有Aspire宿主,通过命令行创建:
dotnet new aspire-app -n MyAspireHost
将现有整洁架构API项目添加到该解决方案中。
2. 为API项目安装Aspire客户端组件
根据API的依赖场景,安装对应的Aspire NuGet包,示例:
- 若使用EF Core + Postgres:
dotnet add package Aspire.Npgsql.EntityFrameworkCore - 若需要HTTP客户端管理:
dotnet add package Aspire.Http.Client - 基础监控与配置支持:
dotnet add package Aspire.Hosting
3. 维护整洁架构的分层边界
Domain层
- 禁止引用任何Aspire相关包,保持纯业务实体、领域逻辑的独立性,不依赖外部框架。
Application层
- 仅通过抽象接口定义业务依赖(如
IDatabaseContext、IMessageSender),不直接关联Aspire的具体实现。 - 利用依赖注入获取抽象服务,业务逻辑无需关心底层是否由Aspire托管。
Infrastructure层
- 这是集成Aspire的核心层级,实现Application层的抽象接口时,通过Aspire管理外部资源:
- 通过
IConfiguration读取Aspire提供的连接字符串(如config.GetConnectionString("CleanDb")) - 配置EF Core上下文时,使用Aspire扩展方法简化资源绑定:
services.AddNpgsqlDbContext<AppDbContext>(config => config.UseConnectionString("CleanDb"));
- 通过
Presentation(API)层
- 在
Program.cs中注册Aspire服务,同时保持与内层的依赖倒置:var builder = WebApplication.CreateBuilder(args); // 注册Aspire HTTP客户端服务 builder.Services.AddAspireHttpClient<IExternalServiceClient>("external-service"); // 引入Infrastructure层的服务注册逻辑 builder.Services.AddInfrastructureServices(builder.Configuration); var app = builder.Build(); // ... 中间件配置 app.Run();
4. 配置Aspire宿主管理API与依赖资源
在AppHost的Program.cs中,定义API服务及其关联的外部资源:
var builder = DistributedApplication.CreateBuilder(args); // 添加整洁架构API服务 var cleanApi = builder.AddProject<Projects.MyCleanArchitectureApi>("clean-arch-api"); // 添加Postgres数据库并关联到API var postgres = builder.AddPostgres("postgres-db").AddDatabase("CleanDb"); cleanApi.WithReference(postgres); // 添加Redis缓存并关联到API var redis = builder.AddRedis("cache"); cleanApi.WithReference(redis); builder.Build().Run();
5. 验证集成效果
- 运行Aspire宿主项目,打开默认的Aspire Dashboard(
http://localhost:18888) - 检查API服务是否正常启动,依赖的数据库、缓存等资源是否连接成功
- 验证API业务逻辑正常执行的同时,Aspire的监控、配置管理功能生效
内容的提问来源于stack exchange,提问作者user3552264
相关产品推荐
相关产品推荐

