Fork me on GitHub

Aspire 框架预览版发布,使云原生开发和运维更加简单

随着 .NET 8 的发布,.NET Aspire 也随之发布[1],这是一个全家桶框架旨在加快基于云的应用程序的构建。.NET Aspire 从一开始就集成了关键组件,例如遥测和运行状况检查。它还承诺提供无缝的本地开发人员体验,该体验可以有效扩展以满足云应用程序开发的需求。Microsoft 鼓励对 .NET Aspire 预览版(目前在 GitHub 上提供[2])提供反馈。

image

.NET Aspire提供了如下3个方面的能力,来帮助我们使用.NET开发分层、云就绪的可观测、本地与生产环境一致的分布式云原生应用程序:

  • 微服务的编排能力:在开发和线上环境自动处理多个微服务之间的连接和依赖,也即内置了服务发现等基础能力。

  • 基础服务的访问能力:通过提供一系列Nuget包,把对一些基础服务的访问进行统一封装(比如,缓存、数据库、消息队列等),方便微服务直接使用。

  • 工具链的相应配合:在VS和VSCode等工具中添加对以上编排能力的支持,并提供一系列开箱即用的模板,来方便开发人员进行开发、调试和部署云原生应用。

Aspire 包含了 2020 年首次发布的名为 Project Tye 的早期实验中首次使用的元素,尽管 Project Tye 是为 Kubernetes 设计的,而 Aspire 没有做出这种假设,Aspire 也是。Project Tye 在首次发布时受到欢迎,但在最近的一年几乎没有活动。毫无疑问的是社区开发人员都很想知道Microsoft是否会兑现承诺, 随着.NET 8的发布,Aspire继承了Tye 的最新状态。根据 .NET 团队的首席项目经理 Glenn Condron 的说法,它将在 2024 年春季全面上市,距离现在只有六个月的时间,昨天发布的是第一个预览版。

Aspire 将成为 .NET 8 的一部分,第一个版本是v8.0.0-preview.1.23557.2[3]。完整的工具支持位于最新的 Visual Studio 预览版 17.9 预览版 1 中,这意味着必须使用 Windows 进行开发,尽管 Linux 和 Mac 用户可以在没有某些开发人员工具的情况下使用它。

当前的Aspire预览版面向Visual Studio和Azure,很多人的第一感觉就是面向Azure搞的一个东西,不过他其实也包含了Dapr的支持,因此Aspire 可以支持Dapr 的所有平台,而不是局限于Azure 这样的微软平台。

初学者 Aspire 应用程序示例包括 Blazor Web 应用程序、后端 API 和 Redis 缓存。解决方案中添加了两个 Aspire 项目,一个名为 AppHost,它作为分布式应用程序的一部分运行任何 .NET 项目,另一个名为 ServiceDefaults,它提供包括服务发现、遥测和运行状况检查终结点在内的功能。包括一个开发人员仪表板,其中列出了服务、收集和显示日志,并显示了应用程序各部分的指标和跟踪。

遥测基于用于创建和管理遥测数据的 Open Telemetry [4]项目,然后可以将这些数据传递给各种工具。Open Telemetry 得到了大约 40 家供应商的支持,包括 Grafana、Splunk、New Relic、Datadog 和 Dynatrace 等熟悉的名字,以及 Jaeger 和 Prometheus 等开源项目。

Aspire 应用程序的部署旨在基于容器。Aspire 可以生成一个清单来定义应用程序中不同服务之间的关系,然后工具可以使用该清单进行部署。Microsoft 提供与 Azure 容器应用程序的集成,“在一个步骤中立即配置和部署 Azure 资源。

现有应用程序可以添加 Aspire 支持,前提是它们已升级到 .NET 8。然后,在 Visual Studio 中,开发人员可以添加 Aspire Orchestration Support,这会将 AppHost 和 ServiceDefaults 项目添加到解决方案中。

image

Aspire 支持组件,其中每个组件都必须默认提供弹性、运行状况检查和遥测,并与依赖项注入集成,这是一种向应用程序添加服务的技术,通常用于 .NET 应用程序。Condron 以 Redis 组件为例,该组件通过一次调用 AddRedis 来添加 Redis 缓存,从而创建可以根据需要覆盖的默认配置。

image

初始组件集包括 PostgreSQL、RabbitMQ、Redis、SQL Server、Azure Blob 存储、Azure Cosmos DB、Azure Key Vault、Azure 服务总线和 Azure 存储队列。数据库组件附带Entity Framework和普通客户端版本,其中Entity Framework是标准的 .NET ORM(对象关系映射)库。

它为云原生应用程序提供仪表板,可用于查看日志和指标、分布式跟踪、依赖项等。

image

通过仪表板,您可以列出已分发的服务并显示日志。 它显示一个红色圆圈表示有问题的服务,使人们更容易了解云原生分布式应用程序的状态。

image

此外,“跟踪”功能允许对一组服务如何处理用户操作进行分布式跟踪。

image

相关链接:

posted @ 2023-11-16 08:39  张善友  阅读(3008)  评论(0编辑  收藏  举报