Поделиться через


Модули, обработчики и ПО промежуточного слоя

Подсказка

Это фрагмент из электронной книги для разработчиков ASP NET веб-формы для Azure, Blazor доступных в документации .NET или в виде бесплатного скачиваемого PDF-файла, который можно читать в автономном режиме.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover эскиз.

Приложение ASP.NET Core основано на серии middleware. ПО промежуточного слоя — это обработчики, упорядоченные в конвейер для обработки запросов и ответов. В приложении Web Forms обработчики и модули HTTP решают аналогичные проблемы. В ASP.NET Core модули, обработчики, Global.asax.cs и жизненный цикл приложения заменяются промежуточным ПО. В этой главе вы узнаете о промежуточном программном обеспечении в контексте Blazor приложения.

Обзор

Конвейер запросов ASP.NET Core состоит из последовательности делегатов запроса, вызываемых один за другим. На следующей схеме демонстрируется этот принцип. Поток выполнения показан черными стрелками.

трубопровод

На предыдущей схеме отсутствует концепция событий жизненного цикла. Эта концепция является основой для обработки запросов веб-форм ASP.NET. Эта система упрощает размышления о процессе и позволяет вставлять промежуточное программное обеспечение в любую точку. ПО промежуточного слоя выполняется в том порядке, в котором он добавляется в конвейер запросов. Они также добавляются в код вместо файлов конфигурации, как правило, в Startup.cs.

Катана

Читатели, знакомые с Катана, будут чувствовать себя комфортно в ASP.NET Core. На самом деле, Катана является платформой, из которой ASP.NET Core является производным. Он представил аналогичные шаблоны промежуточного слоя и конвейера для ASP.NET 4.x. Промежуточное ПО, созданное для Катаны, можно адаптировать для работы с обработкой данных ASP.NET Core.

Общее ПО промежуточного слоя

ASP.NET 4.x включает множество модулей. Аналогичным образом, ASP.NET Core имеет множество компонентов промежуточного слоя, которые также доступны. Модули IIS могут использоваться в некоторых случаях с ASP.NET Core. В других случаях может быть доступен встроенный промежуточный слой ASP.NET Core.

В следующей таблице перечислены заменяющие программные средства и компоненты для ASP.NET Core.

Модуль модуль ASP.NET 4.x опция ASP.NET Core
Ошибки HTTP CustomErrorModule Промежуточное ПО для страниц кодов состояния
Документ по умолчанию DefaultDocumentModule Промежуточное ПО для стандартных файлов
Просмотр каталогов DirectoryListingModule Промежуточное ПО для просмотра каталогов
Динамическое сжатие DynamicCompressionModule Промежуточное программное обеспечение для сжатия ответов
Трассировка неудачных запросов FailedRequestsTracingModule Логирование в ASP.NET Core
Кэширование файлов FileCacheModule По промежуточному слоям кэширования ответов
Кэширование HTTP HttpCacheModule По промежуточному слоям кэширования ответов
Логирование HTTP HttpLoggingModule Логирование в ASP.NET Core
Перенаправление HTTP HttpRedirectionModule Промежуточное ПО для переписывания URL
Фильтры ISAPI IsapiFilterModule Промежуточное ПО
ISAPI IsapiModule Промежуточное ПО
Фильтрация запросов RequestFilteringModule Промежуточное ПО для изменения URL-адресов с использованием IRule
Перезапись URL-адресов† RewriteModule Промежуточное ПО для переписывания URL
Статическое сжатие StaticCompressionModule Промежуточное программное обеспечение для сжатия ответов
Статическое содержимое StaticFileModule Промежуточное ПО для статических файлов
Авторизация URL-адреса UrlAuthorizationModule ASP.NET основное удостоверение

Этот список не является исчерпывающим, но должен дать представление о том, какое сопоставление существует между двумя платформами. Более подробный список см. в модулях IIS с ASP.NET Core.

Пользовательское ПО промежуточного слоя

Встроенное ПО промежуточного слоя может не обрабатывать все сценарии, необходимые для приложения. В таких случаях имеет смысл создать собственное ПО промежуточного слоя. Существует несколько способов определения посреднич_е_ского программного обеспечения, самым простым из которых является делегат. Рассмотрим следующее промежуточное ПО, которое принимает запрос культуры из строки запроса:

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

Промежуточное ПО также может быть определено как класс, либо путем реализации интерфейса IMiddleware, либо следуя соглашению для промежуточного ПО. Дополнительные сведения см. в статье Создание пользовательского промежуточного программного обеспечения ASP.NET Core.