Megosztás a következőn keresztül:


Modulok, kezelők és köztes szoftver

Jótanács

Ez a tartalom egy részlet az eBookból, Blazor az Azure-hoz készült ASP NET Web Forms Developers számára, amely elérhető a .NET Docs-on vagy egy ingyenesen letölthető PDF-fájlként, amely offline is olvasható.

Blazor-for-ASP-NET-Web-Forms-Developers eBook borító miniatűr.

A ASP.NET Core-alkalmazás több köztes szoftverre épül. A köztes szoftver olyan kezelők, amelyek egy folyamatba vannak rendezve a kérések és válaszok kezeléséhez. Egy Web Forms-alkalmazásban a HTTP-kezelők és -modulok hasonló problémákat oldanak meg. Az ASP.NET Core-ban a modulok, kezelők, Global.asax.cs és az alkalmazás életciklusa köztes szoftverre cserélődik. Ebben a fejezetben egy alkalmazás kontextusában ismerkedhet meg a köztes szoftverrel Blazor .

Áttekintés

A ASP.NET Core kérelemfolyamat a kérések delegáltjainak sorozatából áll, amelyet egymás után hívunk meg. Az alábbi ábra a koncepciót mutatja be. A végrehajtás szála a fekete nyilakat követi.

csővezeték

Az előző diagram nem tartalmaz életciklus-eseményeket. Ez a fogalom alapvető fontosságú a webes űrlapok ASP.NET kéréseinek kezeléséhez. Ez a rendszer megkönnyíti a folyamat okának magyarázatát, és lehetővé teszi a köztes szoftver beszúrását bármikor. A köztes szoftver abban a sorrendben hajtja végre, amelyben hozzá van adva a kérelemfolyamathoz. A konfigurációs fájlok helyett kódban is hozzáadják őket, általában Startup.cs.

Katana

A Katana-t ismerő olvasók jól fogják érezni magukat ASP.NET Core-ban. Valójában a Katana egy keretrendszer, amelyből ASP.NET Core származik. Hasonló köztes szoftvereket és folyamatmintákat vezetett be a ASP.NET 4.x-hez. A Katanához tervezett köztes szoftver a ASP.NET Core-folyamathoz igazítható.

Gyakori köztes szoftver

ASP.NET 4.x számos modult tartalmaz. Hasonló módon a ASP.NET Core számos köztes szoftverösszetevővel is rendelkezik. Az IIS-modulok bizonyos esetekben használhatók a ASP.NET Core-ban. Más esetekben előfordulhat, hogy natív ASP.NET Core köztes szoftver érhető el.

Az alábbi táblázat a helyettesítő köztes szoftvereket és összetevőket sorolja fel a ASP.NET Core-ban.

Modul ASP.NET 4.x modul ASP.NET Core opció
HTTP-hibák CustomErrorModule Állapotkódlapok köztes szoftver
Alapértelmezett dokumentum DefaultDocumentModule Alapértelmezett fájlok köztes szoftver
Címtár-böngészés DirectoryListingModule Címtár böngészése köztes szoftver
Dinamikus tömörítés DynamicCompressionModule Választömörítés köztes szoftver
Sikertelen kérelmek nyomkövetése FailedRequestsTracingModule ASP.NET alapszintű naplózás
Fájl gyorsítótárazása FileCacheModule Válaszgyorsítótárazó köztes szoftver
HTTP-gyorsítótárazás HttpCacheModule Válaszgyorsítótárazó köztes szoftver
HTTP-naplózás HttpLoggingModule ASP.NET alapszintű naplózás
HTTP-átirányítás HttpRedirectionModule URL-újraíró köztes szoftver
ISAPI-szűrők IsapiFilterModule Köztes szoftver
ISAPI IsapiModule Köztes szoftver
Kérelmek szűrése RequestFilteringModule A Middleware IRule URL-címének újraírása
URL-újraírás† RewriteModule URL-újraíró köztes szoftver
Statikus tömörítés StaticCompressionModule Választömörítés köztes szoftver
Statikus tartalom StaticFileModule Statikus fájl köztes szoftvere
URL-engedélyezés UrlAuthorizationModule ASP.NET Core Identity

Ez a lista nem teljes, de képet ad arról, hogy milyen leképezés létezik a két keretrendszer között. Részletesebb listát az ASP.NET Core-t tartalmazó IIS-modulokban talál.

Egyéni köztes szoftver

Előfordulhat, hogy a beépített köztes szoftver nem kezeli az alkalmazáshoz szükséges összes forgatókönyvet. Ilyen esetekben érdemes létrehozni a saját köztes szoftverét. A köztes szoftver többféleképpen is definiálható, a legegyszerűbb pedig egy egyszerű meghatalmazott. Vegye figyelembe a következő köztes szoftvereket, amelyek egy lekérdezési sztringből fogadnak el egy kulturális kérést:

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.Use(async (context, next) =>
        {
            var cultureQuery = context.Request.Query["culture"];

            if (!string.IsNullOrWhiteSpace(cultureQuery))
            {
                var culture = new CultureInfo(cultureQuery);

                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
            }

            // Call the next delegate/middleware in the pipeline
            await next();
        });

        app.Run(async (context) =>
            await context.Response.WriteAsync(
                $"Hello {CultureInfo.CurrentCulture.DisplayName}"));
    }
}

A köztes szoftver osztályként is definiálható az interfész implementálásával vagy a IMiddleware köztes szoftver konvenciójának követésével. További információért lásd: Egyéni ASP.NET Core middleware komponensírása.