Novinky v ASP.NET Core 2.1

Tento článek popisuje nejvýznamnější změny v ASP.NET Core 2.1 s odkazy na příslušnou dokumentaci.

SignalR

SignalR byla přepsána pro ASP.NET Core 2.1.

ASP.NET Core SignalR zahrnuje řadu vylepšení:

  • Zjednodušený model se škálováním na více systémů
  • Nový javascriptový klient bez závislosti jQuery.
  • Nový kompaktní binární protokol založený na MessagePacku.
  • Podpora vlastních protokolů
  • Nový model odezvy streamování.
  • Podpora klientů založených na holých webSocketech.

Další informace najdete v tématu ASP.NET Core SignalR.

Razor Knihovny tříd

ASP.NET Core 2.1 usnadňuje sestavování a zahrnutí Razoruživatelského rozhraní založeného na knihovně a jejich sdílení napříč několika projekty. Nová Razor sada SDK umožňuje sestavení Razor souborů do projektu knihovny tříd, který lze zabalit do balíčku NuGet. Zobrazení a stránky v knihovnách se automaticky zjistí a aplikace je může přepsat. Integrací Razor kompilace do sestavení:

  • Čas spuštění aplikace je výrazně rychlejší.
  • Rychlé aktualizace Razor zobrazení a stránek za běhu jsou stále k dispozici jako součást pracovního postupu iterativního vývoje.

Další informace naleznete v tématu Vytvoření opakovaně použitelného uživatelského rozhraní pomocí Razor projektu Knihovny tříd.

Identity Uživatelské rozhraní knihovny a generování uživatelského rozhraní

ASP.NET Core 2.1 poskytuje ASP.NET Core Identity jako knihovnu Razortříd. Aplikace, které zahrnují Identity , můžou nový Identity scaffolder použít k selektivnímu přidání zdrojového kódu obsaženého v knihovně IdentityRazor tříd (RCL). Můžete chtít vygenerovat zdrojový kód, abyste mohli kód upravit a změnit chování. Můžete například dát scaffolder pokyn, aby vygeneroval kód použitý v registraci. Vygenerovaný kód má přednost před stejným kódem v seznamu Identity RCL.

Aplikace, které nezahrnují ověřování, můžou použít Identity scaffolder pro přidání balíčku RCLIdentity. Máte možnost vybrat Identity kód, který se má vygenerovat.

Další informace najdete v tématu Generování uživatelského rozhraní Identity v projektech ASP.NET Core.

HTTPS

Díky většímu zaměření na zabezpečení a ochranu osobních údajů je důležité povolit HTTPS pro webové aplikace. Vynucování HTTPS je na webu stále přísnější. Weby, které nepoužívají PROTOKOL HTTPS, se považují za nezabezpečené. Prohlížeče (Chromium, Mozilla) začínají vynucovat, aby webové funkce byly použity z zabezpečeného kontextu. GDPR vyžaduje použití protokolu HTTPS k ochraně osobních údajů uživatelů. I když je použití HTTPS v produkčním prostředí kritické, může použití PROTOKOLU HTTPS ve vývoji pomoct zabránit problémům v nasazení (například nezabezpečené odkazy). ASP.NET Core 2.1 obsahuje řadu vylepšení, která usnadňují používání protokolu HTTPS při vývoji a konfiguraci HTTPS v produkčním prostředí. Další informace najdete v tématu Vynucení HTTPS.

Zapnuto ve výchozím nastavení

Pro usnadnění zabezpečeného vývoje webů je teď ve výchozím nastavení povolený protokol HTTPS. Od verze 2.1 nasloucháhttps://localhost:5001, Kestrel když je k dispozici místní vývojový certifikát. Vytvoří se vývojový certifikát:

  • Při prvním spuštění sady .NET Core SDK při prvním použití sady SDK
  • Ručně pomocí nového dev-certs nástroje.

Spusťte dotnet dev-certs https --trust certifikát, který důvěřuje certifikátu.

Přesměrování a vynucení HTTPS

Webové aplikace obvykle potřebují naslouchat na HTTP i HTTPS, ale pak přesměrovat veškerý provoz HTTP na HTTPS. Ve verzi 2.1 byl zaveden specializovaný middleware přesměrování HTTPS, který inteligentně přesměrovává na základě přítomnosti portů konfigurace nebo vázaného serveru.

Použití protokolu HTTPS je možné dále vynutit pomocí protokolu HSTS (Http Strict Transport Security Protocol). HSTS dává prohlížečům pokyn, aby vždy přistupoval k webu přes PROTOKOL HTTPS. ASP.NET Core 2.1 přidává middleware HSTS, který podporuje možnosti pro maximální stáří, subdomény a seznam předběžného načtení HSTS.

Konfigurace pro produkční prostředí

