Jak funguje ASP.NET Core

Dokončeno

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ží WebApplicationBuilder ke konfiguraci aplikace.
  • Metoda MapGet definuje 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 DbContext se konfiguruje jako služba pomocí injektáže závislostí.
  • Slouží WebApplicationBuilder ke konfiguraci aplikace.
  • Metoda AddDbContext zaregistruje DbContext kontejner 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ží WebApplicationBuilder ke konfiguraci aplikace.
  • Metoda AddDbContext zaregistruje DbContext kontejner 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.