Jak działa ASP.NET Core

Ukończone

Aplikacja ASP.NET Core jest zasadniczo aplikacją .NET z plikiem Program.cs, który konfiguruje potrzebne funkcje składnika aplikacji internetowej i uruchamia ją.

Najbardziej podstawowy plik Program.cs aplikacji ASP.NET Core:

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

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

app.Run();

Przy użyciu poprzedniego kodu:

  • Podstawowa aplikacja internetowa ASP.NET Core jest skonfigurowana, która nasłuchuje żądań HTTP GET pod głównym adresem URL ("/") i odpowiada za pomocą polecenia "Hello World!".
  • Aplikacja jest inicjowana, konfiguruje pojedynczą trasę i uruchamia serwer internetowy.

Blazor

Interaktywny internetowy interfejs użytkownika można tworzyć za pomocą platformy ASP.NET Core przy użyciu platformy Blazor. Blazor to oparta na składnikach struktura internetowego interfejsu użytkownika zintegrowana z platformą ASP.NET Core, służąca do tworzenia interaktywnych internetowych interfejsów użytkownika przy użyciu języków HTML, CSS i C#.

Składnik blazor wielokrotnego użytku, taki jak następujący Counter składnik, jest zdefiniowany w pliku 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++;
    }
}

Przy użyciu poprzedniego kodu:

  • Tworzony jest składnik, który wyświetla licznik.
  • Blok @code zawiera logikę składnika używającą języka C#, w tym metodę zwiększającą licznik.
  • Wartość licznika jest wyświetlana i aktualizowana przy każdym kliknięciu przycisku.
  • Podejście do składników umożliwia ponowne użycie kodu w różnych częściach aplikacji i ma elastyczność uruchamiania w przeglądarce lub na serwerze w aplikacji Blazor.

Składnik Counter można dodać do dowolnej strony internetowej w aplikacji, dodając <Counter /> element .

@page "/"

<PageTitle>Home</PageTitle>

<h1>Hello, world!</h1>

<Counter />

Interfejsy API

ASP.NET Core udostępnia struktury do tworzenia interfejsów API, usług gRPC i aplikacji czasu rzeczywistego za pomocą usługi SignalR w celu natychmiastowego wypychania aktualizacji danych do klientów.

Podstawowy minimalny interfejs API:

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

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

app.Run();

Przy użyciu poprzedniego kodu:

  • Minimalny interfejs API jest skonfigurowany, który nasłuchuje żądań HTTP GET pod adresem URL /hello i odpowiada za pomocą polecenia "Hello, World!".
  • Element WebApplicationBuilder służy do konfigurowania aplikacji.
  • Metoda MapGet definiuje trasę i procedurę obsługi żądań GET.

Oprogramowanie pośredniczące

ASP.NET Core używa potoku składników oprogramowania pośredniczącego do obsługi żądań HTTP i odpowiedzi. Takie modularne podejście zapewnia elastyczność, umożliwiając dostosowywanie i rozszerzanie funkcjonalności aplikacji przez dodawanie lub usuwanie składników oprogramowania pośredniczącego zgodnie z potrzebami.

Potok oprogramowania pośredniczącego przetwarza żądania HTTP w sekwencyjny sposób, zapewniając, że każdy składnik może wykonać wyznaczone zadanie przed przekazaniem żądania do następnego składnika w potoku.

Dodanie wbudowanego oprogramowania pośredniczącego w pliku 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();

W poprzednim kodzie dodano kilka typowych składników oprogramowania pośredniczącego:

  • UseHttpsRedirection: przekierowuje żądania HTTP do protokołu HTTPS.
  • UseRouting: umożliwia routing do mapowania żądań do punktów końcowych.
  • MapStaticAssets: optymalizuje dostarczanie plików statycznych, takich jak HTML, CSS, JavaScript, obrazy i inne zasoby.
  • UseAuthentication: dodaje możliwości uwierzytelniania.
  • UseAuthorization: dodaje możliwości autoryzacji.
  • app.MapGet: Jest to prosty punkt końcowy, który pokazuje, że aplikacja jest uruchomiona.

