Lär dig hur du skapar ett nytt .NET Aspire-projekt
Molnbaserad utveckling kan kräva att utvecklare ansluter olika mikrotjänster som databaser, meddelandeköer och cacheminnen. .NET Aspire förenklar den här processen genom att tillhandahålla en uppsättning mallar som du kan använda för att skapa och hantera anslutningarna mellan dessa tjänster.
I den här lektionen lär du dig hur du skapar ett nytt .NET Aspire-projekt och förstår skillnaderna mellan de två startprojektmallarna. Utforska sedan strukturen för den lösning som genereras.
Krav för .NET Aspire
Innan du kan skapa ett nytt .NET Aspire-projekt finns det några förutsättningar som du behöver installera lokalt:
- .NET 8
- Förhandsversion av Visual Studio 2022
- Docker Desktop eller Podman
- .NET Aspire-arbetsbelastning i Visual Studio
I nästa övning går du igenom stegen för att installera dessa krav.
Välj den bästa .NET Aspire-mallen för projektet
Det finns för närvarande två .NET Aspire-startmallar:
.NET Aspire Application: Den här mallen är en bra utgångspunkt för nya projekt. Den innehåller bara projekten AspireSample.AppHost och AspireSample.ServiceDefaults . Den här mallen är användbar när du vill börja från början och lägga till dina egna komponenter och tjänster.
.NET Aspire Starter-program: Den här mallen innehåller projekten AspireSample.AppHost och AspireSample.ServiceDefaults , men innehåller även ett exempel på Blazor App AspireSample.Web och ett API som tillhandahåller data till det AspireSample.ApiService. Dessa projekt är förkonfigurerade med tjänstidentifiering och andra grundläggande exempel på vanliga .NET Aspire-funktioner.
Båda Aspire-mallarna tillhandahåller en instrumentpanel för att övervaka hälsotillståndet för tjänsterna och trafiken mellan dem. Instrumentpanelen hjälper dig att förbättra din lokala utveckling – som en överblick ger den dig en översikt över appens tillstånd och struktur.
Det finns också tre tillgängliga projektmallar:
- .NET Aspire App Host: En mall som endast innehåller ett programvärdprojekt (orchestrator).
- Standardvärden för .NET Aspire Service: En mall som endast innehåller standardprojektet för tjänsten.
- .NET Aspire Test Project: En mall som endast innehåller enhetstester för appvärdprojektet.
Skapa ett nytt .NET Aspire-projekt med hjälp av en .NET Aspire-mall
Du kan använda dialogrutan Visual Studio-start för att skapa ett nytt .NET Aspire-projekt eller Ett nytt>filprojekt.> Du kan också använda .NET CLI-kommandon. Om du vill skapa en lösning med .NET Aspire-programmallen använder du det här kommandot:
dotnet new aspire
Om du vill använda .NET Aspire Starter-programmallen använder du det här kommandot:
dotnet new aspire-starter
En fördel med att använda Visual Studio är att du väljer dina konfigurationsalternativ via dialogrutor. .NET CLI-kommandona är användbara när du vill skapa ett nytt .NET Aspire-projekt med standardinställningar, men du kan ändra standardinställningarna med valfria flaggor. I nästa övning får du se hur du skapar ett nytt .NET Aspire-projekt med båda metoderna.
Utforska strukturen för lösningar som genereras av .NET Aspire-mallarna
.NET Aspire-mallarna genererar en lösning med en specifik struktur. Den här strukturen är ett förenklat diagram för startprogrammet, utan att alternativen för cachelagring eller testning har aktiverats:
────📂 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
Båda mallarna lägger till AppHost - och ServiceDefaults-projekt . Dessa projekt är kärnan i ett program som skapats med .NET Aspire. AppHost-projektet är startpunkten och ansvarar för att fungera som orkestrerare.
ServiceDefaults-projektet innehåller standardkonfigurationen för programmet. Dessa konfigurationer återanvänds i alla projekt i din lösning.
Ovanstående lösning innehåller även webb- och ApiService-projekt . Webbprojektet är en Blazor WebAssembly-app som har en räknare och anropar ApiService för att hämta prognosdata. ApiService är ett enkelt API som returnerar prognosdata.
Gå igenom kodstrukturen
Projektet AspireSample.AppHost har följande kod i 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();
Gå igenom koden ovan, rad för rad:
Skapa en
builder
variabel som är enIDistributedApplicationBuilder
.Skapa en
cache
variabel som är enIResourceBuilder<RedisResource>
.Anropa
AddProject
med en parameter av generisk typ som innehåller projektetsIServiceMetadata
information och lägg till projektet AspireSample.ApiService i programmodellen.Det här är en grundläggande byggsten för .NET Aspire. Konfigurerar
AddProject
tjänstidentifiering och kommunikation mellan projekten i din app. Namnargumentet apiservice används för att identifiera projektet i programmodellen och används senare av projekt som vill kommunicera med den.Anropar
AddProject
igen, den här gången lägger du till projektet AspireSample.Web i programmodellen. Den kedjar också flera anrop till attWithReference
skicka variablerna cache och apiservice .API:et
WithReference
är ett annat grundläggande API för .NET Aspire, som antingen matar in information om tjänstidentifiering eller anslutningssträng konfiguration i projektet som läggs till i programmodellen.Slutligen anropar
builder
Build
ochRun
startar programmet.