Hoe ASP.NET Core werkt

Voltooid

Een ASP.NET Core-app is in feite een .NET-app met een Program.cs-bestand waarmee de onderdelen van het web-app-onderdeel worden ingesteld die u nodig hebt en deze uitvoert.

Het Program.cs-bestand van de meest eenvoudige ASP.NET Core-app:

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

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

app.Run();

Met de vorige code:

  • Een eenvoudige ASP.NET Core-webtoepassing is ingesteld die luistert naar HTTP GET-aanvragen op de hoofd-URL (/) en reageert met 'Hallo wereld!'.
  • De app wordt geïnitialiseerd, configureert één route en start de webserver.

Blazor

U kunt een interactieve webinterface bouwen met ASP.NET Core met behulp van Blazor. Blazor is een webinterfaceframework op basis van onderdelen dat is geïntegreerd met ASP.NET Core, dat wordt gebruikt voor het bouwen van interactieve web-UIS's met behulp van HTML, CSS en C#.

Een herbruikbare Blazor-component, zoals het volgende Counter onderdeel, wordt gedefinieerd in een Counter.razor-bestand :

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

Met de vorige code:

  • Er wordt een onderdeel gemaakt dat een teller weergeeft.
  • Het @code blok bevat de logica van het onderdeel met behulp van C#, inclusief een methode om de teller te verhogen.
  • De tellerwaarde wordt weergegeven en bijgewerkt telkens wanneer op de knop wordt geklikt.
  • Met een onderdeelbenadering kunt u code hergebruiken in verschillende onderdelen van de toepassing en de flexibiliteit hebben om te worden uitgevoerd in de browser of op de server in een Blazor-app.

Het Counter onderdeel kan worden toegevoegd aan elke webpagina in de app door het <Counter /> element toe te voegen.

@page "/"

<PageTitle>Home</PageTitle>

<h1>Hello, world!</h1>

<Counter />

API's

ASP.NET Core biedt frameworks voor het bouwen van API's, gRPC-services en realtime-apps met SignalR om direct gegevensupdates naar clients te pushen.

Eenvoudige minimale API:

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

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

app.Run();

Met de vorige code:

  • Er is een minimale API ingesteld die luistert naar HTTP GET-aanvragen op de /hello-URL en reageert met 'Hallo, wereld!'.
  • De WebApplicationBuilder app wordt gebruikt om de app te configureren.
  • De MapGet methode definieert een route en een handler voor GET-aanvragen.

Middleware

ASP.NET Core maakt gebruik van een pijplijn van middlewareonderdelen voor het verwerken van HTTP-aanvragen en -antwoorden. Deze modulaire benadering biedt flexibiliteit, zodat u de functionaliteit van uw toepassing kunt aanpassen en uitbreiden door waar nodig middlewareonderdelen toe te voegen of te verwijderen.

De middleware-pijplijn verwerkt HTTP-aanvragen op een opeenvolgende manier, zodat elk onderdeel de aangewezen taak kan uitvoeren voordat de aanvraag wordt doorgegeven aan het volgende onderdeel in de pijplijn.

Ingebouwde middleware toevoegen in het Program.cs-bestand :

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

In de vorige code zijn verschillende algemene middlewareonderdelen toegevoegd:

  • UseHttpsRedirection: stuurt HTTP-aanvragen om naar HTTPS.
  • UseRouting: hiermee schakelt u routering in om aanvragen toe te wijzen aan eindpunten.
  • MapStaticAssets: Optimaliseert de levering van statische bestanden, zoals HTML, CSS, JavaScript, afbeeldingen en andere assets.
  • UseAuthentication: Voegt verificatiemogelijkheden toe.
  • UseAuthorization: Voegt autorisatiemogelijkheden toe.
  • app.MapGet: Dit is een eenvoudig eindpunt om aan te tonen dat de toepassing wordt uitgevoerd.

Afhankelijkheidsinjectie

