Udostępnij za pośrednictwem


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

Wskazówka

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 (Miniatura książki eBook for-ASP-NET-Web-Forms-Developers).

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.

Przegląd

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

rurociąg

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 dodane 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 dla oprogramowania pośredniczącego i procesów przetwarzania w 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 oferuje również wiele komponentów middleware. 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 middleware 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 Program pośredniczący stron kodów statusu HTTP
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
logowanie HTTP HttpLoggingModule ASP.NET Core Logging
Przekierowanie HTTP HttpRedirectionModule Ponowne zapisywanie adresów URL oprogramowania pośredniczącego
Filtry ISAPI IsapiFilterModule Oprogramowanie pośredniczące
ISAPI IsapiModule Oprogramowanie pośredniczące
Filtrowanie żądań RequestFilteringModule Oprogramowanie pośredniczące do ponownego zapisywania adresów URL IRule
Ponowne zapisywanie adresów URL† RewriteModule Ponowne zapisywanie adresów URL oprogramowania pośredniczącego
Kompresja statyczna StaticCompressionModule Oprogramowanie pośredniczące kompresji odpowiedzi
Zawartość statyczna StaticFileModule Oprogramowanie pośredniczące plików statycznych
Autoryzacja adresu 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 zwykły 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ę, albo implementując interfejs IMiddleware, albo przestrzegając konwencji oprogramowania pośredniczącego. Aby uzyskać więcej informacji, zobacz Tworzenie niestandardowego oprogramowania pośredniczącego ASP.NET Core.