ToB企服应用市场:ToB评测及商务社交产业平台

标题: 技术速递|将 .NET Aspire 添加到您现有的 .NET 应用程序中 [打印本页]

作者: 刘俊凯    时间: 2024-8-26 08:47
标题: 技术速递|将 .NET Aspire 添加到您现有的 .NET 应用程序中
作者:Jon Galloway
排版:Alan Wang
  .NET Aspire 是一个针对 .NET 的新型云停当堆栈,可帮助开发人员快速轻松地开发分布式应用程序。您可能已经看过一些演示,展示了大型 .NET 解决方案,此中布满了复杂的云依赖项,比如 Redis、Kafka 和 Postgres,也许您会想:这些技术也许有一天会用到,但对于我当前的项目来说,并没有太多的实际用途。
但 .NET Aspire 不仅仅涉及尖端技术和新兴应用程序;它还可以让您当前的应用更加简朴。使用 .NET Aspire,您可以简化启动过程、改进监控并提高应用程序的可靠性。此外,您可以使用服务发现来加强您的应用程序,即使您尚未准备好使用更复杂的功能或服务(如 Redis 或容器化部署)。
在这篇文章中,我们将介绍怎样轻松地改进现有解决方案 - 只需更轻松地维护和添加您已经在使用的功能。当然,您可以更轻松地集成更复杂的云依赖项和功能,这很好……但即使您从未如许做过,这仍然是一种胜利。
TLDR:在不到 5 分钟的时间内,您可以将 .NET Aspire 添加到您现有的应用程序中并获得仪表板、运行状况查抄等…所有这些都无需改变您的应用程序的工作方式、CI/CD 管道或部署过程。
什么是 .NET Aspire?

如果您问五个人,您很可能会得到五个不同的答案。老实说,这有点难以形貌,尝试简短地形貌可能会变成一些流行语宾果游戏。实际上,这只是解决题目的一种方法:构建分布式应用程序很难。即使只是运行应用程序也必要启动一个或多个服务和前端,并确保它们可以相互通讯,这可能会令人沮丧。如果这更轻易,那不是很好吗?这就是 .NET Aspire 的目的,成为分布式应用程序的构建块,使它们更易于观察、更具弹性、更可扩展和更易于管理。
让我们来看看很多应用程序是怎样随着时间的推移而演变的。很多应用程序都是从单一的整体概念验证开始的。您有一个带有数据库的应用程序。

假设您的概念验证成功,那么除了数据库之外,几乎每个现代应用程序都会发展到至少包罗一个前端和一个后端。

然后,也许,如果我们的应用程序的使用和功能随着时间的推移不停增长,应用程序将变得真正分布式,依赖于大量的分布式依赖项。

但重点是!即使在非常简朴的概念验证阶段,当然在前端-后端-数据库阶段,我们也可以从 .NET Aspire 中受益!只需几行代码,无需弄乱我们的 CI 或部署,我们就可以真正简化我们的日常开发人员体验。
第 1 步:使用 ServiceDefaults 启用因我们太忙而没有启用的 .NET 功能

多年来,ASP.NET Core 团队不停在开发一些很酷的功能,比如跟踪、运行状况查抄和弹性。我已经做了多次关于“一小时 ASP.NET 改造”的会议演讲,我们只需打开并配置多年来不停存在的所有这些酷炫功能即可。但题目是……在阅读文档并训练之后,做这个演讲必要一个小时!如果我只是拨动一下“启用专业模式”开关会怎么样?
这就是 Service Defaults 为您做的事情。您只需打开 Service Defaults,即可获得智能日记记录、运行状况查抄、弹性等功能,这些都基于 .NET 团队针对 ASP.NET Core 应用和服务的发起。如果您乐意,您可以轻松编辑 ServiceDefaults 项目中的 Program.cs 文件,但您不必如许做。只需将其打开即可。
添加 ServiceDefaults 项目

让我们看一个简朴的前端 - 后端应用程序的示例。我将使用 Jeff Fritz 在 Let’s Learn .NET Aspire 运动系列中提供的新 MyWeatherHub 示例,从 start-with-api 代码开始。
打开解决方案,我们将看到有两个项目:

