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 najdete v tématu Opakovaně použitelné Razor uživatelské rozhraní v knihovnách tříd s ASP.NET Core.
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 IdentityRazor v knihovně 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 zvýšenému zaměření na zabezpečení a privacypovolení HTTPS pro webové aplikace je důležité. 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ě uživatele privacy. 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í:
- Aktuální složka Stránky
- /Pages/Shared/
- /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.