Wstrzykiwanie zależności

ASP.NET Core obejmuje wbudowaną obsługę wstrzykiwania zależności (DI) do konfigurowania usług używanych przez aplikację i jej różnych składników platformy.

Na przykład możesz chcieć centralnie skonfigurować usługę przy użyciu platformy, takiej jak EntityFramework Core, od której zależą inne części aplikacji w celu uzyskania dostępu do bazy danych. Kontekst bazy danych można skonfigurować z elementu EntityFramework Core jako usługi przy użyciu iniekcji zależności w następujący sposób:

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

Przy użyciu poprzedniego kodu:

  • Element DbContext jest skonfigurowany jako usługa przy użyciu wstrzykiwania zależności.
  • Element WebApplicationBuilder służy do konfigurowania aplikacji.
  • Metoda AddDbContext rejestruje element w DbContext kontenerze wstrzykiwania zależności.
  • Parametry połączenia jest pobierana z konfiguracji i używana do konfigurowania kontekstu bazy danych.

Konfigurowanie

ASP.NET Core obsługuje uzyskiwanie dostępu do danych konfiguracji z różnych źródeł, takich jak pliki JSON, zmienne środowiskowe i argumenty wiersza polecenia.

Konfigurowanie parametry połączenia w pliku appsetting.json:

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

W pliku Program.cs:

var builder = WebApplication.CreateBuilder(args);

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

var app = builder.Build();

app.Run();

Przy użyciu poprzedniego kodu:

  • Parametry połączenia jest konfigurowany w pliku appsettings.json.
  • Element WebApplicationBuilder służy do konfigurowania aplikacji.
  • Metoda AddDbContext rejestruje element w DbContext kontenerze wstrzykiwania zależności.
  • Parametry połączenia jest pobierana z konfiguracji i używana do konfigurowania kontekstu bazy danych.

Monitorowanie i diagnostyka

ASP.NET Core udostępnia kompleksowy zestaw narzędzi do monitorowania i utrzymania kondycji i wydajności aplikacji. Te funkcje można łatwo dodać do aplikacji jako składniki oprogramowania pośredniczącego, integrując określone funkcje z projektem:

  • Wbudowane metryki: ASP.NET Core zawiera wbudowane metryki, które śledzą różne aspekty wydajności aplikacji, takie jak współczynniki żądań, czasy odpowiedzi i współczynniki błędów.
  • Elastyczna struktura rejestrowania: wbudowana jest elastyczna struktura rejestrowania i obsługuje różnych dostawców rejestrowania, w tym konsoli, debugowania i źródła zdarzeń. Ułatwia to przechwytywanie szczegółowych dzienników na potrzeby diagnostyki i monitorowania.
  • Śledzenie: ASP.NET Core obsługuje śledzenie rozproszone, które ułatwia śledzenie przepływu żądań między różnymi usługami i składnikami. Jest to przydatne w przypadku diagnozowania problemów z wydajnością i zrozumienia interakcji między różnymi częściami aplikacji.
  • OpenTelemetry: ASP.NET Core integruje się z platformą OpenTelemetry, platformą do obserwacji typu open source dla oprogramowania natywnego dla chmury. Usługa OpenTelemetry zapewnia ustandaryzowane interfejsy API i instrumentację do zbierania metryk, dzienników i śladów, co umożliwia bardziej efektywne monitorowanie i diagnozowanie aplikacji.
  • Kontrole kondycji: interfejs API sprawdzania kondycji umożliwia monitorowanie kondycji aplikacji i jej zależności. Możesz skonfigurować kontrole kondycji w celu raportowania stanu różnych składników, takich jak bazy danych, usługi zewnętrzne i inne.
  • Narzędzia diagnostyczne: ASP.NET Core udostępnia różne narzędzia diagnostyczne, takie jak dotnet-trace, dotnet-dump i dotnet-gcdump, które ułatwiają zbieranie i analizowanie danych diagnostycznych z aplikacji.