Udostępnij za pośrednictwem


Moduły, programy obsługi i oprogramowanie pośredniczące

Napiwek

Ta zawartość jest fragmentem książki eBook Blazor dla deweloperów formularzy internetowych platformy ASP NET dla platformy Azure, dostępnym na platformie .NET Docs lub jako bezpłatny plik PDF do pobrania, który można odczytać w trybie offline.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover thumbnail.

Aplikacja ASP.NET Core jest oparta na serii oprogramowania pośredniczącego. Oprogramowanie pośredniczące to programy obsługi rozmieszczone w potoku do obsługi żądań i odpowiedzi. W aplikacji Web Forms programy obsługi HTTP i moduły rozwiązują podobne problemy. W ASP.NET Core moduły, programy obsługi, Global.asax.cs i cykl życia aplikacji są zastępowane oprogramowaniem pośredniczącym. W tym rozdziale poznasz oprogramowanie pośredniczące w kontekście Blazor aplikacji.

Omówienie

Potok żądania platformy ASP.NET Core składa się z sekwencji delegatów żądań wywoływanych jeden po drugim. Na poniższym diagramie przedstawiono tę koncepcję. Wątek wykonywania przebiega zgodnie z czarnymi strzałkami.

pipeline

Powyższy diagram nie ma pojęcia zdarzeń cyklu życia. Ta koncepcja jest podstawą obsługi żądań ASP.NET Web Forms. Ten system ułatwia wnioskowanie o tym, jaki proces występuje i umożliwia wstawianie oprogramowania pośredniczącego w dowolnym momencie. Oprogramowanie pośredniczące jest wykonywane w kolejności, w której jest dodawany do potoku żądania. Są one również dodawane w kodzie zamiast plików konfiguracji, zwykle w Startup.cs.

Katana

Czytelnicy zaznajomieni z Katana czują się komfortowo w ASP.NET Core. W rzeczywistości Katana to struktura, z której pochodzi ASP.NET Core. Wprowadzono podobne wzorce oprogramowania pośredniczącego i potoku dla ASP.NET 4.x. Oprogramowanie pośredniczące przeznaczone dla narzędzia Katana można dostosować do pracy z potokiem ASP.NET Core.

Typowe oprogramowanie pośredniczące

ASP.NET 4.x zawiera wiele modułów. W podobny sposób ASP.NET Core ma również wiele składników oprogramowania pośredniczącego. Moduły usług IIS mogą być używane w niektórych przypadkach z ASP.NET Core. W innych przypadkach może być dostępne natywne oprogramowanie pośredniczące ASP.NET Core.

W poniższej tabeli wymieniono zastępcze oprogramowanie pośredniczące i składniki w programie ASP.NET Core.

Moduł moduł ASP.NET 4.x opcja ASP.NET Core
Błędy HTTP CustomErrorModule Oprogramowanie pośredniczące stron kodu stanu
Dokument domyślny DefaultDocumentModule Domyślne oprogramowanie pośredniczące plików
Przeglądanie katalogów DirectoryListingModule Oprogramowanie pośredniczące przeglądania katalogów
Kompresja dynamiczna DynamicCompressionModule Oprogramowanie pośredniczące kompresji odpowiedzi
Śledzenie żądań, które zakończyło się niepowodzeniem FailedRequestsTracingModule ASP.NET Core Logging
Buforowanie plików FileCacheModule Oprogramowanie pośredniczące buforowania odpowiedzi
Buforowanie HTTP HttpCacheModule Oprogramowanie pośredniczące buforowania odpowiedzi
Rejestrowanie HTTP HttpLoggingModule ASP.NET Core Logging
Przekierowywanie HTTP HttpRedirectionModule Oprogramowanie pośredniczące ponownego zapisywania adresów URL
Filtry ISAPI IsapiFilterModule Oprogramowanie pośredniczące
ISAPI IsapiModule Oprogramowanie pośredniczące
Filtrowanie żądań RequestFilteringModule Ponowne zapisywanie adresów URL IRule oprogramowania pośredniczącego
Ponowne zapisywanie adresów URL† RewriteModule Oprogramowanie pośredniczące ponownego zapisywania adresów URL
Kompresja statyczna StaticCompressionModule Oprogramowanie pośredniczące kompresji odpowiedzi
Zawartość statyczna StaticFileModule Oprogramowanie pośredniczące plików statycznych
Autoryzacja adresów URL UrlAuthorizationModule tożsamość podstawowa ASP.NET

Ta lista nie jest wyczerpująca, ale powinna przedstawić, jakie mapowanie istnieje między dwiema strukturami. Aby uzyskać bardziej szczegółową listę, zobacz Moduły usług IIS z ASP.NET Core.

Niestandardowe oprogramowanie pośredniczące

Wbudowane oprogramowanie pośredniczące może nie obsługiwać wszystkich scenariuszy potrzebnych dla aplikacji. W takich przypadkach warto utworzyć własne oprogramowanie pośredniczące. Istnieje wiele sposobów definiowania oprogramowania pośredniczącego, przy czym najprostszym jest prosty delegat. Rozważ następujące oprogramowanie pośredniczące, które akceptuje żądanie kultury z ciągu zapytania:

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}"));
    }
}

Oprogramowanie pośredniczące można również zdefiniować jako klasę IMiddleware , implementując interfejs lub postępując zgodnie z konwencją oprogramowania pośredniczącego. Aby uzyskać więcej informacji, zobacz Pisanie niestandardowego oprogramowania pośredniczącego ASP.NET Core.