Hogyan használják az Asp.Net Core Hosting modellt a webes alkalmazásokban?



Az Asp.net magja jelentős mértékben javítja a tárhely modelljét. A korábbi verziókban elvárható volt az Asp.net Core webes alkalmazások proxy webszerverekön keresztül történő üzemeltetése, mint például IIS Windows, Apache vagy NGINX. Az Asp.net 2.2 új magja azonban lehetővé teszi az Asp.net alkalmazás közvetlen tárolását a Windows rendszerben az IIS-en belül, a külső szerver igényei nélkül. Így ez növeli az átviteli sebességet az egyszerű folyamaton belüli tároló mechanizmus segítségével.

Tárhely modellek az ASP.NET Core-ban

Az ASP.NET egy olyan technológia a Microsoft -tól, amely lehetővé teszi a dinamikus oldalak létrehozását a webszerver oldalán.

Az ASP.NET tárolását teljes mértékben integrálva van a Windows alapú szoftverekbe, valamint magával az operációs rendszerrel. Ezt a technológiát meglehetősen biztonságosnak és megbízhatónak, valamint könnyen használhatónak tekintik. Elsősorban az alkalmazáson belüli termékek fejlesztésére használják.

Az ASP.NET Core tárhelymodellje kétféle, azaz folyamaton belüli és folyamaton kívüli tárhely. Az ASP.Net Core 2.2 előtt csak egy tárhelymodell lépett fel, amely a folyamaton kívüli tárhely, de a teljesítmény miatt az Asp.net 2.2-es verziójában a folyamaton belüli tárhelymodellt vezetik be.

A folyamaton belüli tárhelymodell bemutatása az Asp.net Core-ban

Az ASP.NET Core korábbi verziói megkövetelték az alkalmazás hosztolását az IIS-ben egy folyamaton kívüli tárhelymodell segítségével, amely az IIS-en keresztül proxikált. Az IIS vagy IIS Express fájlt elérő kéréseket továbbítják az ASP.NET Core webes alkalmazáshoz, amely a Kestrel webszerveren fut. Az új folyamaton belüli tárhely használatával azonban csak egy szervert használnak a tároláshoz, például IIS, Nginx vagy Linux. Ez azt jelenti, hogy a kérések Kestrel felé történő továbbítása helyett egy új webszerver-megvalósítást (IISHttpServer) tárolunk közvetlenül az IIS alkalmazáskészletben, amely kiszolgálja a kérelmet. Az ASP.NET Core 3.1 esetén a folyamaton belüli tárhelymodellt használják alapértelmezett modellként, amikor egy meglévő sablonnal új alkalmazást fejlesztenek ki.

Nyilvánvaló, hogy ez a tárhelymodell sokkal nagyobb áteresztőképességet és teljesítmény-javulást mutat, mint a folyamaton kívüli tárhelymodell.

Folyamaton kívüli tárhelymodell

A folyamaton kívüli tárhelymodellekben a Kestrel-kiszolgálót közvetlenül felhasználhatja felhasználói igényekkel szembeni kiszolgálóként, vagy telepítheti az alkalmazást az IIS-be, amely proxykiszolgálóként fog működni, és kéréseket küld a Kestrel belső kiszolgálójának. Az ilyen típusú tárhelymodellben két lehetőség van a tárhelyre, azaz a Kestrel és a Proxy Szerver használata:

1. A Kestrel használata

Ebben a maga Kestrel élszolgáltatóként működik, amely közvetlenül a szerver felhasználói kéréseit jelenti, vagyis csak a Kestrel szervert lehet használni az alkalmazáshoz.

2. Proxy szerver használata

A Kestrel szerver korlátozásai miatt ezt nem lehet az összes alkalmazásban használni. Ilyen esetekben hatalmas kiszolgálókat kell használni, például IIS, Apache vagy NGINX. Tehát ebben a helyzetben ez a szerver tartalék proxyszerverként működik, amely minden kérést átirányít a belső Kestrel szerverhez, ahol az alkalmazás fut. Itt két szerver, például IIS és Kestrel fut.

Ez a tárhelymodell alapértelmezett modell az összes korábbi .NET Core 2.2 verzióhoz telepített alkalmazás számára. Az ilyen típusú használat korlátozása, például a teljesítmény lassúsága.

Végső gondolatok:

A tények szerint a legtöbb ASP.Net webfejlesztő cég biztosan használni akarja az In-Process hosting modellt. Mivel kevesebb forrást fogyaszt és jó teljesítményt nyújt. Mivel a Kestrel számára nincs szüksége további folyamatra, és elkerüli a kommunikációt az IIS és a Kestrel között. Vannak esetek, amikor érdemes lehet a folyamaton kívüli tárhelyet választani, például ugyanazon webes alkalmazás tárolása esetén a Windowsban és a Linuxban. Amikor az alkalmazás más platformon történő tárolásáról beszélünk, a Kestrel az elsődleges mechanizmus, amely a HTTP kérelmek kezelésére szolgál minden platformon.

A folyamaton belüli IIS-en való futtatás azonban a legjobb módszer, kivéve, ha a Kestrelre vonatkozóan nagyon különleges követelmények merülnek fel.

Fő kép: Fotó: Farzad Nazifi az Unsplash-en




Hozzászólások (0)

Szólj hozzá