如何向现有 .NET 应用添加业务流程
.NET Aspire 可以被分为针对三个新式云原生应用面临的问题的解决方案。 这些功能是:
- 管理微服务之间的业务流程的复杂性。
- 简化微服务通过 NuGet 包使用组件的方式。
- 通过工具和模板支持开发人员速度。
在本单元中,了解使用 .NET Aspire 业务流程会如何为现有的云原生应用带来好处。 然后,了解如何在 .NET Aspire 业务流程中注册应用,并检查对解决方案所做的更改。
.NET Aspire 业务流程的优点
业务流程是云原生应用中对各种服务的协调和管理。 .NET Aspire 提供用于管理解决方案的服务发现、环境变量和容器配置的抽象。 这些抽象还在具有许多组件和服务的应用之间提供一致的设置模式。
.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 AppHost 和 ServiceDefaults 项目。 将更多项目添加到已编排的解决方案时,对话框会通知你 AppHost 项目已更新以包含这些项目。
如果要创建新项目,在新项目工作流期间,Visual Studio 会询问是否要在 .NET Aspire 业务流程中登记。
Aspire 对现有解决方案所做的更改
将 .NET Aspire 业务流程添加到解决方案时,会发生以下更改:
- AppHost 项目被添加。 项目包含业务流程代码。 它将成为应用的入口点,负责启动和停止应用。 它还管理服务发现和连接字符串管理。
- ServiceDefaults 项目被添加。 该项目会配置 OpenTelemetry,添加默认运行状况检查终结点,并通过
HttpClient
启用服务发现。 - 解决方案的默认启动项目更改为 AppHost。
- 在业务流程中注册的项目的依赖项会被添加到 AppHost 项目中。
- .NET Aspire 仪表板被添加到你的解决方案中,这会启用访问你的解决方案中的所有项目终结点的快捷方式。
- 仪表板为解决方案中的项目添加日志、跟踪和指标。
如果将业务流程添加到 Web 应用项目,.NET Aspire 会自动添加对 ServiceDefaults 项目的引用。 然后,它会对 Program.cs 中的代码进行以下更改:
- 添加对
AddServiceDefaults
的调用,用于启用默认 OpenTelemetry、计量和服务发现。 - 添加对
MapDefaultEndpoints
的调用,用于启用默认终结点(例如/health
和/alive
)。