A ASP.NET Core működése

Befejeződött

A ASP.NET Core-alkalmazás lényegében egy .NET-alkalmazás, amely egy Program.cs fájllal rendelkezik, amely beállítja a webalkalmazás-összetevők szükséges funkcióit, és futtatja azt.

A Core-alkalmazás Program.cs fájljának legalapvetőbb ASP.NET:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

Az előző kóddal:

  • Egy alapszintű ASP.NET Core-webalkalmazás van beállítva, amely a HTTP GET-kérelmeket a gyökér URL-címen ("/") figyeli, és a "„Helló világ!” alkalmazás!" paranccsal válaszol.
  • Az alkalmazás inicializálva van, egyetlen útvonalat konfigurál, és elindítja a webkiszolgálót.

Blazor

Interaktív webes felhasználói felületet készíthet ASP.NET Core használatával a Blazor használatával. A Blazor egy összetevőalapú webes felhasználói felületi keretrendszer, amely integrálva van a ASP.NET Core-jal, amely html, CSS és C# használatával használható interaktív webes felhasználói felületek létrehozásához.

Egy újrafelhasználható Blazor-összetevő, például a következő Counter összetevő egy Counter.razor fájlban van definiálva:

@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++;
    }
}

Az előző kóddal:

  • Létrejön egy összetevő, amely egy számlálót jelenít meg.
  • A @code blokk tartalmazza az összetevő C#-ot használó logikáját, beleértve a számláló növelésének módszerét is.
  • A számláló értéke minden kattintáskor megjelenik és frissül.
  • Az összetevők megközelítése lehetővé teszi a kód újrafelhasználását az alkalmazás különböző részeiben, és rugalmasan futtatható a böngészőben vagy a kiszolgálón egy Blazor-alkalmazásban.

Az Counter összetevő az alkalmazás bármely weblapjára felvehető az <Counter /> elem hozzáadásával.

@page "/"

<PageTitle>Home</PageTitle>

<h1>Hello, world!</h1>

<Counter />

API-k

ASP.NET Core keretrendszereket biztosít API-k, gRPC-szolgáltatások és valós idejű alkalmazások létrehozásához a SignalR használatával, hogy azonnal leküldje az adatfrissítéseket az ügyfeleknek.

Alapszintű minimális API:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/hello", () => "Hello, World!");

app.Run();

Az előző kóddal:

  • Egy minimális API van beállítva, amely figyeli a HTTP GET-kérelmeket a /hello URL-címen, és a "Hello, World!" üzenettel válaszol.
  • Ez WebApplicationBuilder az alkalmazás konfigurálására szolgál.
  • A MapGet metódus egy útvonalat és egy kezelőt határoz meg a GET-kérelmekhez.

Közbenső szoftver

ASP.NET Core köztes szoftverösszetevőkből álló folyamatot használ a HTTP-kérések és válaszok kezeléséhez. Ez a moduláris megközelítés rugalmasságot biztosít, lehetővé téve az alkalmazás funkcióinak testreszabását és bővítését a köztes szoftver összetevőinek igény szerinti hozzáadásával vagy eltávolításával.

A köztes szoftverfolyamat szekvenciális módon dolgozza fel a HTTP-kéréseket, így minden összetevő végrehajthatja a kijelölt feladatát, mielőtt átadaná a kérést a folyamat következő összetevőjének.

Beépített köztes szoftver hozzáadása a Program.cs fájlhoz:

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();

Az előző kódban több gyakori köztes szoftverösszetevő lett hozzáadva:

  • UseHttpsRedirection: HTTP-kérelmek átirányítása HTTPS-hez.
  • UseRouting: Lehetővé teszi az útválasztást a kérelmek végpontokra való leképezéséhez.
  • MapStaticAssets: Optimalizálja az olyan statikus fájlok kézbesítését, mint a HTML, a CSS, a JavaScript, a képek és más objektumok.
  • UseAuthentication: Hitelesítési képességeket ad hozzá.
  • UseAuthorization: Engedélyezési képességeket ad hozzá.
  • app.MapGet: Ez egy egyszerű végpont, amely bemutatja, hogy az alkalmazás fut.

