Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подсказка
Это фрагмент из электронной книги для разработчиков ASP NET веб-формы для Azure, Blazor доступных в документации .NET или в виде бесплатного скачиваемого PDF-файла, который можно читать в автономном режиме.
Приложение 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.