让我们将 Service Defaults 添加到这个解决方案中,以便我们可以在前端和后端同时获得运行状况查抄、日记记录和其他推荐的功能。
在安装了 C# Dev Kit 的 Visual Studio 2022 或 Visual Studio Code 中,我们必要实行以下操纵:
在 Visual Studio 2022 中的外观如下:

在 Visual Studio Code 中,它如下所示:

您还可以使用以下下令从下令行添加服务默认值:
  1. dotnet new aspire-servicedefaults -n ServiceDefaults
复制代码
以上所有选项都只是将一个新项目放入您的解决方案中,该项目了解大多数 ASP.NET Core 分布式应用程序的最佳设置。但是,您现有的应用程序尚未使用它。接下来我们将毗连它。
配置 ServiceDefaults

在 Api 和 MyWeatherHub 项目中添加对 ServiceDefaults 项目的引用:
   Visual Studio 2022 提示
在 Visual Studio 2022 中,您可以将项目拖放到另一个项目上以添加引用。
  
  1. builder.AddServiceDefaults();
复制代码
  1. app.MapDefaultEndpoints();
复制代码
运行应用程序

首先,我们将使用多项目启动配置来启动应用程序。这很好,这是我们多年来不停接纳的做法,但我不得不认可,我并不喜欢这种方式。请记住,我们将在下一步中简化此操纵。我们将分两步进行,以明白服务默认值中发生了什么以及 AppHost 添加了哪些部分。
如果您使用的是 Visual Studio 2022,请右键单击 MyWeatherHub 解决方案并转到属性。选择 Api 和 MyWeatherHub 作为启动项目,然后选择 OK。

现在单击“Start”以启动并调试两个项目。
如果您使用的是 Visual Studio Code,请使用“运行和调试”面板运行 Api 和 MyWeatherHub 项目。示例项目已包罗一个 launch.json 文件,此中包罗运行这两个项目所需的配置。
测试 Service Defaults 更改


  1. Polly: Information: Execution attempt. Source: '-standard//Standard-Retry', Operation Key: '', Result: '200', Handled: 'False', Attempt: '0', Execution Time: '13.0649'
复制代码
  1. Polly: Warning: Execution attempt. Source: '-standard//Standard-Retry', Operation Key: '', Result: '500', Handled: 'True', Attempt: '0', Execution Time: '9732.8258'
  2. Polly: Warning: Resilience event occurred. EventName: 'OnRetry', Source: '-standard//Standard-Retry', Operation Key: '', Result: '500'
  3. System.Net.Http.HttpClient.NwsManager.ClientHandler: Information: Sending HTTP request GET http://localhost:5271/forecast/AKZ318
复制代码
一切正常……每个应用程序的输出都会在单独的控制台窗口中弹出,我们可以在终端中看到运行状况查抄和日记。因此,我们打开了所有这些功能真是太好了,但管理所有这些 URL、浏览器选项卡和控制台窗口有点贫苦。您终极会在它们之间按 Alt-Tab 键,这是一种非常摆脱的体验。

Service Defaults 在单个项目级别上运行得很好,但它无法帮助我们管明白决方案中的多个项目。这就是 AppHost 的作用所在。
第 2 步:使用 AppHost 简化启动并添加精美的仪表板

好吧,这很酷!我们在解决方案中添加了一个项目和两行代码,并获得了运行状况查抄、日记记录、弹性等等。
但我们可以通过添加 AppHost 来让它变得更好。这种多项目配置功能是可行的,但是当我们向解决方案中添加其他项目时,设置和更新会有点贫苦。一旦我们开始运行,我们就必须浏览一系列具有不同端口的 URL,并分别管理每个项目。例如,如果我们想查看日记或输出,我们必须查抄每个项目的控制台窗口。随着我们向解决方案添加更多 API 和服务,环境会变得更糟——必要管理更多的 URL、必要查抄更多的控制台窗口等。我们可能在生产中设置了一些花哨的仪表板和监控,但这对我的开发没有帮助。
AppHost 有很多很棒的功能,但我最喜欢的两个是针对上述题目的解决方案:它简化了项目启动,并添加了一个很棒的仪表板来监控和管理我开发环境中的应用程序。了解其作用的最好方法是将其添加到我们的解决方案中。
添加 AppHost 项目

