当前位置: 首页 > news >正文

【.NET新特性·第4篇】.NET Aspire 入门:云原生开发新姿势

.NET Aspire 是微软推出的云原生开发框架,让构建分布式应用变得简单

版本定位

适用版本:.NET 8+ | Aspire(预览版) 前置知识:.NET 8 基础、依赖注入概念

背景

构建云原生应用通常需要处理很多复杂的问题:

  • 服务发现:如何找到其他服务?

  • 配置管理:如何统一管理配置?

  • 可观测性:如何监控应用状态?

  • 依赖管理:如何启动 Redis、数据库等依赖?

.NET Aspire 就是为了解决这些问题而生的。

什么是 .NET Aspire?

一句话:**.NET Aspire 是一个云原生开发框架,提供服务发现、组件集成、可观测性等功能,让构建分布式应用变得简单。**

核心组件

┌─────────────────────────────────────────────┐ │ .NET Aspire App │ ├─────────────────────────────────────────────┤ │ Service Discovery │ Observability │ │ ───────────────── │ ────────────── │ │ 自动发现服务 │ Dashboard │ │ 健康检查 │ 日志/指标/追踪 │ ├─────────────────────────────────────────────┤ │ Components │ │ ────────────────────────────────────────── │ │ Redis │ PostgreSQL │ RabbitMQ │ ... │ └─────────────────────────────────────────────┘

Aspire 能做什么

  1. 服务发现:自动发现和连接服务

  2. 组件集成:Redis、PostgreSQL、RabbitMQ 等开箱即用

  3. Dashboard:实时监控应用状态

  4. 本地开发:一键启动所有依赖

  5. 云部署:轻松部署到 Azure、AWS、Kubernetes

快速上手

1. 安装 Aspire 模板

dotnet new install Aspire.ProjectTemplates

2. 创建 Aspire 项目

# 创建 Aspire 应用宿主 dotnet new aspire-apphost -n MyApp # 创建 Web API 服务 dotnet new aspire-servicedefaults -n MyApp.Api # 创建 Web 前端 dotnet new aspire-razor -n MyApp.Web

3. 项目结构

MyApp/ ├── MyApp.AppHost/ # 应用宿主(入口点) │ ├── Program.cs │ └── MyApp.AppHost.csproj ├── MyApp.Api/ # Web API 服务 │ ├── Controllers/ │ ├── Program.cs │ └── MyApp.Api.csproj ├── MyApp.Web/ # Web 前端 │ ├── Pages/ │ ├── Program.cs │ └── MyApp.Web.csproj └── MyApp.ServiceDefaults/ # 服务默认配置 ├── Extensions.cs └── MyApp.ServiceDefaults.csproj

4. 应用宿主配置

// MyApp.AppHost/Program.cs var builder = DistributedApplication.CreateBuilder(args); // 添加 Redis var cache = builder.AddRedis("cache"); // 添加 PostgreSQL var db = builder.AddPostgreSQL("db") .AddDatabase("mydb"); // 添加 API 服务 var api = builder.AddProject<Projects.MyApp.Api>("api") .WithReference(db); // 添加 Web 前端 builder.AddProject<Projects.MyApp.Web>("web") .WithReference(api); builder.Build().Run();

5. 服务配置

// MyApp.Api/Program.cs var builder = WebApplication.CreateBuilder(args); // 添加 Aspire 服务 builder.AddServiceDefaults(); // 添加数据库 builder.AddNpgsqlDbContext<MyDbContext>("db"); // 添加 Redis builder.AddRedis("cache"); var app = builder.Build(); app.MapControllers(); app.Run();

核心功能详解

1. 服务发现

// 自动发现并连接其他服务 builder.Services.AddHttpClient("api", client => { // Aspire 自动注入服务地址 client.BaseAddress = new Uri("https+http://api"); });

2. 组件集成

// Redis 缓存 builder.AddRedis("cache"); // PostgreSQL 数据库 builder.AddPostgreSQL("db") .AddDatabase("mydb"); // RabbitMQ 消息队列 builder.AddRabbitMQ("messaging"); // Azure 服务 builder.AddAzureRedis("cache"); builder.AddAzurePostgreSQL("db");

3. Dashboard

运行 Aspire 应用后,会自动启动一个 Dashboard:

┌─────────────────────────────────────────────┐ │ .NET Aspire Dashboard │ ├─────────────────────────────────────────────┤ │ Resources │ Console │ Logs │ Traces │ Metrics │ ├─────────────────────────────────────────────┤ │ api │ Running │ 127.0.0.1:5000 │ │ web │ Running │ 127.0.0.1:5001 │ │ cache │ Running │ 127.0.0.1:6379 │ │ db │ Running │ 127.0.0.1:5432 │ └─────────────────────────────────────────────┘

4. 可观测性

// 自动收集日志、指标、追踪 builder.AddServiceDefaults(); // 自定义指标 var meter = new Meter("MyApp", "1.0"); var counter = meter.CreateCounter<int>("requests.total"); app.MapGet("/", () => { counter.Add(1); return "Hello Aspire!"; });

实战场景

