练习 - 创建新的 .NET Aspire 项目
在开始为公司的最新项目提供新服务之前,需要检查系统是否具有 .NET Aspire 的所有先决条件。 检查的最佳方法是使用初学者模板创建新的 .NET Aspire 项目。
在练习中,你将安装所有必备组件,然后创建新的 .NET Aspire Starter 应用。 然后,你将了解如何使用 Redis 将缓存组件添加到应用。 最后,你将测试应用程序并快速浏览 Aspire 仪表板。
选择此选项卡,以查看本练习中的 Visual Studio 步骤。
选择此选项卡可查看终端中包含 dotnet CLI 命令的本练习中的步骤。
安装先决条件
我们讨论了上一单元中的先决条件。 让我们逐步了解如何立即安装它们。
安装 .NET 8
单击此 .NET 8 链接,然后根据操作系统选择正确的安装程序。 例如,如果使用的是 Windows 11 和新式处理器,请选择适用于 Windows 的 x64 .NET 8 SDK。
下载完成后,运行安装程序并按照说明操作。 在终端窗口中,运行以下命令以验证安装是否成功:
dotnet --version
应会看到所安装的 .NET SDK 版本号。 例如:
8.0.300-preview.24203.14
安装 Visual Studio 2022 预览版
单击此 Visual Studio 2022 预览版链接,然后选择“下载预览版”。 下载完成后,运行安装程序并按照说明操作。
安装 Docker Desktop
单击此 Docker Desktop 链接,然后根据操作系统选择正确的安装程序。 下载完成后,运行安装程序并按照说明操作。
打开 Docker Desktop 应用程序并接受服务协议。
安装 .NET Aspire 工作负荷
使用 Visual Studio 安装 .NET Aspire 工作负荷:
打开 Visual Studio 安装程序。
选择 Visual Studio 旁边的“修改”。
选择“ASP.NET 和 Web 开发”工作负荷。
在“安装详细信息”面板中,选择“.NET Aspire SDK(预览版)”。
选择“修改”以安装 .NET Aspire 组件。
检查是否已安装最新版本的 .NET Aspire,在新终端中运行以下命令:
dotnet workload list
使用 .NET CLI 安装 .NET Aspire 工作负载:
打开新的终端窗口。
使用以下命令更新 .NET 工作负载:
dotnet workload update
应会看到一条消息,指出工作负载已成功更新。
No workloads installed for this feature band. To update workloads installed with earlier SDK versions, include the --from-previous-sdk option.
Updated advertising manifest microsoft.net.sdk.ios.
Updated advertising manifest microsoft.net.workload.mono.toolchain.net6.
Updated advertising manifest microsoft.net.sdk.android.
Updated advertising manifest microsoft.net.workload.emscripten.net7.
Updated advertising manifest microsoft.net.workload.emscripten.net6.
Updated advertising manifest microsoft.net.sdk.macos.
Updated advertising manifest microsoft.net.workload.emscripten.current.
Updated advertising manifest microsoft.net.workload.mono.toolchain.current.
Updated advertising manifest microsoft.net.sdk.maui.
Updated advertising manifest microsoft.net.workload.mono.toolchain.net7.
Updated advertising manifest microsoft.net.sdk.maccatalyst.
Updated advertising manifest microsoft.net.sdk.tvos.
Updated advertising manifest microsoft.net.sdk.aspire.
No workloads installed for this feature band. To update workloads installed with earlier SDK versions, include the --from-previous-sdk option.
Successfully updated workload(s): .
使用以下命令安装 .NET Aspire 工作负载:
dotnet workload install aspire
应会看到一条消息,指出已安装 aspire 工作负荷。
Installing Aspire.Hosting.Sdk.Msi.x64 ...... Done
Installing Aspire.ProjectTemplates.Msi.x64 ..... Done
Installing Aspire.Hosting.Orchestration.win-x64.Msi.x64 ............. Done
Installing Aspire.Hosting.Msi.x64 ..... Done
Installing Aspire.Dashboard.Sdk.win-x64.Msi.x64 ....... Done
Successfully installed workload(s) aspire.
使用以下命令验证是否安装了 .NET Aspire 工作负载:
dotnet workload list
安装工作负荷后,会看到:
Installed Workload Id Manifest Version Installation Source
---------------------------------------------------------------------------------------------
aspire 8.0.0/8.0.100 SDK 8.0.300-preview.24203, VS 17.10.34902.84
Use `dotnet workload search` to find additional workloads to install.
创建新的 .NET Aspire Starter 应用
安装必备组件后,让我们创建新的应用。
打开“Visual Studio”。 在对话框中,选择“创建新项目”。
在“搜索模板”框中,输入“aspire”。
选择“.NET Aspire 初学者应用程序”,然后选择“下一步”。
在“解决方案名称”框中,输入“AspireTestApp”。
在“位置”框中,输入要在其中创建新应用的文件夹。
选择下一步。
将默认的“.NET 8.0(长期支持)”保留为选中状态。
取消选中“使用 Redis 进行缓存(需要受支持的容器运行时)”。
后续步骤将手动添加 Redis 支持。
选择创建。
从菜单中选择“调试”,然后选择“启动调试”(或者,按 F5)。
如果系统提示启动 Docker 引擎,请选择“是”。
在同一终端窗口中,导航到要在其中创建新测试应用的文件夹。
运行以下命令以创建新的 .NET Aspire Starter 应用:
dotnet new aspire-starter --output AspireTestApp
显示以下输出:
The template ".NET Aspire Starter Application" was created successfully.
This template contains technologies from parties other than Microsoft, see https://aka.ms/aspire/1.0-third-party-notices for details.
Processing post-creation actions...
Restoring C:\Users\...\source\repos\AspireTestApp\AspireTestApp.sln:
Determining projects to restore...
Restored C:\Users\...\source\repos\AspireTestApp\AspireTestApp.ApiService\AspireTestApp.ApiService.csproj (in 1.38
sec).
Restored C:\Users\...\source\repos\AspireTestApp\AspireTestApp.Web\AspireTestApp.Web.csproj (in 1.38 sec).
Restored C:\Users\...\source\repos\AspireTestApp\AspireTestApp.AppHost\AspireTestApp.AppHost.csproj (in 1.38 sec).
Restored C:\Users\...\source\repos\AspireTestApp\AspireTestApp.ServiceDefaults\AspireTestApp.ServiceDefaults.csproj
(in 1.38 sec).
Restore succeeded.
Restoring C:\Users\...\source\repos\AspireTestApp\AspireTestApp.AppHost\AspireTestApp.AppHost.csproj:
Determining projects to restore...
All projects are up-to-date for restore.
Restore succeeded.
Restoring C:\Users\...\source\repos\AspireTestApp\AspireTestApp.ServiceDefaults\AspireTestApp.ServiceDefaults.csproj:
Determining projects to restore...
All projects are up-to-date for restore.
Restore succeeded.
Restoring C:\Users\...\source\repos\AspireTestApp\AspireTestApp.ApiService\AspireTestApp.ApiService.csproj:
Determining projects to restore...
All projects are up-to-date for restore.
Restore succeeded.
Restoring C:\Users\...\source\repos\AspireTestApp\AspireTestApp.Web\AspireTestApp.Web.csproj:
Determining projects to restore...
All projects are up-to-date for restore.
Restore succeeded.
运行应用:
dotnet run --project AspireTestApp/AspireTestApp.AppHost
你应该会看到以下输出:
Building...
info: Aspire.Hosting.DistributedApplication[0]
Distributed application starting.
info: Aspire.Hosting.DistributedApplication[0]
Application host directory is: C:\Users\...\source\repos\AspireTestApp\AspireTestApp.AppHost
info: Aspire.Hosting.DistributedApplication[0]
Now listening on: http://localhost:15157
info: Aspire.Hosting.DistributedApplication[0]
Distributed application started. Press CTRL-C to stop.
按住 Ctrl + 单击监听 URL,打开此 .NET Aspire 仪表板。 在上面的示例中,URL 为 http://localhost:15157。
仪表板将在默认 Web 浏览器中打开。
选择 webfrontend 终结点 URL。 该端口是随机分配的,因此仪表板可能不匹配。
Blazor 应用有一个简单的计数器页和一个天气页,用于调用后端 API 服务来获取要显示的预测数据。
关闭 Blazor 应用和 .NET Aspire 仪表板的浏览器选项卡。 在 Visual Studio 中,停止调试。
将缓存组件添加到 .NET Aspire 项目
现在,让我们将 Redis 缓存组件添加到 .NET Aspire 项目。 我们将从应用主机开始:
- 在“解决方案资源管理器”中,右键单击“AspireTestApp.AppHost”项目,然后选择“管理 NuGet 包”。
- 选择“浏览”选项卡,然后选择“包括预发行版” 。
- 搜索“aspire redis”,然后选择“Aspire.Hosting.Redis”包。
- 在右窗格中,对于“版本”选择最新的 8.0.0,然后选择“安装”。
- 在“许可接受”对话框中,选择“我接受”。
导航到 Web 项目文件夹:
cd AspireTestApp/AspireTestApp.AppHost
将 Redis 包添加到项目:
dotnet add AspireTestApp.AppHost.csproj package Aspire.Hosting.Redis --version 8.0.0
若要将 Redis 配置添加到应用主机项目,请打开“AspireTestApp.AppHost/Program.cs”文件并添加以下代码:
// Add Redis
var redis = builder.AddRedis("cache");
此代码将业务流程配置为创建本地 Redis 容器实例。
将当前 webfrontend 服务更改为使用 Redis 缓存。 更改此代码:
builder.AddProject<Projects.AspireTestApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService);
更改为以下代码:
builder.AddProject<Projects.AspireTestApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WithReference(redis);
WithReference
扩展方法将 UI 配置为自动使用 Redis 进行输出缓存。
接下来,可以在使用项目中使用 Redis。
- 在“解决方案资源管理器”中,右键单击“AspireTestApp.Web”项目,然后选择“管理 NuGet 包”。
- 选择“浏览”选项卡,然后选择“包括预发行版” 。
- 搜索“aspire redis”,然后选择“Aspire.StackExchange.Redis.OutputCaching”包。
- 在右窗格中,对于“版本”选择最新的 8.0.0,然后选择“安装”。
- 在“许可接受”对话框中,选择“我接受”。
导航到 Web 项目文件夹:
cd AspireTestApp/AspireTestApp.Web
将 Redis 包添加到项目:
dotnet add package Aspire.StackExchange.Redis.OutputCaching --version 8.0.0
现在,使用 Visual Studio 添加代码以使用 Redis 组件。
如果需要,请在 Visual Studio 中打开 AspireTestApp 解决方案。
在“解决方案资源管理器”的“AspireTestApp.Web”项目中,选择“Program.cs”。
在 var builder = WebApplication.CreateBuilder(args);
下添加此代码:
// Add Redis caching
builder.AddRedisOutputCache("cache");
此代码:
- 将 ASP.NET 核心输出缓存配置为使用具有指定连接名称的 Redis 实例。
- 自动启用相应的运行状况检查、日志记录和遥测。
将 AspireTestApp.Web/Components/Pages/Home.razor 的内容替换为以下代码:
@page "/"
@attribute [OutputCache(Duration = 10)]
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new app on @DateTime.Now
在前面的代码中,OutputCache
属性指定 10 秒的持续时间。 缓存页面后,10 秒窗口中的每个后续请求都会接收缓存的输出。
可以看到,Aspire 旨在方便向应用程序添加新组件。 可以通过添加 NuGet 包向应用程序添加新组件,然后将几行代码添加到 Web 以及 AppHost 项目中的 Program.cs 文件。 然后,Aspire 会自动配置 Redis 容器和输出缓存。
测试应用程序
现在,让我们运行应用程序以查看缓存是否正常运行。 在 Visual Studio 中:
从菜单中选择“调试”,然后选择“启动调试”(或者,按 F5)。 解决方案生成,Aspire 仪表板将在默认 Web 浏览器中打开。
选择 webfrontend 服务的“终结点” URL 以查看应用程序的主页。
在浏览器中,刷新页面几次。 页面上的时间不会在 10 秒缓存持续时间内更改。
该解决方案创建 Redis 容器。 打开 Docker Desktop 以查看容器正在运行。
若要停止 Visual Studio 中运行的解决方案,请按 Shift+F5。
打开“Docker Desktop”,然后选择“容器/应用”。 应会看到 redis:latest 不再运行。
你已经了解了使用 .NET Aspire 将新缓存组件添加到应用程序是多么容易。 添加了 NuGet 包,然后添加了几行代码。 .NET Aspire 会自动配置 Redis 容器和输出缓存。