ASP.NET Core bevat ingebouwde ondersteuning voor afhankelijkheidsinjectie (DI) voor het configureren van services die worden gebruikt door de app en de verschillende frameworkonderdelen.

U kunt bijvoorbeeld een service centraal configureren met behulp van een framework zoals EntityFramework Core waarvan andere onderdelen van uw app afhankelijk zijn voor toegang tot een database. U kunt een databasecontext vanuit EntityFramework Core als een service configureren met behulp van afhankelijkheidsinjectie als volgt:

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

Met de vorige code:

  • Een DbContext is geconfigureerd als een service met behulp van afhankelijkheidsinjectie.
  • De WebApplicationBuilder app wordt gebruikt om de app te configureren.
  • De AddDbContext methode registreert de DbContext met de afhankelijkheidsinjectiecontainer.
  • De verbindingsreeks wordt opgehaald uit de configuratie en gebruikt om de databasecontext in te stellen.

Configuratie

ASP.NET Core ondersteunt toegang tot configuratiegegevens uit verschillende bronnen, zoals JSON-bestanden, omgevingsvariabelen en opdrachtregelargumenten.

Een verbindingsreeks configureren in een appsetting.json-bestand :

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

In het bestand Program.cs:

var builder = WebApplication.CreateBuilder(args);

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

var app = builder.Build();

app.Run();

Met de vorige code:

  • De verbindingsreeks is geconfigureerd in het appsettings.json-bestand .
  • De WebApplicationBuilder app wordt gebruikt om de app te configureren.
  • De AddDbContext methode registreert de DbContext met de afhankelijkheidsinjectiecontainer.
  • De verbindingsreeks wordt opgehaald uit de configuratie en gebruikt om de databasecontext in te stellen.

Controle en diagnose

ASP.NET Core biedt een uitgebreide reeks hulpprogramma's voor het bewaken en onderhouden van de status en prestaties van uw toepassingen. Deze functies kunnen eenvoudig als middlewareonderdelen aan uw toepassing worden toegevoegd, waarbij specifieke functies in uw project worden geïntegreerd:

  • Ingebouwde metrische gegevens: ASP.NET Core bevat ingebouwde metrische gegevens waarmee verschillende aspecten van de prestaties van uw toepassing worden bijgehouden, zoals aanvraagfrequenties, reactietijden en foutpercentages.
  • Flexibel framework voor logboekregistratie: Een flexibel framework voor logboekregistratie is ingebouwd en ondersteunt verschillende logboekregistratieproviders, waaronder console, foutopsporing en gebeurtenisbron. Dit helpt bij het vastleggen van gedetailleerde logboeken voor diagnostische gegevens en bewaking.
  • Tracering: ASP.NET Core ondersteunt gedistribueerde tracering, waarmee u de stroom van aanvragen in verschillende services en onderdelen kunt bijhouden. Dit is handig voor het diagnosticeren van prestatieproblemen en het begrijpen van de interacties tussen verschillende onderdelen van uw toepassing.
  • OpenTelemetry: ASP.NET Core integreert met OpenTelemetry, een opensource-waarneembaarheidsframework voor cloudeigen software. OpenTelemetry biedt gestandaardiseerde API's en instrumentatie voor het verzamelen van metrische gegevens, logboeken en traceringen, zodat u uw toepassingen effectiever kunt bewaken en diagnosticeren.
  • Statuscontroles: met de API voor statuscontroles kunt u de status van uw toepassing en de bijbehorende afhankelijkheden bewaken. U kunt statuscontroles configureren om de status van verschillende onderdelen te rapporteren, zoals databases, externe services en meer.
  • Diagnostische hulpprogramma's: ASP.NET Core biedt verschillende diagnostische hulpprogramma's, zoals dotnet-trace, dotnet-dump en dotnet-gcdump, waarmee u diagnostische gegevens van uw toepassing kunt verzamelen en analyseren.