了解如何创建新的 .NET Aspire 项目
云原生开发可能需要开发人员将不同的微服务(如数据库、消息队列和缓存)连接在一起。 .NET Aspire 通过提供一组模板来简化此过程,这些模板可用于创建和管理这些服务之间的连接。
在本单元中,了解如何创建新的 .NET Aspire 项目,了解两个入门项目模板之间的差异。 然后浏览生成的解决方案的结构。
.NET Aspire 先决条件
在创建新的 .NET Aspire 项目之前,需要在本地安装一些先决条件:
- .NET 8
- Visual Studio 2022 预览版
- Docker Desktop 或 Podman
- Visual Studio 中的 .NET Aspire 工作负载
在下一个练习中,你将完成安装这些先决条件的步骤。
选择最适合项目的 .NET Aspire 模板
目前提供了两个 .NET Aspire 入门模板:
.NET Aspire 应用程序:此模板是一个非常适合新项目的起点。 它仅包括“AspireSample.AppHost”和“AspireSample.ServiceDefaults”项目。 若要从头开始并添加自己的组件和服务,此模板非常有用。
.NET Aspire 入门应用程序:此模板包括“AspireSample.AppHost”和“AspireSample.ServiceDefaults”项目,还包括一个示例 Blazor 应用:AspireSample.Web,以及一个向其提供数据的 API:AspireSample.ApiService。 这些项目预配置了服务发现和其他常见 .NET Aspire 功能的基本示例。
这两个 Aspire 模板都提供了一个仪表板,用于监视服务的运行状况及其之间的流量。 该仪表板可一目了然地帮助你改进本地开发体验,让你大致了解应用的状态和结构。
还提供了三个项目模板:
- .NET Aspire 应用主机:仅包含一个应用主机(业务流程协调程序)项目的模板。
- .NET Aspire 服务默认设置:仅包含服务默认设置项目的模板。
- .NET Aspire 测试项目:仅包含应用主机项目的单元测试的模板。
使用 .NET Aspire 模板创建新的 .NET Aspire 项目
可以使用 Visual Studio 启动对话框创建新的 .NET Aspire 项目,或使用“文件”>“新建”>“项目”来创建。 还可以使用 .NET CLI 命令。 若要使用“.NET Aspire 应用程序”模板创建解决方案,请使用以下命令:
dotnet new aspire
或者,若要使用“.NET Aspire 入门应用程序”模板,请使用以下命令:
dotnet new aspire-starter
使用 Visual Studio 的好处是通过对话选择配置选项。 如果要使用默认设置创建新的 .NET Aspire 项目,.NET CLI 命令非常有用,但可以使用可选标志更改默认值。 在下一个练习中,你将了解如何使用这两种方法创建新的 .NET Aspire 项目。
探索 .NET Aspire 模板生成的解决方案的结构
.NET Aspire 模板会生成具有特定结构的解决方案。 此结构是入门应用程序的简化关系图,未启用缓存或测试选项:
────📂 AspireSample
├───📂 AspireSample.ApiService
│ ├───📂 Properties
│ │ └─── launchSettings.json
│ ├─── appsettings.json
│ ├─── AspireSample.ApiService.csproj
│ └─── Program.cs
├───📂 AspireSample.AppHost
│ ├───📂 Properties
│ │ └─── launchSettings.json
│ ├─── appsettings.json
│ ├─── AspireSample.AppHost.csproj
│ └─── Program.cs
├───📂 AspireSample.ServiceDefaults
│ ├─── AspireSample.ServiceDefaults.csproj
│ └─── Extensions.cs
├───📂 AspireSample.Web
│ ├───📂 Components
│ │ ├───📂 Layout
│ │ │ ├─── ...
│ │ ├───📂 Pages
│ │ │ ├─── ...
│ │ ├─── ...
│ ├───📂 Properties
│ │ └─── launchSettings.json
│ ├───📂 wwwroot
│ │ ├───...
│ ├─── appsettings.json
│ ├─── AspireSample.Web.csproj
│ ├─── Program.cs
│ └─── WeatherApiClient.cs
└─── AspireSample.sln
这两个模板都会添加“AppHost”和“ServiceDefaults”项目。 这些项目是使用 .NET Aspire 生成的应用程序的核心。 “AppHost”项目是入口点,负责充当业务流程协调程序。
“ServiceDefaults”项目包含应用程序的默认配置。 这些配置会在解决方案中的所有项目中重复使用。
上述解决方案还包括“Web”和“ApiService”项目。 “Web”项目是一个 Blazor WebAssembly 应用,该应用具有计数器,并调用 ApiService 来获取预测数据。 ApiService 是用于返回预测数据的简单 API。
演练代码结构
“AspireSample.AppHost”项目在 Program.cs 中具有以下代码:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
var apiService = builder.AddProject<Projects.AspireStarterSample_ApiService>("apiservice");
builder.AddProject<Projects.AspireStarterSample_Web>("webfrontend")
.WithReference(cache)
.WithReference(apiService);
builder.Build().Run();
逐行浏览上述代码:
创建类型为
IDistributedApplicationBuilder
的builder
变量。创建类型为
IResourceBuilder<RedisResource>
的cache
变量。使用包含项目的
IServiceMetadata
详细信息的泛型类型参数调用AddProject
,将“AspireSample.ApiService”项目添加到应用程序模型。这是 .NET Aspire 的基本构建基块。
AddProject
可配置应用中项目之间的服务发现和通信。 名称参数 apiservice 用于标识应用程序模型中的项目,并在稍后由想要与其通信的项目使用。再次调用
AddProject
,这次会将“AspireSample.Web”项目添加到应用程序模型。 它还将多个调用链接到WithReference
,传递 cache 和 apiservice 变量。WithReference
API 是 .NET Aspire 的另一个基本 API,它可将服务发现信息或连接字符串配置注入到要添加到应用程序模型的项目中。最后,
builder
会调用Build
和Run
以启动应用程序。