Použití Dapr s .NET Aspire
Distributed Application Runtime (Dapr) nabízí rozhraní API pro vývojáře, která slouží jako konduit pro interakci s jinými službami a závislostmi a abstrakci aplikace od specifik těchto služeb a závislostí. Dapr a .NET Aspire spolupracují pro zlepšení vašeho místního vývojového prostředí. Pomocí Dapr s .NET Aspirese můžete soustředit na psaní a implementaci distribuovaných aplikací založených na .NETmísto toho, abyste strávili čas navíc s místním onboardingem.
V této příručce se dozvíte, jak využívat abstrakci Dapra konfigurační doporučení .NET Aspirepro cloudové technologie k vytváření jednoduchých, přenosných, odolných a zabezpečených mikroslužeb ve velkém měřítku na Azure.
Požadavky
Pokud chcete pracovat s .NET.NET Aspire, potřebujete místně nainstalovat následující:
- .NET 8.0 nebo .NET 9.0
- Modul runtime kontejneru kompatibilní s OCI, například:
- Docker desktop nebo Podman. Další informace najdete v části běhového prostředí kontejneru.
- Integrované vývojové prostředí (IDE) nebo editor kódu, například:
- Visual Studio 2022 verze 17.9 nebo novější (volitelné)
-
Visual Studio Code (volitelné)
- C# Dev Kit: Rozšíření (volitelné)
- JetBrains Rider s .NET.NET Aspire pluginem (volitelné)
Další informace najdete v tématu .NET.NET Aspire nastavení a nástrojea .NET.NET Aspire SDK.
Kromě požadavků pro .NET.NET Aspirebudete potřebovat:
- Dapr verze 1.13 nebo novější
Informace o instalaci Daprnajdete v tématu Daprrozhraní příkazového řádku . Po instalaci rozhraní příkazového řádku Dapr spusťte dapr init
popsané v Inicializace Dapr v místním prostředí.
Důležitý
Pokud se pokusíte spustit aplikaci bez rozhraní příkazového řádku Dapr, zobrazí se následující chyba:
Unable to locate the Dapr CLI.
Začít
Abyste mohli začít, musíte přidat hostingový balíček Dapr do hostitelského projektu aplikace instalací balíčku NuGet 📦Aspire.Hosting.Dapr.
dotnet add package Aspire.Hosting.Dapr
Další informace najdete v tématu dotnet add package nebo Správa závislostí balíčků v aplikacích .NET.
Přidejte Dapr sajdkáru
Chcete-li k prostředku .NET.NET Aspire přidat sidecar, zavolejte metodu WithDaprSidecar na požadovaném prostředku. Parametr appId
je jedinečný identifikátor aplikace Dapr, ale je volitelný. Pokud appId
nezadáte, použije se místo toho název nadřazeného prostředku.
using Aspire.Hosting.Dapr;
var builder = DistributedApplication.CreateBuilder(args);
var apiService = builder
.AddProject<Projects.Dapr_ApiService>("apiservice")
.WithDaprSidecar();
Metoda WithDaprSidecar
nabízí možnosti přetížení ke konfiguraci možností sidecaru Dapr, jako je ID aplikace a porty. V následujícím příkladu je Dapr sidecar nakonfigurovaný se specifickými porty pro GRPC, HTTP, metriky a určité ID aplikace.
DaprSidecarOptions sidecarOptions = new()
{
DaprGrpcPort = 50001,
DaprHttpPort = 3500,
MetricsPort = 9090
};
builder.AddProject<Projects.Dapr_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WithDaprSidecar(sidecarOptions);
Dohromady vzato, zvažte následující příklad projektu hostování aplikací .NET.NET Aspire, který zahrnuje:
- Back-endové rozhraní API, které deklaruje sidecar typu Dapr s výchozími nastaveními.
- Frontend, který deklaruje Dapr sidecar s konkrétními možnostmi, jako jsou explicitní porty.
using Aspire.Hosting.Dapr;
var builder = DistributedApplication.CreateBuilder(args);
var apiService = builder
.AddProject<Projects.Dapr_ApiService>("apiservice")
.WithDaprSidecar();
DaprSidecarOptions sidecarOptions = new()
{
DaprGrpcPort = 50001,
DaprHttpPort = 3500,
MetricsPort = 9090
};
builder.AddProject<Projects.Dapr_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WithDaprSidecar(sidecarOptions);
builder.Build().Run();
Řídicí panel .NET Aspire zobrazuje Dapr sidecar jako prostředek se stavem a logy.
Přidání sady Dapr SDK
Pokud chcete používat rozhraní API Dapr z prostředků .NET Aspire, můžete použít 📦Dapr. AspNetCore/. Dapr SDK poskytuje rozhraní API k interakci s Dapr sidecary.
Poznámka
Pro integraci Dapr.AspNetCore
s Dapr použijte knihovnu ASP.NET (integrace DI, registrace předplatných atd.). Aplikace, které nejsouASP.NET (například konzolové aplikace), mohou jednoduše použít 📦Dapra pomocíClient provádět volání přes službu Dapr sidecar.
dotnet add package Dapr.AspNetCore
Po instalaci do projektu ASP.NET Core je možné sadu SDK přidat do tvůrce služeb.
builder.Services.AddDaprClient();
Instance DaprClient
se teď dá vložit do vašich služeb, aby bylo možné interagovat se Dapr sidecarem prostřednictvím Dapr SDK.
using Dapr.Client;
namespace Dapr.Web;
public class WeatherApiClient(DaprClient client)
{
public async Task<WeatherForecast[]> GetWeatherAsync(
int maxItems = 10, CancellationToken cancellationToken = default)
{
List<WeatherForecast>? forecasts =
await client.InvokeMethodAsync<List<WeatherForecast>>(
HttpMethod.Get,
"apiservice",
"weatherforecast",
cancellationToken);
return forecasts?.Take(maxItems)?.ToArray() ?? [];
}
}
public record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
InvokeMethodAsync
je metoda, která odešle HTTP požadavek na Dapr sidecar. Jedná se o obecnou metodu, která přijímá:
- Příkaz HTTP
- ID aplikace Dapr služby, která se má volat
- Název metody
- Token pro zrušení
Podle HTTP metody může také obsahovat tělo požadavku a hlavičky. Parametr obecného typu je typem textu odpovědi.
Úplný soubor Program.cs pro front-endový projekt ukazuje:
- Dapr client jsou přidávány do tvůrce služeb
- Třída
WeatherApiClient
, která používá Daprclient k volání back-endové služby
using Dapr.Web;
using Dapr.Web.Components;
var builder = WebApplication.CreateBuilder(args);
// Add service defaults & Aspire components.
builder.AddServiceDefaults();
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddOutputCache();
builder.Services.AddDaprClient();
builder.Services.AddTransient<WeatherApiClient>();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAntiforgery();
app.UseOutputCache();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
app.MapDefaultEndpoints();
app.Run();
Například v projektu Blazor lze třídu WeatherApiClient
vložit do integrace a použít ji k volání back-endové služby.
@page "/weather"
@attribute [StreamRendering(true)]
@attribute [OutputCache(Duration = 5)]
@inject WeatherApiClient WeatherApi
<PageTitle>Weather</PageTitle>
<h1>Weather</h1>
<p>This component demonstrates showing data loaded from a backend API service.</p>
@if (forecasts == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Date</th>
<th>Temp. (C)</th>
<th>Temp. (F)</th>
<th>Summary</th>
</tr>
</thead>
<tbody>
@foreach (var forecast in forecasts)
{
<tr>
<td>@forecast.Date.ToShortDateString()</td>
<td>@forecast.TemperatureC</td>
<td>@forecast.TemperatureF</td>
<td>@forecast.Summary</td>
</tr>
}
</tbody>
</table>
}
@code {
private WeatherForecast[]? forecasts;
protected override async Task OnInitializedAsync()
{
forecasts = await WeatherApi.GetWeatherAsync();
}
}
Při použití Dapr SDK se Dapr sidecar volá přes protokol HTTP. Dapr sajdkár pak požadavek předá cílové službě. Zatímco cílová služba běží v samostatném procesu než sidecaru, integrace související se službou běží v sidecaru Dapr a zodpovídá za objevování služby a směrování požadavku k cílové službě.
Dapr a .NET Aspire
Na první pohled mohou Dapr a .NET Aspire vypadat, jako by měly překrývající se funkčnost, a skutečně mají. Oba ale používají jiný přístup. .NET .NET Aspire je názorný přístup k vytváření distribuovaných aplikací na cloudové platformě. Dapr je modul runtime, který abstrahuje běžné složitosti základní cloudové platformy. Spoléhá na sidecary, aby poskytovaly abstrakce pro oblasti jako konfigurace, správa tajemství a zasílání zpráv. Základní technologie je možné snadno přepínat prostřednictvím konfiguračních souborů, zatímco váš kód se nemusí měnit.
.NET Aspire usnadňuje nastavení a ladění Dapr aplikací tím, že poskytuje jednoduché rozhraní API pro konfiguraci Dapr sidecarů a prezentaci sidecarů jako prostředků na řídicím panelu.
Prozkoumání komponent Dapr pomocí .NET Aspire
Dapr poskytuje mnoho integrovaných komponenta při použití Dapr s .NET Aspire můžete tyto komponenty snadno prozkoumat a nakonfigurovat. Nezaměňujte tyto komponenty s integracemi .NET.NET Aspire. Představte si například následující:
- Dapr– Státní úložiště: Voláním AddDaprStateStore přidáte nakonfigurované státní úložiště do projektu .NET.NET Aspire.
- Dapr— Pub Sub: Zavolejte AddDaprPubSub pro přidání nakonfigurovaného pub sub systému do vašeho projektu .NET.NET Aspire.
- Dapr— Komponenty: Pro přidání nakonfigurované integrace do projektu AddDaprComponent.NET volejte .NET Aspire.