Co nowego w programie ASP.NET Core 2.1

W tym artykule przedstawiono najważniejsze zmiany w programie ASP.NET Core 2.1 z linkami do odpowiedniej dokumentacji.

SignalR

SignalR został przepisany dla ASP.NET Core 2.1.

ASP.NET Core SignalR zawiera szereg ulepszeń:

  • Uproszczony model skalowania w poziomie.
  • Nowy klient języka JavaScript bez zależności jQuery.
  • Nowy kompaktowy protokół binarny oparty na usłudze MessagePack.
  • Obsługa protokołów niestandardowych.
  • Nowy model odpowiedzi przesyłania strumieniowego.
  • Obsługa klientów w oparciu o gołe obiekty WebSocket.

Aby uzyskać więcej informacji, zobacz ASP.NET Core SignalR.

Razor biblioteki klas

ASP.NET Core 2.1 ułatwia kompilowanie i dołączanie Razorinterfejsu użytkownika opartego na bibliotece i udostępnianie go w wielu projektach. Nowy Razor zestaw SDK umożliwia tworzenie Razor plików w projekcie biblioteki klas, który można spakować do pakietu NuGet. Widoki i strony w bibliotekach są automatycznie odnajdywane i mogą być zastępowane przez aplikację. Integrując Razor kompilację z kompilacją:

  • Czas uruchamiania aplikacji jest znacznie krótszy.
  • Szybkie aktualizacje Razor widoków i stron w czasie wykonywania są nadal dostępne w ramach iteracyjnego przepływu pracy programowania.

Aby uzyskać więcej informacji, zobacz Tworzenie interfejsu Razor użytkownika wielokrotnego użytku przy użyciu projektu Biblioteka klas.

Identity Biblioteka interfejsu użytkownika i tworzenie szkieletów

ASP.NET Core 2.1 zapewnia ASP.NET Core Identity jako bibliotekę Razorklas. Aplikacje, które obejmują Identity , mogą stosować nowy Identity szkielet, aby selektywnie dodać kod źródłowy zawarty w IdentityRazor bibliotece klas (RCL). Możesz wygenerować kod źródłowy, aby zmodyfikować kod i zmienić zachowanie. Możesz na przykład poinstruować szkielet, aby wygenerował kod użyty w rejestracji. Wygenerowany kod ma pierwszeństwo przed tym samym kodem na liście Identity RCL.

Aplikacje, które nie zawierają uwierzytelniania, mogą stosować Identity szkielet, aby dodać pakiet listy RCLIdentity. Możesz wybrać Identity kod do wygenerowania.

Aby uzyskać więcej informacji, zobacz Szkielet Identity w projektach ASP.NET Core.

HTTPS

Ze zwiększonym naciskiem na bezpieczeństwo i prywatność ważne jest włączenie protokołu HTTPS dla aplikacji internetowych. Wymuszanie protokołu HTTPS staje się coraz bardziej rygorystyczne w Internecie. Witryny, które nie korzystają z protokołu HTTPS, są uznawane za niezabezpieczone. Przeglądarki (Chromium, Mozilla) zaczynają wymuszać, że funkcje internetowe muszą być używane z bezpiecznego kontekstu. RODO wymaga korzystania z protokołu HTTPS w celu ochrony prywatności użytkowników. Korzystanie z protokołu HTTPS w środowisku produkcyjnym ma kluczowe znaczenie, jednak użycie protokołu HTTPS w środowisku deweloperskim może pomóc w zapobieganiu problemom we wdrożeniu (na przykład niezabezpieczonym linkom). ASP.NET Core 2.1 zawiera szereg ulepszeń, które ułatwiają korzystanie z protokołu HTTPS podczas opracowywania i konfigurowania protokołu HTTPS w środowisku produkcyjnym. Aby uzyskać więcej informacji, zobacz Wymuszanie protokołu HTTPS.

Domyślnie włączona