这是我们之前使用 ServiceDefaults 实行的尺度“添加项目”步骤,但这次我们将选择“.NET Aspire App Host”作为项目模板。在 Visual Studio 2022 或安装了 C# DevKit 的 Visual Studio Code 中:


从下令行,您可以实行以下操纵:
  1. dotnet new aspire-apphost -n AppHost
复制代码
就像我们添加 Service Defaults, 时一样,我们必要添加项目引用和几行代码来使 AppHost 工作。
添加项目引用

在新的 AppHost 项目中添加对 Api 和 MyWeatherHub 项目的引用:
注意:如果您记得之前的提示,可以将项目拖放到另一个项目上以添加引用。
添加这些引用时,源生成器会主动生成引用 App Host 中的项目所需的代码。
编排应用程序

在 AppHost 项目中,更新 Program.cs 文件,在 var builder = DistributedApplication.CreateBuilder(args); 行后立即添加以下行:
  1. var api = builder.AddProject<Projects.Api>("api");
  2. var web = builder.AddProject<Projects.MyWeatherHub>("myweatherhub");
复制代码
用最简朴的方式运行应用程序!
之前,我们设置了一个多项目启动配置文件。这仍然有效,但从现在开始,您不必为此烦恼。而是将 AppHost 项目设置为启动项目。它了解所有其他项目,并会主动启动它们。这意味着,如果您在开始时添加 AppHost(或使用 .NET Aspire Starter Application 模板或 .NET Aspire Application 模板),则不再必要设置多项目启动配置文件。更好的是,如果您向解决方案添加更多服务,AppHost 也会主动选择它们。
在 Visual Studio 中,您可以通过右键单击 AppHost,然后单击“设置默认项目”并单击“启动”,将 AppHost 项目设置为 Visual Studio 中的启动项目。
如果您使用的是 Visual Studio Code,请将 launch.json 文件的内容替换为以下内容,然后在运行和调试面板中点击运行。
  1. {
  2.         "version": "0.2.0",
  3.         "configurations": [
  4.             {
  5.                 "name": "Run AppHost",
  6.                 "type": "dotnet",
  7.                 "request": "launch",
  8.                 "projectPath": "${workspaceFolder}\\AppHost\\AppHost.csproj"
  9.             }
  10.         ]
  11.     }
复制代码
嘿,我们有一个仪表板!

还记得我们必须浏览一系列不同的 URL 才能查看我们的应用及其运行状况查抄吗?现在,AppHost 将主动启动一个包罗我们所有服务及其依赖项的仪表板。它将所有运行状况查抄、跟踪、日记和环境变量等信息汇总到一个地方。而且,如果我们向解决方案添加更多服务,它们将主动体现在仪表板中。让我们来看看。

首先,让我们看一下资源。这是我们解决方案中所有资源的便捷列表。我们可以看到 API 和 MyWeatherHub 项目,并在启动时观察它们的状态。我们还可以点击链接访问它们的端点、日记和跟踪信息。
我们之前添加的 ServiceDefaults 项目会主动为我们的所有项目配置跟踪。我们可以在 Traces 选项卡中看到这一点。这是了解应用程序中的时间和依赖关系的好方法。

Metrics 选项卡向我们展示了有关应用程序的大量信息,包罗 CPU 和内存使用环境以及请求和错误的数目。同样,这些都是由 ServiceDefaults 项目主动为我们设置的,并在 AppHost 仪表板中体现。

Structured 选项卡展示了我们应用中的所有结构化日记。这是查看应用程序中错误和其他紧张信息的好方法。

总结

重点是,.NET Aspire 不仅适用于新应用程序或大型企业解决方案。它现在也得当您,它可以让您现有的应用程序变得更好。您可以将其添加到现有解决方案中,只需几行代码即可获得很多好处。而且,如果您还没有准备好使用更高级的功能,如服务发现或容器化部署,那也没关系。您仍然可以从 .NET Aspire 为您的应用程序带来的简朴性和可靠性中受益。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4