适合 Aspire 的场景

  • 微服务架构:多个服务需要协同工作

  • 本地开发:需要 Redis、数据库等依赖

  • 云原生部署:计划部署到 Kubernetes

  • 可观测性需求:需要监控应用状态

不适合 Aspire 的场景

  • 单体应用:只有一个项目

  • 无依赖应用:不需要 Redis、数据库等

  • 简单项目:不需要复杂的服务发现

迁移建议

从现有项目迁移

# 1. 安装 Aspire 模板 dotnet new install Aspire.ProjectTemplates # 2. 创建 Aspire 应用宿主 dotnet new aspire-apphost -n MyApp.AppHost # 3. 将现有项目添加到宿主 # 编辑 MyApp.AppHost/Program.cs var builder = DistributedApplication.CreateBuilder(args); var api = builder.AddProject<Projects.ExistingApi>("api");

注意事项

  1. 预览版:Aspire 仍在预览,API 可能变化

  2. 学习曲线:需要理解 Aspire 的概念

  3. 依赖管理:需要安装 Docker 等依赖

一句话总结

.NET Aspire 让云原生开发变得简单,它把服务发现、组件集成、可观测性打包在一起,让你专注于业务逻辑。


官方文档

  • .NET Aspire 概述

  • .NET Aspire 入门

  • .NET Aspire 组件

  • What's new in .NET Aspire


📦示例代码:.NET 新特性巡礼全系列配套示例代码(含 dotnet 8/9/10)

  • GitHub:https://github.com/LadyKiller1025/dotnet-feature-tour-demos

  • Gitee:https://gitee.com/qakjhzx/dotnet-feature-tour-demos

💬 欢迎点赞、收藏、转发,你的支持是我持续创作的动力!

http://www.jsqmd.com/news/945081/

相关文章:

  • Element Plus 表单实战:从 ElementUI 迁移到 Vue 3 的 5 个关键变化与避坑指南
  • 213
  • 基于树莓派与语音交互HAT的智能天气助手DIY全攻略
  • 2026广州企业夏季团建避坑指南:如何选靠谱服务商 - 陀螺团建
  • 基于Arduino与BMP280的低功耗气压趋势仪DIY指南
  • 2026年包装盒厂家推荐榜单:高档礼品/抽屉式/天地盖/异形/电子产品/手机/化妆品包装盒,精选烫金工艺与环保材质实力厂家! - 企业推荐官【官方】
  • 【北方民族大学主办 | ACM ICPS出版,EI、SCOPUS双检索 | IPMLP 2025会后3.5个月完成EI检索】第三届图像处理、机器学习与模式识别国际学术会议(IPMLP 2026)
  • Arduino与3D打印制作智能摇头石像:创客入门实践指南
  • 2026年陕西高考补习学校横评:升学数据、师资力量与管理模式全对比 - 科技焦点
  • 3个技巧快速掌握APK安装器:告别笨重的安卓模拟器体验
  • 告别纸上谈兵:手把手教你用Vector工具链配置Autosar SOME/IP服务(含实战Demo)
  • Understand-Anything心得
  • AMD Ryzen终极调试手册:5个专业技巧彻底释放硬件性能
  • Navidrome(docker-compose) + Tempo + Feishin 完整部署文档(DeepSeek)
  • 保姆级教程:Label Studio 半自动化标注YOLOv11,结合SAM2 零样本辅助提效80%
  • 深圳 ai 系统开发公司哪家评价好:独家排名权威深度攻略 - 13724980961
  • 2026年 IGBT模块/功率模块/可控硅/二极管/整流桥/晶闸管品牌推荐榜单:高效稳定与高性价比全解析 - 品牌企业推荐师(官方)
  • FPG平台:把风险提示做到位——维度对照与提示整理
  • AI如何重写历史教科书?:7类被主流忽略的智能历史整合陷阱与2024权威校验框架
  • 保姆级教程:用COMSOL 6.1搞定七芯光纤超模仿真(附网格划分与边界条件避坑指南)
  • Wireshark v4.4.7.0 网络抓包工具安装与实操技术教程
  • das
  • 论文反复修改到心累,有哪些真正值得体验的的降AI率平台推荐? - 降AI小能手
  • 【双一流高校哈尔滨理工大学主办 | SPIE出版,往届已见刊EI检索 | 特邀多位领域内高层次专家作报告,深入分享学科前沿动态】第二届算法、机器学习、图像处理国际学术会议(AMLIP 2026)
  • Unity开发避坑指南:别再滥用material了,小心内存泄漏和性能问题
  • 2026年 彩盒印刷/包装印刷/礼品包装盒厂家推荐榜:按需定制、天地盖与异形盒工艺实力之选 - 企业推荐官【官方】
  • 高速公路隧道火灾扑救哪家好?浙江金瑞恒3%AFFF/AR泡沫灭火剂快广安稳 - 品牌速递
  • 把核心数据锁进“信息孤岛”:专网独立部署如何实现安全与效率兼得
  • 2026年自动绕线机厂家推荐排行榜:全自动收线绕线机、精密绕线机、多功能收线机源头厂家深度解析 - 品牌企业推荐师(官方)
  • ESP8266双传感器融合:PIR与微波雷达协同实现高可靠人体检测