🚀Aspire 9 新特性及优化
摘要
随着 .NET 9 的发布,.NET Aspire 迎来了一系列重大更新和改进。这些更新不仅让 Aspire 变得更加成熟,也使其终于具备了投入生产环境的条件。本文将详细介绍 Aspire 的最新特性和改进。
安装流程简化
告别独立 Workload
在新版本中,.NET Aspire 的安装流程得到了极大简化。不再需要执行 dotnet workload install aspire
命令,因为 Aspire 现在已经内置于 .NET 9 中。如果你之前安装过旧版本,建议先执行以下命令卸载:
dotnet workload uninstall aspire
模板安装
要获取 Aspire 的项目模板,只需执行:
dotnet new install Aspire.ProjectTemplates
这将安装所有必要的模板,包括:
- App Host
- Aspire demo
- Service default starter
- 测试模板
仪表板增强功能
容器管理
- 新增停止/启动按钮,方便控制个别容器
- 支持通过三点菜单访问更多操作(日志查看、详情、重启等)
- 支持自定义设置
日志改进
-
支持结构化日志显示
-
新增控制台颜色支持
-
提供更清晰的日志查看体验
响应式设计
-
支持移动设备访问
-
自适应不同屏幕尺寸
依赖管理革新
Wait For 功能
新增 WaitFor
功能允许服务等待依赖项就绪:
// 示例代码
var builder = DistributedApplication.CreateBuilder(args);var cache = builder.AddGarnet("cache").WithDataVolume("TWBV2G").WithLifetime(ContainerLifetime.Persistent);var pgdb = builder.AddPostgres("pgdb").WithPgAdmin() // 自动部署管理工具.WithDataVolume("TWBV2") // 数据持久化.WithLifetime(ContainerLifetime.Persistent); // 配置容器不随Aspire程序关闭var dbinstance = pgdb.AddDatabase("dbinstance");var apiService = builder.AddProject<Projects.ShipMESAspire_ApiService>("apiservice").WithReference(dbinstance).WithReference(cache).WaitFor(dbinstance).WaitFor(cache);
// apiService将等待cache与db到Running状态才会启动,配合EnrichDbContext自动重试机制即可可靠地连接数据库
builder.Build().Run();
健康检查集成
支持多种健康检查方式:
- HTTP 健康检查
- 自定义状态码支持
- 可配置健康检查参数
持久化容器
新特性
- 支持容器在 Aspire 停止后继续运行
- 通过
WithLifetime
配置容器生命周期
builder.AddRedis("redis").WithLifetime(ServiceLifetime.Persistent);
优势
- 减少重复启动时间
- 保持数据持久性
- 简化开发工作流程
其他重要更新
网络改进
- 所有资源默认添加到公共网络
- 简化服务间通信
可视化与管理工具
- 支持 Redis Commander、PgAdmin、PhpMyAdmin等自动部署
- 集成 Redis Insight
- 提供直观的数据查看界面
Azure Function 支持
- 预览版支持 Azure Function
- 为无服务器架构提供支持
版本支持策略
重要说明
- Aspire 采用独立的版本周期
- 新版本发布后,旧版本立即停止支持
- 可能影响企业采用决策
结论
.NET Aspire 9 的更新使其成为一个更加成熟和实用的工具。新增的功能和改进解决了早期版本的多个痛点,特别是在依赖管理和开发体验方面。虽然版本支持策略可能需要企业特别关注,但总体而言,Aspire 已经准备好迎接生产环境的挑战。
建议
- 如果你还没有尝试过 Aspire,现在是一个很好的时机,虽然在国内使用Aspire并不能方便部署,但是也能简化开发流程
- 在规划项目时需要考虑版本支持策略
- 充分利用新的依赖管理和持久化容器功能优化开发流程