Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Tom Dykstra, Steve Smith, Stephen Halter a Chris Ross
Aplikace ASP.NET Core běží s implementací vnitroprocesového serveru HTTP. Implementace serveru naslouchá požadavkům HTTP a zobrazí je do aplikace jako sadu funkcí požadavků , které se skládají do HttpContext.
ASP.NET Core se dodává s těmito možnostmi:
- Kestrel server je výchozí implementace multiplatformních serverů HTTP. Kestrel poskytuje nejlepší výkon a využití paměti, ale nemá některé z pokročilých funkcí HTTP.sys. Podívejte se na Kestrel vs. HTTP.sys na záložce Windows pro více informací.
- Server HTTP služby IIS je server běžící ve stejném procesu pro službu IIS.
- HTTP.sys server je server HTTP jen pro Windows založený na ovladači jádraHTTP.sys a rozhraní API serveru HTTP.
Při použití služby IIS nebo IIS Express se aplikace spustí:
- Ve stejném procesu jako pracovní proces služby IIS ( model hostování v procesu) se serverem HTTP služby IIS. Konfigurace v procesu je doporučenou volbou.
- V procesu odděleném od pracovního procesu služby IIS (
model hostování mimo pracovní proces ) se serverem.
Modul ASP.NET Core je nativní modul služby IIS, který zpracovává nativní requesty služby IIS mezi službou IIS a in-process serverem HTTP služby IIS nebo Kestrel. Další informace najdete v tématu ASP.NET Základní modul (ANCM) pro službu IIS.
Kestrel versus HTTP.sys
Kestrel má oproti HTTP.sys následující výhody:
- Lepší výkon a využití paměti
- Multiplatformní
- Flexibilita (vyvíjí se a opravuje nezávisle na operačním systému)
- Programová konfigurace protokolu TLS a portů
- Rozšiřitelnost, která umožňuje protokoly, jako jsou PPv2 a alternativní transporty.
Http.Sys funguje jako součást sdíleného režimu jádra s následujícími funkcemi, které kestrel nemají:
- Sdílení portů
- Ověřování systému Windows v režimu jádra Kestrel podporuje pouze ověřování v uživatelském režimu.
- Rychlé využívá serveru proxy přes přenosy front
- Přímý přenos souborů
- Ukládání odpovědí do mezipaměti
Modely hostingu
K dispozici je několik modelů hostování:
Kestrel self-hosting: Kestrel Webový server běží bez nutnosti jakéhokoli jiného externího webového serveru, jako je služba IIS nebo HTTP.sys.
HTTP.sys self-hosting je alternativou k Kestrel. Kestrel se doporučuje používat raději než HTTP.sys, pokud aplikace nevyžaduje funkce, které nejsou na serveru Kestrel dostupné.
Hostování v procesu služby IIS: Aplikace ASP.NET Core běží ve stejném procesu jako pracovní proces služby IIS. Hostování v procesu služby IIS poskytuje lepší výkon při hostování mimo proces služby IIS, protože požadavky nejsou přesměrované přes adaptér zpětné smyčky, síťové rozhraní, které vrací odchozí síťový provoz zpět na stejný počítač. Služba IIS zpracovává správu procesů pomocí
služby aktivace procesu systému Windows (WAS).< /a0>Hostování mimo proces služby IIS: aplikace ASP.NET Core běží v procesu odděleně od pracovního procesu služby IIS a modul zpracovává správu procesů. Modul zahájí tento proces pro aplikaci ASP.NET Core při přijetí prvního požadavku a v případě vypnutí nebo selhání aplikaci restartuje. Jedná se v podstatě o stejné chování jako u aplikací, které spouštějí proces, které spravuje služba aktivace procesu Systému Windows (WAS). Použití samostatného procesu také umožňuje hostování více aplikací ze stejného fondu aplikací.
Další informace najdete v následujících článcích:
Kestrel
Kestrel server je výchozí implementace multiplatformních serverů HTTP. Kestrel poskytuje nejlepší výkon a využití paměti, ale nemá některé z pokročilých funkcí HTTP.sys. Další informace najdete v tématu Kestrel vs. HTTP.sys v tomto dokumentu.
Kestrel použijte:
Samostatně jako hraniční server zpracovávající požadavky přímo ze sítě, včetně internetu.
S reverzním proxy serverem, jako je internetová informační služba (IIS),Nginx nebo Apache. Reverzní proxy server přijímá požadavky HTTP z internetu a předává je do serveru Kestrel.
Podporuje se jakákoli konfigurace hostování – s reverzním proxy serverem i bez něj.
Pokyny ke konfiguraci Kestrel a informace o tom, kdy použít Kestrel v konfiguraci reverzního proxy serveru, najdete na webovém serveru Kestrel pro ASP.NET Core.
ASP.NET Core se dodává s těmito možnostmi:
- Kestrel server je výchozí multiplatformní server HTTP.
- HTTP.sys server je server HTTP jen pro Windows založený na ovladači jádraHTTP.sys a rozhraní API serveru HTTP.
Při použití služby IIS nebo IIS Express se aplikace spouští v procesu odděleném od pracovního procesu iis (mimo proces) se serveremKestrel.
Vzhledem k tomu, že aplikace ASP.NET Core běží v procesu odděleném od pracovního procesu služby IIS, zajišťuje správu procesů modul. Modul zahájí tento proces pro aplikaci ASP.NET Core při přijetí prvního požadavku a v případě vypnutí nebo selhání aplikaci restartuje. Jedná se v podstatě o stejné chování jako u aplikací, které spouštějí proces, které spravuje služba aktivace procesu Systému Windows (WAS).
Následující diagram znázorňuje vztah mezi službou IIS, modulem ASP.NET Core a mimoprocesově hostovanou aplikací:
Požadavky přijdou z webu do ovladače HTTP.sys v režimu jádra. Ovladač přesměruje požadavek do služby IIS na nakonfigurovaném portu webu, obvykle 80 (HTTP) nebo 443 (HTTPS). Modul předá požadavky na server Kestrel na náhodném portu dané aplikace mimo porty 80 a 443.
Modul specifikuje port prostřednictvím proměnné prostředí při spuštění a IIS Integration Middleware nakonfiguruje server tak, aby naslouchal na http://localhost:{port}
. Provedou se další kontroly a požadavky, které nepocházejí z tohoto modulu, se zamítnou. Modul nepodporuje předávání HTTPS, takže se požadavky předávají přes HTTP, i když je služba IIS přijme přes HTTPS.
Jakmile server Kestrel přijme požadavek z modulu, požadavek se odešle do kanálu middlewaru ASP.NET Core. Kanál middlewaru požadavek zpracuje a předá ho jako instanci HttpContext
do logiky aplikace. Middleware přidaný integrací služby IIS aktualizuje schéma, vzdálenou IP adresu a základ cesty k účtu pro přesměrování požadavku na server Kestrel. Odpověď aplikace se předá zpět do služby IIS, která ji odešle klientovi HTTP, který požadavek inicioval.
Pokyny ke konfiguraci modulu služby IIS a ASP.NET Core najdete v následujících tématech:
Nginx a Kestrel
Informace o tom, jak používat Nginx v Linuxu jako reverzní proxy server Kestrel, najdete v tématu Hostitel ASP.NET Core v Linuxu s Nginx.
HTTP.sys
Pokud aplikace ASP.NET Core běží ve Windows, je HTTP.sys alternativou k serveru Kestrel. Kestrel se doporučuje používat raději než HTTP.sys, pokud aplikace nevyžaduje funkce, které nejsou na serveru Kestrel dostupné. Další informace najdete v tématu HTTP.sys implementace webového serveru v ASP.NET Core.
HTTP.sys lze použít také pro aplikace, které jsou vystavené jenom v interní síti.
Pokyny ke konfiguraci HTTP.sys najdete v tématuHTTP.sys implementace webového serveru v ASP.NET Core.
Infrastruktura serveru ASP.NET Core
Rozhraní IApplicationBuilder dostupné v metodě Startup.Configure
vystavuje vlastnost ServerFeatures typu IFeatureCollection.
Kestrel a HTTP.sys vystavují jenom jednu funkci, IServerAddressesFeature, ale různé implementace serverů mohou vystavit další funkce.
Pomocí IServerAddressesFeature
Vlastní servery
Pokud integrované servery nesplňují požadavky aplikace, je možné vytvořit vlastní implementaci serveru. Příručka Open Web Interface for .NET (OWIN) ukazuje, jak napsat implementaci založenou na IServer. Implementaci vyžadují jenom rozhraní funkcí, které aplikace využívá, ale se musí podporovat minimálně IHttpRequestFeature a IHttpResponseFeature.
Spuštění serveru
Server se spustí při spuštění aplikace v integrovaném vývojovém prostředí (IDE) nebo editoru:
- Visual Studio: Profily spuštění je možné použít ke spuštění aplikace a serveru pomocí modulu IIS Express/ASP.NET Core nebo konzoly.
- Visual Studio Code: Aplikaci a server spouští Omnisharp, který aktivuje ladicí program CoreCLR.
Při spuštění aplikace pomocí příkazového řádku ve složce projektu příkaz dotnet run spustí aplikaci a server (pouze Kestrel a HTTP.sys). Konfigurace je určená možností -c|--configuration
, která je nastavena na Debug
(výchozí) nebo Release
.
Soubor launchSettings.json
poskytuje konfiguraci při spouštění aplikace s využitím dotnet run
nebo ladicího programu integrovaného do nástrojů, jako je Visual Studio. Pokud jsou v souboru launchSettings.json
k dispozici profily spouštění, použijte možnost --launch-profile {PROFILE NAME}
s příkazem dotnet run
nebo vyberte požadovaný profil v sadě Visual Studio. Další informace naleznete na dotnet run a balení distribuce .NET Core.
Podpora HTTP/2
Protokol HTTP/2 se podporuje s ASP.NET Core v následujících scénářích nasazení:
- Kestrel
- Operační systém
- Windows Server 2016 / Windows 10 nebo novější†
- Linux s OpenSSL 1.0.2 nebo novější (například Ubuntu 16.04 nebo novější)
- macOS 10.15 nebo novější
- Cílová architektura: .NET Core 2.2 nebo novější
- Operační systém
-
HTTP.sys
- Windows Server 2016 / Windows 10 nebo novější
- Cílová architektura: Nevztahuje se na nasazení HTTP.sys.
-
IIS (v procesu)
- Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
- Cílová architektura: .NET Core 2.2 nebo novější
-
IIS (mimo proces)
- Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
- Připojení k veřejnému hraničnímu serveru používají HTTP/2, ale připojení proxy serveru k serveru Kestrel používá HTTP/1.1.
- Cílová architektura: Nevztahuje se na mimoprocesová nasazení služby IIS.
†Kestrel má omezenou podporu protokolu HTTP/2 v systémech Windows Server 2012 R2 a Windows 8.1. Podpora je omezená, protože seznam podporovaných šifrovacích sad TLS dostupných v těchto operačních systémech je omezený. K zabezpečení připojení TLS může být potřeba certifikát vygenerovaný pomocí algoritmu ECDSA (Elliptic Curve Digital Signature Algorithm).
- Kestrel
- Operační systém
- Windows Server 2016 / Windows 10 nebo novější†
- Linux s OpenSSL 1.0.2 nebo novější (například Ubuntu 16.04 nebo novější)
- Protokol HTTP/2 bude v systému macOS podporován v některé z budoucích verzí.
- Cílová architektura: .NET Core 2.2 nebo novější
- Operační systém
-
HTTP.sys
- Windows Server 2016 / Windows 10 nebo novější
- Cílová architektura: Nevztahuje se na nasazení HTTP.sys.
-
IIS (v procesu)
- Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
- Cílová architektura: .NET Core 2.2 nebo novější
-
IIS (mimo proces)
- Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
- Připojení k veřejnému hraničnímu serveru používají HTTP/2, ale připojení proxy serveru k serveru Kestrel používá HTTP/1.1.
- Cílová architektura: Nevztahuje se na mimoprocesová nasazení služby IIS.
†Kestrel má omezenou podporu protokolu HTTP/2 v systémech Windows Server 2012 R2 a Windows 8.1. Podpora je omezená, protože seznam podporovaných šifrovacích sad TLS dostupných v těchto operačních systémech je omezený. K zabezpečení připojení TLS může být potřeba certifikát vygenerovaný pomocí algoritmu ECDSA (Elliptic Curve Digital Signature Algorithm).
- Kestrel
- Operační systém
- Windows Server 2016 / Windows 10 nebo novější†
- Linux s OpenSSL 1.0.2 nebo novější (například Ubuntu 16.04 nebo novější)
- Protokol HTTP/2 bude v systému macOS podporován v některé z budoucích verzí.
- Cílová architektura: .NET Core 2.2 nebo novější
- Operační systém
-
HTTP.sys
- Windows Server 2016 / Windows 10 nebo novější
- Cílová architektura: Nevztahuje se na nasazení HTTP.sys.
-
IIS (v procesu)
- Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
- Cílová architektura: .NET Core 2.2 nebo novější
-
IIS (mimo proces)
- Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
- Připojení k veřejnému hraničnímu serveru používají HTTP/2, ale připojení proxy serveru k serveru Kestrel používá HTTP/1.1.
- Cílová architektura: Nevztahuje se na mimoprocesová nasazení služby IIS.
†Kestrel má omezenou podporu protokolu HTTP/2 v systémech Windows Server 2012 R2 a Windows 8.1. Podpora je omezená, protože seznam podporovaných šifrovacích sad TLS dostupných v těchto operačních systémech je omezený. K zabezpečení připojení TLS může být potřeba certifikát vygenerovaný pomocí algoritmu ECDSA (Elliptic Curve Digital Signature Algorithm).
-
HTTP.sys
- Windows Server 2016 / Windows 10 nebo novější
- Cílová architektura: Nevztahuje se na nasazení HTTP.sys.
-
IIS (mimo proces)
- Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
- Připojení k veřejnému hraničnímu serveru používají HTTP/2, ale připojení proxy serveru k serveru Kestrel používá HTTP/1.1.
- Cílová architektura: Nevztahuje se na mimoprocesová nasazení služby IIS.
Připojení HTTP/2 musí používat Application-Layer Protokolové vyjednávání (ALPN) a TLS 1.2 nebo novější. Další informace naleznete v tématech, která se týkají scénářů nasazení serveru.
Vzory podnikových webových aplikací
Pokyny k vytvoření spolehlivé, zabezpečené, výkonné, testovatelné a škálovatelné aplikace ASP.NET Core najdete v tématu Vzory podnikových webových aplikací. K dispozici je kompletní ukázková webová aplikace pro produkční kvalitu, která implementuje vzory.