Függőséginjektálás

ASP.NET Core beépített támogatást nyújt a függőséginjektáláshoz (DI) az alkalmazás és a különböző keretrendszerösszetevők által használt szolgáltatások konfigurálásához.

Előfordulhat például, hogy központilag szeretne konfigurálni egy szolgáltatást egy olyan keretrendszer használatával, mint az EntityFramework Core, amelytől az alkalmazás más részei függenek, hogy hozzáférjenek egy adatbázishoz. Az EntityFramework Core-ból szolgáltatásként konfigurálhat adatbázis-környezetet a következő függőséginjektálással:

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();

Az előző kóddal:

  • Az A DbContext szolgáltatásként van konfigurálva függőséginjektálás használatával.
  • Ez WebApplicationBuilder az alkalmazás konfigurálására szolgál.
  • A AddDbContext metódus regisztrálja a DbContext függőséginjektáló tárolót.
  • A kapcsolati sztring lekéri a konfigurációból, és az adatbázis-környezet beállítására szolgál.

Konfiguráció

ASP.NET Core számos forrásból, például JSON-fájlokból, környezeti változókból és parancssori argumentumokból támogatja a konfigurációs adatok elérését.

Kapcsolati karakterlánc konfigurálása egy appsetting.json fájlban:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
  }
}

A Program.cs fájlban:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<MyDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

var app = builder.Build();

app.Run();

Az előző kóddal:

  • A kapcsolati sztring a appsettings.json fájlban van konfigurálva.
  • Ez WebApplicationBuilder az alkalmazás konfigurálására szolgál.
  • A AddDbContext metódus regisztrálja a DbContext függőséginjektáló tárolót.
  • A kapcsolati sztring lekéri a konfigurációból, és az adatbázis-környezet beállítására szolgál.

Monitorozás és diagnosztika

ASP.NET Core átfogó eszközkészletet biztosít az alkalmazások állapotának és teljesítményének monitorozásához és karbantartásához. Ezek a funkciók könnyen hozzáadhatók az alkalmazáshoz köztes szoftverösszetevőkként, és bizonyos funkciókat integrálhatnak a projektbe:

  • Beépített metrikák: ASP.NET Core beépített metrikákat tartalmaz, amelyek nyomon követik az alkalmazás teljesítményének különböző aspektusait, például a kérések arányát, a válaszidőket és a hibaarányokat.
  • Rugalmas naplózási keretrendszer: Beépített rugalmas naplózási keretrendszer, amely támogatja a különböző naplózási szolgáltatókat, például a konzolt, a hibakeresést és az eseményforrást. Ez segít a diagnosztikához és a monitorozáshoz szükséges részletes naplók rögzítésében.
  • Nyomkövetés: ASP.NET Core támogatja az elosztott nyomkövetést, amely segít nyomon követni a kérések különböző szolgáltatások és összetevők közötti áramlását. Ez hasznos a teljesítményproblémák diagnosztizálásához és az alkalmazás különböző részei közötti interakciók megértéséhez.
  • OpenTelemetria: ASP.NET Core integrálható az OpenTelemetryvel, amely egy nyílt forráskódú megfigyelhetőségi keretrendszer a natív felhőbeli szoftverekhez. Az OpenTelemetria szabványos API-kat és rendszerezést biztosít metrikák, naplók és nyomkövetések gyűjtéséhez, így hatékonyabban figyelheti és diagnosztizálhatja az alkalmazásait.
  • Állapotellenőrzések: Az állapot-ellenőrzési API lehetővé teszi az alkalmazás és függőségei állapotának monitorozását. Az állapot-ellenőrzések konfigurálhatók különböző összetevők, például adatbázisok, külső szolgáltatások stb. állapotának jelentésére.
  • Diagnosztikai eszközök: Az ASP.NET Core különböző diagnosztikai eszközöket biztosít, mint például a dotnet-trace, a dotnet-dump és a dotnet-gcdump, amelyek segítenek a diagnosztikai adatok gyűjtésében és elemzésében az alkalmazásból.