Události
Vytváření inteligentních aplikací
17. 3. 23 - 21. 3. 23
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Aplikace nativní pro cloud často vyžadují připojení k různým službám, jako jsou databáze, řešení úložiště a ukládání do mezipaměti, poskytovatelé zasílání zpráv nebo jiné webové služby. .NET .NET Aspire je navržená tak, aby zjednodušila připojení a konfigurace mezi těmito typy služeb. Tento průvodce rychlým zahájením ukazuje, jak vytvořit řešení šablony pro startovací aplikaci .NET.NET Aspire.
V tomto rychlém startu prozkoumáte následující úlohy:
Pokud chcete pracovat s .NET.NET Aspire, potřebujete místně nainstalovat následující:
Další informace najdete v tématu .NET.NET Aspire nastavení a nástrojea .NET.NET Aspire SDK.
Pokud chcete vytvořit novou úvodní aplikaci .NET Aspire, můžete použít Visual Studio, Visual Studio Codenebo rozhraní příkazového řádku .NET.
Visual Studio poskytuje šablony .NET Aspire, které za vás zpracovávají některé počáteční konfigurace nastavení. Pomocí následujících kroků vytvořte projekt pro tento rychlý start:
V horní části Visual Studiopřejděte na File>New>Project.
V dialogovém okně vyhledejte Aspire a vyberte .NET.NET Aspire startovací aplikace. Vyberte Další.
Na obrazovce Konfigurace nového projektu:
Na obrazovce Další informace:
Visual Studio vytvoří nové řešení, které je navrženo pro použití .NET Aspire.
Visual Studio Code poskytuje .NET Aspire šablony projektu, které zpracovávají některé počáteční konfigurace nastavení za vás. Pomocí následujících kroků vytvořte projekt pro tento rychlý start:
Pokud jste ještě nenainstalovali šablony .NET.NET Aspire, spusťte následující příkaz dotnet new install
:
dotnet new install Aspire.ProjectTemplates
Předchozí příkaz rozhraní příkazového řádku .NET zajistí, že máte k dispozici .NET Aspire šablony. Pokud chcete ze šablony vytvořit .NET.NET Aspire úvodní aplikaci, spusťte následující příkaz dotnet new
:
dotnet new aspire-starter --use-redis-cache --output AspireSample
Více informací najdete v dotnet new. Rozhraní příkazového řádku .NET vytvoří nové řešení, které je strukturované pro využití .NET Aspire.
Další informace o dostupných šablonách najdete v tématu šablon .NET.NET Aspire.
Ukázková aplikace obsahuje front-endovou Blazor aplikaci, která komunikuje s Minimal API projektem. Projekt API se používá k poskytování falešných dat o počasí frontendu. Front-endová aplikace je nakonfigurovaná tak, aby používala zjišťování služeb pro připojení k projektu rozhraní API. Projekt rozhraní API je nakonfigurovaný tak, aby používal ukládání výstupu do mezipaměti s Redis. Ukázková aplikace je teď připravená k testování. Chcete ověřit následující podmínky:
V Visual Studionastavte projekt AspireSample.AppHost jako spouštěný projekt tak, že kliknete pravým tlačítkem myši na projekt v Průzkumníku řešení a vyberete Nastavit jako spouštěný projekt. Je možné, že již byl automaticky nastaven jako spouštěný projekt. Po nastavení spusťte aplikaci stisknutím klávesy F5 nebo (ctrl + F5 spustit bez ladění).
Před spuštěním aplikace musíte důvěřovat certifikátu ASP.NET Corelocalhost. Spusťte následující příkaz:
dotnet dev-certs https --trust
Další informace najdete v tématu Řešení potíží s nedůvěryhodným certifikátem localhost v .NET Aspire. Podrobné informace o řešení potíží s localhost certifikáty na Linuxnajdete v tématu ASP.NET Core: problém s úložištěm GitHub #32842.
V Visual Studio Codespusťte aplikaci stisknutím klávesy F5. Zobrazí se výzva, abyste vybrali jazyk a jazyk C# se navrhuje. Vyberte
Pokud používáte .NET Aspirepoprvé nebo se jedná o nový počítač s novou instalací .NET, zobrazí se výzva k instalaci certifikátu podepsaného svým držitelem (self-signed localhost) a projekt se nespustí:
Vyberte Anoa zobrazí se informační zpráva označující, že certifikát podepsaný svým držitelem úspěšně vytvořil:
Pokud problém přetrvává, zavřete všechna okna prohlížeče a zkuste to znovu. Další informace najdete v tématu Řešení potíží s nedůvěryhodným certifikátem localhost v .NET Aspire.
Tip
Pokud používáte MacOS a používáte Safari, když se prohlížeč otevře, pokud je stránka prázdná, budete možná muset stránku aktualizovat ručně.
dotnet run --project AspireSample/AspireSample.AppHost
Další informace najdete v dotnet run.
Aplikace zobrazí řídicí panel .NET.NET Aspire v prohlížeči. Později se na řídicí panel podíváte podrobněji. Prozatím vyhledejte projekt webfrontendu v seznamu zdrojů a vyberte koncový bod localhost projektu.
Na domovské stránce rozhraní webové aplikace se zobrazuje "Ahoj, světe!" (Hello, world!).
Pomocí levého navigačního panelu přejděte z domovské stránky na stránku počasí. Na stránce počasí se zobrazují data o počasí. Poznamenejte si některé hodnoty reprezentované v tabulce prognóz.
Pokračujte v občasné aktualizaci stránky po dobu 10 sekund. Během 10 sekund se vrátí data uložená v mezipaměti. Nakonec se zobrazí jiná sada dat o počasí, protože se data náhodně generují a mezipaměť se aktualizuje.
🤓 Blahopřejeme! Vytvořili jste a spustili jste první .NET.NET Aspire řešení. Pokud chcete aplikaci zastavit, zavřete okno prohlížeče.
Pokud chcete aplikaci zastavit v Visual Studio, vyberte možnost Zastavit ladění v nabídce Ladění.
Pokud chcete aplikaci zastavit v Visual Studio Code, stiskněte Shift + F5nebo vyberte tlačítko Zastavit v horní části okna:
Pokud chcete aplikaci zastavit, stiskněte v okně terminálu Ctrl + C.
Dále prozkoumejte strukturu a další funkce nového řešení .NET.NET Aspire.
Když spustíte projekt .NET.NET Aspire, spustí se řídicí panel , který slouží k monitorování různých částí aplikace. Řídicí panel se podobá následujícímu snímku obrazovky:
Navštivte každou stránku pomocí levého navigačního panelu a zobrazte různé informace o .NET.NET Aspire prostředcích:
Zdroje: Zobrazí základní informace pro všechny jednotlivé .NET projekty v projektu .NET Aspire, například stav aplikace, adresy koncových bodů a proměnné prostředí, které byly načteny.
konzole: Zobrazí výstup konzole z jednotlivých projektů ve vaší aplikaci.
Strukturované: Zobrazí strukturované protokoly ve formátu tabulky. Tyto protokoly podporují také základní filtrování, vyhledávání ve volném formuláři a filtrování na úrovni protokolu. Měli byste vidět protokoly z apiservice
a webfrontend
. Podrobnosti o každé položce protokolu můžete rozbalit výběrem tlačítka Zobrazit na pravém konci řádku.
trasování: Zobrazí trasování vaší aplikace, které může sledovat cesty žádostí prostřednictvím vašich aplikací. Vyhledejte žádost o /weather a na pravé straně stránky vyberte Zobrazit. Řídicí panel by měl požadavek zobrazit ve fázích, když prochází různými částmi vaší aplikace.
Metriky: Zobrazuje různé nástroje a měřiče, které jsou zobrazené, a jejich odpovídající velikosti pro vaši aplikaci. Metriky podmíněně zpřístupňují filtry na základě dostupných dimenzí.
Pro další informace viz přehled ovládacího panelu .NET.NET Aspire.
Řešení se skládá z následujících projektů:
Adresář AspireSample by měl vypadat přibližně takto:
└───📂 AspireSample
├───📂 AspireSample.ApiService
│ ├───📂 Properties
│ │ └─── launchSettings.json
│ ├─── appsettings.Development.json
│ ├─── appsettings.json
│ ├─── AspireSample.ApiService.csproj
│ └─── Program.cs
├───📂 AspireSample.AppHost
│ ├───📂 Properties
│ │ └─── launchSettings.json
│ ├─── appsettings.Development.json
│ ├─── appsettings.json
│ ├─── AspireSample.AppHost.csproj
│ └─── Program.cs
├───📂 AspireSample.ServiceDefaults
│ ├─── AspireSample.ServiceDefaults.csproj
│ └─── Extensions.cs
├───📂 AspireSample.Web
│ ├───📂 Components
│ │ ├───📂 Layout
│ │ │ ├─── MainLayout.razor
│ │ │ ├─── MainLayout.razor.css
│ │ │ ├─── NavMenu.razor
│ │ │ └─── NavMenu.razor.css
│ │ ├───📂 Pages
│ │ │ ├─── Counter.razor
│ │ │ ├─── Error.razor
│ │ │ ├─── Home.razor
│ │ │ └─── Weather.razor
│ │ ├─── _Imports.razor
│ │ ├─── App.razor
│ │ └─── Routes.razor
│ ├───📂 Properties
│ │ └─── launchSettings.json
│ ├───📂 wwwroot
│ │ ├───📂 bootstrap
│ │ │ ├─── bootstrap.min.css
│ │ │ └─── bootstrap.min.css.map
│ │ ├─── app.css
│ │ └─── favicon.png
│ ├─── appsettings.Development.json
│ ├─── appsettings.json
│ ├─── AspireSample.Web.csproj
│ ├─── Program.cs
│ └─── WeatherApiClient.cs
└─── AspireSample.sln
Každý projekt v řešení .NET.NET Aspire hraje roli ve složení vaší aplikace. *. Webový projekt je standardní aplikace ASP.NET CoreBlazor, která poskytuje front-endové uživatelské rozhraní. Další informace naleznete v tématu Novinky v ASP.NET Core 9.0: Blazor. *. Projekt služby ApiService je standardní projekt šablony ASP.NET Core minimálního rozhraní API. Oba tyto projekty závisí na *. ServiceDefaults projektu, což je sdílený projekt, který slouží ke správě konfigurací, které se znovu používají napříč projekty ve vašem řešení.
Dva projekty, které jsou v tomto rychlém startu zajímavé, jsou *. AppHost a *. ServiceDefaults projekty podrobně popsané v následujících částech.
*.AppHost projekt je zodpovědný za fungování orchestrátoru a nastaví vlastnost souboru projektu IsAspireHost
na hodnotu true
:
<Project Sdk="Microsoft.NET.Sdk">
<Sdk Name="Aspire.AppHost.Sdk" Version="9.0.0" />
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsAspireHost>true</IsAspireHost>
<UserSecretsId>2aa31fdb-0078-4b71-b953-d23432af8a36</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\AspireSample.ApiService\AspireSample.ApiService.csproj" />
<ProjectReference Include="..\AspireSample.Web\AspireSample.Web.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Aspire.Hosting.AppHost" Version="9.0.0" />
<PackageReference Include="Aspire.Hosting.Redis" Version="9.0.0" />
</ItemGroup>
</Project>
Další informace najdete v tématu .NET.NET Aspire přehled orchestrace a .NET.NET Aspire SDK.
Zvažte soubor Program.cs projektu AspireSample.AppHost:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
var apiService = builder.AddProject<Projects.AspireSample_ApiService>("apiservice");
builder.AddProject<Projects.AspireSample_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(cache)
.WaitFor(cache)
.WithReference(apiService)
.WaitFor(apiService);
builder.Build().Run();
Pokud jste už dříve použili buď .NET obecného hostitele, nebo ASP.NET Core webového hostitele, programovací model a vzorec tvůrce by vám měly být povědomé. Předchozí kód:
"cache"
pro přidání Redisserver do aplikace, přičemž vrácená hodnota je přiřazena proměnné s názvem cache
, která je typu IResourceBuilder<RedisResource>
.AspireSample.ApiService
do aplikačního modelu. Toto je jeden ze základních stavebních bloků .NET.NET Aspirea slouží ke konfiguraci zjišťování služeb a komunikace mezi projekty ve vaší aplikaci. Argument názvu "apiservice"
slouží k identifikaci projektu v aplikačním modelu a později ho používají projekty, které s ním chtějí komunikovat.AddProject
, tentokrát přidá projekt AspireSample.Web
do aplikačního modelu. Také zřetězí několik volání na WithReference, přičemž se předávají proměnné cache
a apiService
. Rozhraní API WithReference
je dalším základním rozhraním API .NET.NET Aspire, které vkládá informace o zjišťování služby nebo konfiguraci připojovacího řetězce do projektu, který se přidává do aplikačního modelu. Kromě toho se volání rozhraní API WaitFor
používají k zajištění dostupnosti cache
a apiService
prostředků před zahájením projektu AspireSample.Web
. Další informace najdete v tématu .NET.NET Aspire orchestrace: Čekání na prostředky.Nakonec se aplikace sestaví a spustí. Metoda DistributedApplication.Run() zodpovídá za spuštění aplikace a všech jejích závislostí. Další informace naleznete v .NET.NET Aspire přehledu orchestrace.
Tip
Volání AddRedis vytvoří místní kontejner Redis, který bude aplikace používat. Pokud chcete raději jednoduše odkazovat na existující instanci Redis, můžete použít metodu AddConnectionString
k odkazování na existující připojovací řetězec. Další informace naleznete v části Odkaz na existující prostředky.
*. ServiceDefaults projekt je sdílený projekt, který se používá k správě konfigurací, které jsou znovu používány napříč projekty ve vašem řešení. Tento projekt zajišťuje, aby všechny závislé služby sdílely stejnou odolnost, zjišťování služeb a konfiguraci OpenTelemetry. Sdílený soubor projektu .NET.NET Aspire obsahuje vlastnost IsAspireSharedProject
nastavenou jako true
:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsAspireSharedProject>true</IsAspireSharedProject>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.1.0" />
<PackageReference Include="Microsoft.Extensions.ServiceDiscovery" Version="9.0.0" />
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.10.0" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.10.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.10.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.10.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.10.0" />
</ItemGroup>
</Project>
Výchozí projekt služby zveřejňuje metodu rozšíření pro typ IHostApplicationBuilder s názvem AddServiceDefaults
. Výchozí projekt služby ze šablony je výchozím bodem a můžete ho přizpůsobit podle svých potřeb. Pro více informací viz .NET.NET Aspire výchozí nastavení služby.
.NET
.NET Aspire poskytuje funkce orchestrace, které pomáhají s konfigurací připojení a komunikace mezi různými částmi aplikace. Projekt AspireSample.AppHost přidal projekty AspireSample.ApiService a AspireSample.Web do aplikačního modelu. Deklarovala také jejich názvy jako "webfrontend"
pro Blazor front-end, "apiservice"
pro referenci na projekt rozhraní API. Kromě toho byl přidán Redisserver zdroj označený "cache"
. Tyto názvy slouží ke konfiguraci zjišťování služeb a komunikace mezi projekty ve vaší aplikaci.
Front-endová aplikace definuje typ HttpClient, který se používá ke komunikaci s API projektem.
namespace AspireSample.Web;
public class WeatherApiClient(HttpClient httpClient)
{
public async Task<WeatherForecast[]> GetWeatherAsync(
int maxItems = 10,
CancellationToken cancellationToken = default)
{
List<WeatherForecast>? forecasts = null;
await foreach (var forecast in
httpClient.GetFromJsonAsAsyncEnumerable<WeatherForecast>(
"/weatherforecast", cancellationToken))
{
if (forecasts?.Count >= maxItems)
{
break;
}
if (forecast is not null)
{
forecasts ??= [];
forecasts.Add(forecast);
}
}
return forecasts?.ToArray() ?? [];
}
}
public record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
HttpClient
je nakonfigurované tak, aby používalo zjišťování služeb. Vezměte v úvahu následující kód ze souboru Program.cs projektu AspireSample.Web:
using AspireSample.Web;
using AspireSample.Web.Components;
var builder = WebApplication.CreateBuilder(args);
// Add service defaults & Aspire client integrations.
builder.AddServiceDefaults();
builder.AddRedisOutputCache("cache");
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddHttpClient<WeatherApiClient>(client =>
{
// This URL uses "https+http://" to indicate HTTPS is preferred over HTTP.
// Learn more about service discovery scheme resolution at https://aka.ms/dotnet/sdschemes.
client.BaseAddress = new("https+http://apiservice");
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseAntiforgery();
app.UseOutputCache();
app.MapStaticAssets();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
app.MapDefaultEndpoints();
app.Run();
Předchozí kód:
AddServiceDefaults
, nastavení sdílených výchozích hodnot pro aplikaci.connectionName
, který se použil při přidávání kontejneru Redis"cache"
do aplikačního modelu. Tím se aplikace nakonfiguruje tak, aby používala Redis pro ukládání výstupu do mezipaměti."https+http://apiservice"
. Toto je název, který se použil při přidávání projektu rozhraní API do aplikačního modelu a s nakonfigurovaným zjišťováním služeb se automaticky přeloží na správnou adresu projektu rozhraní API.Další informace najdete v tématu Vytváření požadavků HTTP pomocí třídy HttpClient
.
Kurz : Přidání .NET Aspire do existující.NET aplikace
Zpětná vazba k produktu .NET Aspire
.NET Aspire je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Události
Vytváření inteligentních aplikací
17. 3. 23 - 21. 3. 23
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatŠkolení
Modul
Vytvoření projektu .NET Aspire - Training
Zjistěte, jak vytvářet zcela nativní cloudové aplikace nebo přidat orchestraci do existující aplikace pomocí zásobníku .NET Aspire v .NET 8.
Certifikace
Microsoft Certifikát: Azure Vývojářský Asistent - Certifications
Vytvářejte ucelená řešení v Microsoft Azure pro vytváření funkcí Azure, implementaci a správu webových aplikací, vývoj řešení využívajících úložiště Azure a další.