如何向现有 .NET 应用添加业务流程

已完成

.NET Aspire 可以被分为针对三个新式云原生应用面临的问题的解决方案。 这些功能是:

  1. 管理微服务之间的业务流程的复杂性。
  2. 简化微服务通过 NuGet 包使用组件的方式。
  3. 通过工具和模板支持开发人员速度。

在本单元中,了解使用 .NET Aspire 业务流程会如何为现有的云原生应用带来好处。 然后,了解如何在 .NET Aspire 业务流程中注册应用,并检查对解决方案所做的更改。

.NET Aspire 业务流程的优点

业务流程是云原生应用中对各种服务的协调和管理。 .NET Aspire 提供用于管理解决方案的服务发现、环境变量和容器配置的抽象。 这些抽象还在具有许多组件和服务的应用之间提供一致的设置模式。

显示 .NET Aspire AppHost 项目与应用中其他服务之间的关系的关系图。

.NET Aspire 有三种它支持业务流程的基本计算类型:

  • ProjectResource:.NET 项目,如 ASP.NET Core Web 应用。
  • ContainerResource:容器映像,例如包含 Redis 的 Docker 映像。
  • ExecutableResource:可执行文件。

将 .NET Aspire 与你使用 Docker Compose 管理服务发现的方式进行比较。 Docker Compose 非常出色,但当你所需的全部是运行多个项目或可执行文件时,它的工作效率就开始变得低下。 你需要生成容器映像,编写 YAML 以连接它们,然后在容器内运行应用。 此外,还有环境变量替换(和包含)以及无 IntelliSense,很难确定运行的确切内容和原因。 调试也可能很困难。

通过声明性代码进行配置更好。 使用 .NET Aspire 时,你无需了解任何现有知识以外的内容。 .NET Aspire 是一种更好的体验,可以轻松地开始使用,它能够通过真正的编程语言纵向扩展到 Docker Compose 等业务流程协调程序。

.NET Aspire 业务流程还通过以下方式支持开发:

  • 应用组合:.NET Aspire 指定构成应用程序的 .NET 项目、容器、可执行文件和云资源。
  • 服务发现和连接字符串管理:应用主机管理注入正确的连接字符串和服务发现信息,以简化开发人员体验。

在 .NET Aspire 业务流程中登记现有应用

Visual Studio 提供用于在 .NET Aspire 业务流程中登记现有项目的菜单。

“添加”菜单的屏幕截图,其中突出显示了 .NET Aspire Orchestrator 支持。

第一次向解决方案添加业务流程时,对话框会请求项目名称前缀,并说明添加 .NET Aspire AppHostServiceDefaults 项目。 将更多项目添加到已编排的解决方案时,对话框会通知你 AppHost 项目已更新以包含这些项目。

如果要创建新项目,在新项目工作流期间,Visual Studio 会询问是否要在 .NET Aspire 业务流程中登记。

新项目工作流的屏幕截图,其中突出显示了“Aspire 业务流程中登记”选项。

Aspire 对现有解决方案所做的更改

将 .NET Aspire 业务流程添加到解决方案时,会发生以下更改:

  • AppHost 项目被添加。 项目包含业务流程代码。 它将成为应用的入口点,负责启动和停止应用。 它还管理服务发现和连接字符串管理。
  • ServiceDefaults 项目被添加。 该项目会配置 OpenTelemetry,添加默认运行状况检查终结点,并通过 HttpClient 启用服务发现。
  • 解决方案的默认启动项目更改为 AppHost
  • 在业务流程中注册的项目的依赖项会被添加到 AppHost 项目中。
  • .NET Aspire 仪表板被添加到你的解决方案中,这会启用访问你的解决方案中的所有项目终结点的快捷方式。
  • 仪表板为解决方案中的项目添加日志、跟踪和指标。

如果将业务流程添加到 Web 应用项目,.NET Aspire 会自动添加对 ServiceDefaults 项目的引用。 然后,它会对 Program.cs 中的代码进行以下更改:

  • 添加对 AddServiceDefaults 的调用,用于启用默认 OpenTelemetry、计量和服务发现。
  • 添加对 MapDefaultEndpoints 的调用,用于启用默认终结点(例如 /health/alive)。