Hur Asp.Net Core Hosting-modell används i webbapplikationer?




Asp.net-kärnan har en betydande förbättring av värdmodellen. I de tidigare versionerna förväntades det vara värd för Asp.net Core-webbapplikationer via proxyservrar som IIS på Windows, Apache eller NGINX. Ny Asp.net-kärna 2.2 tillåter dock direkt värd för Asp.net-applikationen i Windows inom IIS utan krav på extern server. Detta ökar således genomströmningen med hjälp av en enkel värdmekanism i processen.

Värdmodeller i ASP.NET Core

Värdmodeller i ASP.NET Core är av två typer, dvs. värd för processer och värd utan process. Innan ASP.Net Core 2.2 fanns bara en värdmodell, som är värd utan process, men på grund av prestandan introduceras In-Process Hosting Model i Asp.net core 2.2-versioner.

Introduktion av värdemodell i processen i Asp.net Core

De tidigare versionerna av ASP.NET Core krävde en att vara värd för applikationen i IIS med hjälp av en värdmodell utanför processen som fungerar via IIS. Förfrågningar som träffar IIS eller IIS Express vidarebefordras till ASP.NET Core webbapplikation som körs inom Kestrel Web Server. Men med den nya värdprocessen i processen används bara en server för värd som IIS, Nginx eller Linux. Det betyder att istället för att vidarebefordra förfrågningar till Kestrel, är en ny webbserverimplementering (IISHttpServer) värd direkt i IIS Application Pool, som kommer att betjäna begäran. Med ASP.NET Core 3.1 används värdmodell i processen som standardmodell när du utvecklar en ny applikation med en befintlig mall.

Uppenbarligen har denna värdmodell mycket hög kapacitet och prestandaförbättring när man jämför med värdmodellen utanför processen.

Utvärderad värdmodell

I värdmodeller utanför processen kan du antingen använda Kestrel-servern direkt som en användarbegäran inför server eller så kan du distribuera applikationen i IIS som fungerar som en proxyserver och skickar förfrågningar till den interna Kestrel-servern. I den här typen av värdmodeller har du två alternativ för värd, dvs att använda Kestrel och Proxy Server:

1. Använda Kestrel

I detta fungerar Kestrel själv som kantserver som direkt serveranvändare begär vilket innebär att man bara kan använda Kestrel-servern för applikationen.

2. Använda en proxyserver


På grund av Kestrel-serverns begränsningar kan man inte använda detta i alla applikationer. I sådana fall måste man använda kraftfulla servrar som IIS, Apache eller NGINX. Så i den här situationen fungerar den här servern som en reservproxy-server som kommer att omdirigera varje begäran till den interna Kestrel-delen där applikationen körs. Här körs två servrar som IIS och Kestrel.

Denna värdmodell är en standardmodell för alla tillämpningar som implementerats tidigare. NET Core 2.2-versionen. En av begränsningarna för att använda den här typen, t.ex. prestanda långsamhet.

Slutgiltiga tankar:

Enligt fakta vill de flesta ASP.Net webbutvecklingsföretag‌ säkert använda In-Process-värdmodellen. Eftersom det förbrukar mindre resurser och ger bra prestanda. Eftersom det inte behöver någon ytterligare process för Kestrel och det undviker också extra kommunikation mellan IIS och Kestrel. Det finns emellertid fall där man kanske vill välja webbhotell utanför processen, till exempel för webbhotell för samma webbapplikation i Windows och Linux. När man talar om att vara värd för applikationen på andra plattformar är Kestrel den primära mekanismen som används för att hantera HTTP-förfrågningar på alla plattformar.

Att köra In-Process på IIS är dock det bästa sättet om du inte har ett mycket specifikt krav för Kestrel.

Huvudbildkredit: Foto av Farzad Nazifi på Unsplash


International Business Consulting
Om författaren - International Business Consulting
Yoann är en internationell företagskonsult, facilitator och samordnare. Han arbetade mer än tio år inom global affär, leveranskedja, finansiella, SAP ERP-projekt, webb- och SEO-optimering för olika branscher, såsom logistik, kosmetika, konsumentvaror, skönhetsvård eller mode, i mer än 30 länder runt om i världen .
 


kommentarer (0)

Lämna en kommentar