Aspire 9.5 简介 - 快速入门这一重要工具
每一位使用网络应用程序的现代 .NET 开发人员都应该知道如何使用 Aspire 9.5。Tim Corey 在他的详细视频"Aspire 9.5 简介 - 快速入门这一重要工具"中介绍了新的 .NET Aspire 系统,解释了它是什么、为什么有价值以及如何快速入门。
在整个视频中,Tim 使用 Visual Studio 和最新的项目模板逐步构建了一个示例解决方案。 本文紧跟他的演练,为项目文件、设置过程以及 Aspire 为构建生产就绪的分布式应用程序带来的开发人员体验提供了完整的指南。
入门和安装 Aspire 9.5
Tim 首先解释了 Aspire 的目的。每一位构建 API 或网络应用程序的 .NET 开发人员都应该了解这一微软的基本工具。 人们对 Aspire 的功能一直存在困惑,因此 Tim 开始从头开始演示其目的、设置和使用方法。
他打开 Visual Studio,使用 Aspire 启动程序模板启动一个新项目。 如果您没有安装 Aspire,他指出,您可以通过 .NET CLI、Visual Studio 或 VS Code 安装 Aspire。 为简单起见,Tim 建议使用 CLI 命令:
dotnet new install aspire.templates这将安装最新的项目模板,包括 Aspire 9.5。安装后,Visual Studio 可能需要重新启动才能显示模板。
Tim 选择了 Aspire 演示应用程序,选择了 .NET 9,启用了 HTTPS,并使用 Redis 集成进行缓存。 这展示了 Aspire 在本地管理整个应用程序的真实场景。 他跳过了单元测试,继续创建解决方案文件。
探索项目结构和应用程序模型
项目生成后,Tim 会分解 Aspire 应用程序模型创建的项目文件。 该解决方案包括四个主要项目,反映了典型的 .NET 项目和 Aspire 的特定项目:
1.网络项目--基于 Blazor 的网络应用程序。
2.API 服务--数据或业务逻辑的后台服务。
3.AppHost - 启动整个应用程序的单一文件 AppHost。
4.ServiceDefaults - 包含健康检查、服务发现和遥测设置的库。
前两个代表普通的分布式系统(前端和后端),而另外两个代表 Aspire 的统一工具链,用于管理环境变量、依赖关系和资源生命周期事件 API。
Tim 重点介绍了这种新的应用程序模型如何为多项目协调提供一流的支持,让开发人员只需一个命令即可运行整个应用程序。 AppHost 控制启动顺序和依赖关系,而 ServiceDefaults 则自动注入配置默认值、健康检查和遥测集成。
为什么 Aspire 可以简化本地开发?
Tim 解释了在没有 Aspire 的情况下本地管理分布式系统的痛点。传统上,开发人员必须手动为每个服务配置容器运行时设置、端口转发和连接字符串。 每个开发人员都必须单独复制环境变量、用户机密和 redis 或 API 连接。
有了 Aspire,Aspire CLI 可以自动处理这些工作。 它通过开发容器或 Docker 实例启动 Redis 容器等依赖关系,管理端点发现,并使用服务发现提供服务之间的私有访问。
Aspire 使用反向代理和端点解析系统,因此网络前端不需要知道硬编码的端口号。 只需提及 API 的名称(如 "apiservice")--Aspire 就能解决其余问题。
这样可以省去繁琐的设置步骤,让开发人员专注于代码而不是基础架构,从而极大地改善开发人员的体验。
在 AppHost 中定义服务和依赖关系
Tim 展示了 Aspire 配置的核心:AppHost 的 Program.cs 文件。Aspire 使用变量生成器模式,通过简单的命令定义了每个服务,例如
var cache = builder.AddRedis("cache");
var api = builder.AddProject<Projects.ApiService>("apiservice");
var web = builder.AddProject<Projects.Web>("webfrontend")
.WithReference(cache)
.WithReference(api);var cache = builder.AddRedis("cache");
var api = builder.AddProject<Projects.ApiService>("apiservice");
var web = builder.AddProject<Projects.Web>("webfrontend")
.WithReference(cache)
.WithReference(api);该语法定义了每个资源,设置了依赖顺序,并创建了清晰的资源生命周期。 Aspire 可自动处理依赖关系等待,确保首先启动缓存,然后启动 API,最后启动 Web 前端。
这一小套说明为开发人员提供了对启动行为的细粒度控制,反映了生产就绪的分布式应用程序的运行方式。
运行 Aspire 并了解仪表板
当 Tim 运行项目时,Aspire 会启动自己的容器运行时,并打开 Aspire Dashboard--一个监控一切的中央界面。 一开始,出现了一个错误:"容器运行时不健康"-Docker 没有运行。 Docker 启动后,Aspire 会自动初始化 Redis 可执行资源,并将其连接到应用程序的其他部分。
仪表板显示彩色编码的状态图标,显示每个资源的健康状况。 一旦 Redis、API 和网络前端都运行起来,仪表盘就会变成绿色,表明整个应用程序是健康的。
该通知系统可即时反映实时状态,提供比标准控制台日志更清晰的错误信息。 开发人员可以可视化服务关系、监控指标,甚至可以直接从用户界面访问资源端点。
通过 Aspire 控制面板的视觉洞察
仪表板中的图表视图可视化服务的连接方式。 例如,Web 前端同时连接 Redis 和 API 服务,而 API 是独立的。 该跟踪视图有助于了解调用和依赖关系的内部流程。
Tim 强调指出,仪表板包括跟踪细节改进,例如显示跟踪过滤选项和时序细分。 开发人员可以跟踪跨服务的 HTTP 请求,并使用 Aspire 的跟踪视图查看性能影响。
集中式日志和结构化日志
Aspire 将所有项目文件的控制台日志统一到一个视图中。 开发人员可以使用仪表板在一个时间轴上查看所有服务--Web 应用程序、API 和 Redis 集成--的日志,而无需在多个日志窗口之间来回切换。
Tim 向我们展示了 Aspire 使用的结构化日志,允许 ID、参数和标记等上下文丰富的条目。 开发人员可以按级别(信息、警告、错误)或属性值过滤日志。
例如,开发人员只能查看 "evenOddResult" == "odd "的条目。 这种高级日志过滤与 Aspire 的彩色编码前缀相结合,使调试变得直观和形象。
使用跟踪和遥测
在 "跟踪 "选项卡中,Tim 演示了 Aspire 如何跟踪应用程序服务中的请求。 每个跟踪都包含时间、状态和跨度,显示哪个服务处理了什么。
例如,"GetWeather "请求会显示缓存何时命中或未命中、API 调用何时发生以及每次操作耗时多久。 这种跟踪过滤可以精确识别瓶颈和依赖关系。
Aspire 还支持 OpenTelemetry,可将跟踪数据导出到其他工具或系统,从而为开发人员提供跨分布式服务的全面可观察性。
实时指标和性能监控
Tim 探讨了请求持续时间、SignalR 活动连接和活动请求计数等指标。 这些指标可视化您应用程序的实时状态,并提供连接或延迟问题的早期检测。
Aspire 9.5 中的度量数据还得益于跟踪细节的改进和更好的跟踪过滤,使开发人员能够实时精确地确定性能下降的位置。
Aspire 适用于本地开发,而非生产
Tim 明确指出,Aspire 的仪表板并不用于部署到生产服务器上。 部署时会暴露内部系统细节和环境变量,可能会有风险。
不过,开发人员仍可使用 Aspire 的 aspire deploy 命令将服务发布到 Azure 容器应用程序、Azure 容器应用程序作业或其他 Aspire 集成。 这些部署选项在不断增加,但仍与仪表板分开。
Aspire 的目的是在本地镜像一个与生产环境类似的环境,并提供安全升级和预览支持,而不是取代生产监控系统。
体验日志记录和异常处理
Tim 在计数器页面中添加了结构化日志,并特意在天气页面中引入了 NotImplementedException。 重新运行时,仪表板会立即捕获结构化日志和未处理异常。
他展示了 Aspire 日志如何显示全部详细信息,包括参数名称、值和调用堆栈。 通过与 GitHub 模型和 Copilot AI 的集成,可以自动解释异常情况并提出修复代码建议--这是早期人工智能服务和生成式人工智能可视化集成到开发人员体验中的一个实例。
使用跟踪过滤分析错误
在 "跟踪 "选项卡中,Tim 演示了失败的 API 调用如何显示红色感叹号图标。 点击其中一个即可显示按跨度 ID 过滤的所有相关日志,并将多个 .NET 项目中的每个请求联系起来。
这种统一的视图--将日志、跟踪和健康检查结合在一起--为调试和构建无需外部配置的可观察系统提供了交互式提示。
将 Aspire 整合到现有的 .NET 项目中
然后,Tim 解释了如何将 Aspire 集成到现有应用程序中。开发人员只需添加两样东西:
AppHost 项目负责控制服务的启动及其依赖关系。
- ServiceDefaults 项目提供功能标志、健康检查、遥测和服务发现。
通过在每个项目文件中引用 ServiceDefaults,开发人员可以自动获取默认环境变量、日志设置和遥测数据。 Aspire 的端点解析系统无需手动进行端口转发或连接字符串管理。
将 Aspire 扩展到本地使用之外
Tim 阐述了 Aspire 的功能如何扩展到本地使用之外。 通过 Azure Container Apps 和 Azure AI Foundry 集成,开发人员可以使用 Aspire CLI 以最少的配置部署分布式系统。
该系统已支持自定义资源图标、名称属性以及对 OpenAI 端点或 Azure PostgreSQL 连接等 ai 服务的预览支持。
Aspire 的统一工具链还支持版本控制以及主要版本和次要版本之间的安全升级,帮助团队自信地采用 Aspire 9.5 等更新。
最终想法和未来展望
视频最后,Tim 称 Aspire 是 "开发人员的金矿"。仪表盘将跟踪视图、健康检查、日志和指标整合到一个统一的面板中,这在以前的本地开发中是无法实现的。
对于 Tim 和他的团队来说,现在每个新的 .NET Aspire 项目都默认使用该系统。 它可以加快定制构建速度,改善开发人员的体验,并确保生产就绪的分布式应用程序在不同机器上表现一致。
他指出,Aspire 的主要版本将继续完善跟踪过滤、端点解析和 ai 集成,同时关注安全升级和普遍可用性。
Tim 鼓励大家探索 Aspire 9.5,在下一个 .NET 项目中使用它,并利用它的单一命令简易性来查看日志、管理开发隧道,并自信地在本地测试整个应用程序。