Aby ułatwić tworzenie bezpiecznych witryn internetowych, protokół HTTPS jest teraz domyślnie włączony. Począwszy od wersji 2.1, nasłuchujehttps://localhost:5001, Kestrel gdy lokalny certyfikat dewelopera jest obecny. Tworzony jest certyfikat dewelopera:

  • W ramach pierwszego uruchomienia zestawu SDK platformy .NET Core podczas korzystania z zestawu SDK po raz pierwszy.
  • Ręcznie przy użyciu nowego dev-certs narzędzia.

Uruchom polecenie dotnet dev-certs https --trust , aby ufać certyfikatowi.

Przekierowywanie i wymuszanie protokołu HTTPS

Aplikacje internetowe zazwyczaj muszą nasłuchiwać zarówno protokołu HTTP, jak i HTTPS, ale następnie przekierowywać cały ruch HTTP do protokołu HTTPS. W wersji 2.1 wprowadzono wyspecjalizowane oprogramowanie pośredniczące przekierowania HTTPS, które inteligentnie przekierowuje w oparciu o obecność portów konfiguracji lub powiązanych serwerów.

Korzystanie z protokołu HTTPS można dodatkowo wymusić przy użyciu protokołu HTTP Strict Transport Security Protocol (HSTS). Usługa HSTS instruuje przeglądarki, aby zawsze uzyskiwały dostęp do witryny za pośrednictwem protokołu HTTPS. ASP.NET Core 2.1 dodaje oprogramowanie pośredniczące HSTS, które obsługuje opcje maksymalnego wieku, poddomeny i listy wstępnego ładowania hsTS.

Konfiguracja dla środowiska produkcyjnego

W środowisku produkcyjnym protokół HTTPS musi być jawnie skonfigurowany. W wersji 2.1 dodano domyślny schemat konfiguracji konfigurowania protokołu HTTPS.Kestrel Aplikacje można skonfigurować do użycia:

GDPR

ASP.NET Core udostępnia interfejsy API i szablony, które pomagają spełnić niektóre z wymagań dotyczących ogólnego rozporządzenia o ochronie danych (RODO). Aby uzyskać więcej informacji, zobacz Obsługa RODO w usłudze ASP.NET Core. Przykładowa aplikacja pokazuje, jak używać i umożliwia testowanie większości punktów rozszerzeń i interfejsów API RODO dodanych do szablonów platformy ASP.NET Core 2.1.

Testy integracji

Wprowadzono nowy pakiet, który usprawnia tworzenie i wykonywanie testów. Pakiet Microsoft.AspNetCore.Mvc.Testing obsługuje następujące zadania:

  • Kopiuje plik zależności (*.deps) z przetestowanej aplikacji do folderu bin projektu testowego.
  • Ustawia katalog główny zawartości na katalog główny projektu testowanej aplikacji, tak aby pliki statyczne i strony/widoki zostały znalezione podczas wykonywania testów.
  • Udostępnia klasę WebApplicationFactory<TEntryPoint> usprawniającą uruchamianie przetestowanej aplikacji za pomocą polecenia TestServer.

Poniższy test używa narzędzia xUnit , aby sprawdzić, czy strona Indeks jest ładowana z kodem stanu powodzenia i prawidłowym nagłówkiem Content-Type:

public class BasicTests
    : IClassFixture<WebApplicationFactory<RazorPagesProject.Startup>>
{
    private readonly HttpClient _client;

    public BasicTests(WebApplicationFactory<RazorPagesProject.Startup> factory)
    {
        _client = factory.CreateClient();
    }

    [Fact]
    public async Task GetHomePage()
    {
        // Act
        var response = await _client.GetAsync("/");

        // Assert
        response.EnsureSuccessStatusCode(); // Status Code 200-299
        Assert.Equal("text/html; charset=utf-8",
            response.Content.Headers.ContentType.ToString());
    }
}

