Jak funguje ASP.NET Core
Aplikace ASP.NET Core je v podstatě aplikace .NET se souborem Program.cs, který nastaví funkce komponent webové aplikace, které potřebujete, a spustí ji.
Nejzásadnější soubor Program.cs aplikace ASP.NET Core:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
S předchozím kódem:
- Základní webová aplikace ASP.NET Core je nastavená tak, aby naslouchala požadavkům HTTP GET na kořenové adrese URL ("/") a reagovala na "Hello World!".
- Aplikace se inicializuje, nakonfiguruje jednu trasu a spustí webový server.
Blazor
Interaktivní webové uživatelské rozhraní můžete vytvářet pomocí ASP.NET Core pomocí Blazoru. Blazor je architektura webového uživatelského rozhraní založená na komponentách integrovaná s ASP.NET Core, která se používá k vytváření interaktivních webových uživatelských rozhraní pomocí HTML, CSS a C#.
Opakovaně použitelná komponenta Blazor, například následující Counter komponenta, je definována v souboru Counter.razor :
@page "/counter"
@rendermode InteractiveServer
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
S předchozím kódem:
- Vytvoří se komponenta, která zobrazí čítač.
- Blok @code obsahuje logiku komponenty pomocí jazyka C#, včetně metody pro zvýšení čítače.
- Zobrazí se hodnota čítače a aktualizuje se při každém kliknutí na tlačítko.
- Přístup komponent umožňuje opakované použití kódu v různých částech aplikace a nabízí flexibilitu spouštění v prohlížeči nebo na serveru v aplikaci Blazor.
Komponentu Counter lze přidat na libovolnou webovou stránku v aplikaci přidáním elementu <Counter /> .
@page "/"
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
<Counter />
Rozhraní API
ASP.NET Core poskytuje architektury pro vytváření rozhraní API, služeb gRPC a aplikací v reálném čase pomocí služby SignalR k okamžitému nabízení aktualizací dat klientům.
Základní minimální rozhraní API:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/hello", () => "Hello, World!");
app.Run();
S předchozím kódem:
- Minimální rozhraní API je nastavené tak, aby naslouchal požadavkům HTTP GET na adrese URL /hello a odpovídá na "Hello, World!".
- Slouží
WebApplicationBuilderke konfiguraci aplikace. - Metoda
MapGetdefinuje trasu a obslužnou rutinu pro požadavky GET.
Middleware
ASP.NET Core používá kanál komponent middlewaru ke zpracování požadavků a odpovědí HTTP. Tento modulární přístup poskytuje flexibilitu a umožňuje přizpůsobit a rozšířit funkce aplikace přidáním nebo odebráním komponent middlewaru podle potřeby.
Kanál middlewaru zpracovává požadavky HTTP sekvenčním způsobem a zajišťuje, aby každá komponenta před předáním požadavku do další komponenty v kanálu prováděla svou určenou úlohu.
Přidání integrovaného middlewaru do souboru Program.cs :
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseHttpsRedirection();
app.UseRouting();
app.MapStaticAssets();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/", () => "Hello World!");
app.Run();
V předchozím kódu bylo přidáno několik běžných komponent middlewaru:
-
UseHttpsRedirection: Přesměruje požadavky HTTP na HTTPS. -
UseRouting: Umožňuje směrování mapovat požadavky na koncové body. -
MapStaticAssets: Optimalizuje doručování statických souborů, jako jsou HTML, CSS, JavaScript, obrázky a další prostředky. -
UseAuthentication: Přidá možnosti ověřování. -
UseAuthorization: Přidá možnosti autorizace. -
app.MapGet: Jedná se o jednoduchý koncový bod, který ukazuje, že je aplikace spuštěná.
Injektáž závislostí
ASP.NET Core zahrnuje integrovanou podporu injektáže závislostí (DI) pro konfiguraci služeb, které aplikace používá, a jejích různých komponent architektury.
Můžete například chtít centrálně nakonfigurovat službu pomocí architektury, jako je EntityFramework Core, na které závisí další části vaší aplikace, na přístupu k databázi. Kontext databáze z EntityFramework Core můžete nakonfigurovat jako službu pomocí injektáže závislostí takto:
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }
public DbSet<Product> Products { get; set; } = default!;
}
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
app.Run();
S předchozím kódem:
- A
DbContextse konfiguruje jako služba pomocí injektáže závislostí. - Slouží
WebApplicationBuilderke konfiguraci aplikace. - Metoda
AddDbContextzaregistrujeDbContextkontejner injektáže závislostí. - Připojovací řetězec se načte z konfigurace a použije se k nastavení kontextu databáze.
Konfigurace
ASP.NET Core podporuje přístup ke konfiguračním datům z různých zdrojů, jako jsou soubory JSON, proměnné prostředí a argumenty příkazového řádku.
Konfigurace připojovací řetězec v souboru appsetting.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
}
}
V souboru Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
app.Run();
S předchozím kódem:
- V souboru appsettings.json je nakonfigurovaný připojovací řetězec.
- Slouží
WebApplicationBuilderke konfiguraci aplikace. - Metoda
AddDbContextzaregistrujeDbContextkontejner injektáže závislostí. - Připojovací řetězec se načte z konfigurace a použije se k nastavení kontextu databáze.
Monitorování a diagnostika
ASP.NET Core poskytuje komplexní sadu nástrojů pro monitorování a udržování stavu a výkonu vašich aplikací. Tyto funkce můžete do aplikace snadno přidat jako komponenty middlewaru a integrovat do projektu konkrétní funkce:
- Integrované metriky: ASP.NET Core zahrnuje integrované metriky, které sledují různé aspekty výkonu vaší aplikace, jako jsou míry požadavků, doby odezvy a míry chyb.
- Flexibilní rozhraní protokolování: Je integrovaná flexibilní architektura protokolování a podporuje různé poskytovatele protokolování, včetně konzoly, ladění a zdroje událostí. To pomáhá zaznamenávat podrobné protokoly pro diagnostiku a monitorování.
- Trasování: ASP.NET Core podporuje distribuované trasování, které pomáhá sledovat tok požadavků napříč různými službami a komponentami. To je užitečné při diagnostice problémů s výkonem a pochopení interakcí mezi různými částmi aplikace.
- OpenTelemetry: ASP.NET Core se integruje s OpenTelemetry, opensourcovou architekturou pozorovatelnosti pro software nativní pro cloud. OpenTelemetry poskytuje standardizovaná rozhraní API a instrumentaci pro shromažďování metrik, protokolů a trasování, které vám umožní efektivněji monitorovat a diagnostikovat aplikace.
- Kontroly stavu: Rozhraní API pro kontroly stavu umožňuje monitorovat stav vaší aplikace a jejích závislostí. Můžete nakonfigurovat kontroly stavu tak, aby hlásily stav různých komponent, jako jsou databáze, externí služby a další.
- Diagnostické nástroje: ASP.NET Core poskytuje různé diagnostické nástroje, jako jsou dotnet-trace, dotnet-dump a dotnet-gcdump, které pomáhají shromažďovat a analyzovat diagnostická data z vaší aplikace.