V produkčním prostředí musí být https explicitně nakonfigurované. Ve verzi 2.1 bylo přidáno výchozí schéma konfigurace pro konfiguraci protokolu HTTPS Kestrel pro. Aplikace je možné nakonfigurovat tak, aby používaly:

  • Několik koncových bodů včetně adres URL. Další informace najdete v tématu Kestrel Implementace webového serveru: Konfigurace koncového bodu.
  • Certifikát, který se má použít pro PROTOKOL HTTPS, buď ze souboru na disku, nebo z úložiště certifikátů.

GDPR

ASP.NET Core poskytuje rozhraní API a šablony, které pomáhají splnit některé požadavky obecného nařízení EU o ochraně osobních údajů (GDPR). Další informace najdete v tématu Podpora GDPR v ASP.NET Core. Ukázková aplikace ukazuje, jak používat a umožňuje otestovat většinu bodů rozšíření GDPR a rozhraní API přidaných do šablon ASP.NET Core 2.1.

Integrační testy

Zavádí se nový balíček, který zjednodušuje vytváření a spouštění testů. Balíček Microsoft.AspNetCore.Mvc.Testing zpracovává následující úlohy:

  • Zkopíruje soubor závislostí (*.deps) z testované aplikace do složky bin testovacího projektu.
  • Nastaví kořen obsahu na kořen projektu testované aplikace tak, aby se při spuštění testů zjistily statické soubory a stránky/zobrazení.
  • WebApplicationFactory<TEntryPoint> Poskytuje třídu pro zjednodušení spouštění testované aplikace pomocí TestServer.

Následující test používá xUnit ke kontrole načtení indexové stránky se stavovým kódem úspěchu a se správnou hlavičkou 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());
    }
}

Další informace najdete v tématu Integrační testy .

[ApiController], ActionResult<T>

ASP.NET Core 2.1 přidává nové programovací konvence, které usnadňují vytváření čistých a popisných webových rozhraní API. ActionResult<T> je nový typ přidaný, aby aplikace mohla vrátit buď typ odpovědi, nebo jakýkoli jiný výsledek akce (podobný IActionResult), zatímco stále indikuje typ odpovědi. Atribut [ApiController] byl také přidán jako způsob, jak se přihlásit k konvencím a chováním specifických pro webové rozhraní API.

Další informace najdete v tématu Vytváření webových rozhraní API s ASP.NET Core.

IHttpClientFactory

ASP.NET Core 2.1 obsahuje novou IHttpClientFactory službu, která usnadňuje konfiguraci a využívání instancí v aplikacích HttpClient . HttpClient již má koncept delegování obslužných rutin, které by mohly být propojeny pro odchozí požadavky HTTP. Objekt pro vytváření:

  • Umožňuje intuitivnější registraci instancí HttpClient jednotlivých pojmenovaných klientů.
  • Implementuje obslužnou rutinu Polly, která umožňuje použít zásady Polly pro opakování, CircuitBreakers atd.

Další informace naleznete v tématu Zahájení požadavků HTTP.

Kestrel konfigurace přenosu libuv

S vydáním ASP.NET Core 2.1 už výchozí přenos není založený na knihovně Libuv, Kestrelale na základě spravovaných soketů. Další informace naleznete v tématu Kestrel Implementace webového serveru: Konfigurace přenosu Libuv.

Obecný tvůrce hostitelů

Tvůrce obecných hostitelů (HostBuilder) byl zaveden. Tento tvůrce je možné použít pro aplikace, které nezpracují požadavky HTTP (zasílání zpráv, úlohy na pozadí atd.).

Další informace naleznete v tématu .NET Generic Host.

Aktualizované šablony SPA

Šablony jednostrákových aplikací pro Angular a React se aktualizují tak, aby používaly standardní struktury projektů a systémy sestavení pro každou architekturu.

Šablona Angular je založená na rozhraní příkazového řádku Angular a šablona React je založená na vytvoření-react-app.

Další informace naleznete v tématu:

Razor Vyhledávání prostředků na Razor stránkách

Ve verzi 2.1 Razor stránky vyhledávají Razor prostředky (například rozložení a části) v následujících adresářích v uvedeném pořadí:

  1. Aktuální složka Stránky
  2. /Pages/Shared/
  3. /Views/Shared/

Razor Stránky v oblasti

Razor Stránky teď podporují oblasti. Pokud chcete zobrazit příklad oblastí, vytvořte novou Razor webovou aplikaci Pages s jednotlivými uživatelskými účty. Webová Razor aplikace Pages s jednotlivými uživatelskými účty zahrnuje /Areas/Identity/Pages.

Verze kompatibility MVC

Tato SetCompatibilityVersion metoda umožňuje aplikaci vyjádřit výslovný souhlas nebo vyjádřit výslovný nesouhlas s potenciálně zásadními změnami chování zavedeným v ASP.NET Core MVC 2.1 nebo novějším.

Další informace najdete v tématu Verze kompatibility pro ASP.NET Core MVC.

Migrace z verze 2.0 na 2.1

Viz Migrace z ASP.NET Core 2.0 na 2.1.

Další informace

Úplný seznam změn najdete ve zprávě k vydání verze ASP.NET Core 2.1.