Aby uzyskać więcej informacji, zobacz temat Testy integracji.

[ApiController], ActionResult<T>

ASP.NET Core 2.1 dodaje nowe konwencje programowania, które ułatwiają tworzenie czystych i opisowych internetowych interfejsów API. ActionResult<T> jest nowym typem dodanym, aby umożliwić aplikacji zwrócenie typu odpowiedzi lub dowolnego innego wyniku akcji (podobnego do IActionResult), a jednocześnie wskazuje typ odpowiedzi. Atrybut [ApiController] został również dodany jako sposób wyrażenia zgody na konwencje i zachowania specyficzne dla internetowego interfejsu API.

Aby uzyskać więcej informacji, zobacz Build Web APIs with ASP.NET Core (Tworzenie internetowych interfejsów API za pomocą platformy ASP.NET Core).

IHttpClientFactory

ASP.NET Core 2.1 zawiera nową IHttpClientFactory usługę, która ułatwia konfigurowanie i używanie wystąpień w aplikacjach HttpClient . HttpClient Ma już koncepcję delegowania procedur obsługi, które mogą być połączone ze sobą dla wychodzących żądań HTTP. Interfejs Factory:

  • Sprawia, że rejestrowanie wystąpień HttpClient poszczególnych nazwanych klientów jest bardziej intuicyjne.
  • Implementuje program obsługi Polly, który umożliwia używanie zasad Polly na potrzeby ponawiania prób, wyłączników itp.

Aby uzyskać więcej informacji, zobacz Inicjowanie żądań HTTP.

Kestrel konfiguracja transportu libuv

W wersji ASP.NET Core 2.1 domyślny transport nie jest już oparty na Libuv, Kestrelale zamiast tego oparty na gniazdach zarządzanych. Aby uzyskać więcej informacji, zobacz Kestrel Implementacja serwera internetowego: Konfiguracja transportu Libuv.

Ogólny konstruktor hostów

Wprowadzono ogólny konstruktor hostów (HostBuilder). Tego konstruktora można używać w przypadku aplikacji, które nie przetwarzają żądań HTTP (komunikaty, zadania w tle itp.).

Aby uzyskać więcej informacji, zobacz Host ogólny platformy .NET.

Zaktualizowane szablony SPA

Szablony aplikacji jednostronicowych dla platform Angular i React są aktualizowane w celu używania standardowych struktur projektu i systemów kompilacji dla każdej platformy.

Szablon Angular jest oparty na interfejsie wiersza polecenia platformy Angular, a szablon React jest oparty na aplikacji create-react-app.

Aby uzyskać więcej informacji, zobacz:

Razor Wyszukiwanie zasobów przez Razor strony

W wersji 2.1 Razor strony wyszukują Razor zasoby (takie jak układy i części) w następujących katalogach w podanej kolejności:

  1. Folder Current Pages.
  2. /Pages/Shared/
  3. /Views/Shared/

Razor Strony w obszarze

Razor Strony obsługują teraz obszary. Aby wyświetlić przykład obszarów, utwórz nową Razor aplikację internetową Pages z indywidualnymi kontami użytkowników. Aplikacja Razor internetowa Pages z indywidualnymi kontami użytkowników obejmuje /Areas/Identity/Pages.

Wersja zgodności mvC

Metoda SetCompatibilityVersion umożliwia aplikacji rezygnację lub rezygnację z potencjalnie powodujących niezgodność zmian wprowadzonych w ASP.NET Core MVC 2.1 lub nowszej wersji.

Aby uzyskać więcej informacji, zobacz Zgodność wersji ASP.NET Core MVC.

Migrowanie z wersji 2.0 do wersji 2.1

Zobacz Migrowanie z ASP.NET Core 2.0 do 2.1.

Dodatkowe informacje

Aby uzyskać pełną listę zmian, zobacz informacje o wersji ASP.NET Core 2.1.