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.
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.
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.