Какво е Middleware?
Междинният софтуер е софтуер, който се сглобява в приложни конвейери за обработка на заявки и отговори. Всеки компонент:
- Изберете дали да предадете заявката на следващия компонент в конвейера.
- Работата може да се извърши преди и след като следващият компонент в конвейера бъде извикан.
Делегатите на заявки се използват за изграждане на конвейер за заявки, който обработва всяка HTTP заявка.
Делегатите за заявки се конфигурират чрез методите Run, Map и Use. Отделен делегат за заявки може да бъде заказан в анонимен метод (наречен inline middleware), или може да бъде дефиниран в повторно използваем клас. Тези многократно използваеми класове и методи за вътрешна анонимизация са компоненти на междинен софтуер или междинен софтуер. Всеки компонент на междинния софтуер в потока на заявката отговаря за извикването на следващия компонент в конвейера и, ако е подходящо, за късото съединение на връзката.
Миграцията на HTTP модули към междинен софтуер обяснява разликата между ASP.NET Core и request pipelines в предишни версии (ASP.NET) и предоставя повече примери за междинен софтуер.
Използвайте IApplicationBuilder, за да създадете междинен софтуерен конвейер
Процесът на заявка ASP.NET Core се състои от серия делегати за заявки, както е показано на следващата фигура (процесът на изпълнение следва черната стрелка):
Всеки делегат може да извършва действия преди и след следващия делегат. Делегатът може също да реши да не предава заявката на следващия делегат, което се нарича късо съединение в конвейера на заявки. Късото съединение обикновено е желателно, защото избягва ненужна работа. Например, статичен файлов междинен софтуер може да върне заявка за статичен файл и да прекъсне останалата част от конвейера. Делегатите за обработка на изключения трябва да бъдат извикани рано в конвейера, за да могат да откриват изключения в по-късни конвейери.
Най-простото е вероятно да настроя делегат ASP.NET Core приложението, който да обработва всички заявки. Този сценарий не включва реалния конвейер на заявки. Вместо това за всяка HTTP заявка се призовава анонимен метод.
Първото приложение. Run delegate прекратява конвейера.
Има код като този:
Достъпен през браузъра се оказва, че наистина се намира в първото приложение. Run прекратява конвейера.
Можете да делегирате множество заявки чрез приложението. Употребата е свързана помежду си. Следващият параметър представлява следващия делегат в конвейера. (Имайте предвид, че можете да прекратите конвейера, като не извиквате следващия параметър.) Обикновено можете да извършвате действия преди и след следващата делегация, както е показано в следния пример:
Използването на браузър за достъп до резултати като:
Може да се види, че редът на изпълнение на делегата на заявката следва горната схема на потока.
Бележка:
След като отговорът бъде изпратен на клиента, не се обаждайте на следващия път. Invoke。 След като отговорът започне, промените в HttpResponse ще хвърлят изключение. Например, задаването на заглавия за отговори, статус кодове и т.н. ще даде изключение. Напишете отговорното тяло след следващото обаждане.
може да доведе до нарушение на споразумението. Например, писане повече от дължината на съдържанието, описана в съдържанието.
Форматирането на адаптивното съдържание може да е повредено. Например, напишете HTML footer в CSS файл.
HttpResponse.HasStarted е полезен съвет, който показва дали е изпратен отговорен хедър и/или основното тяло е написано.
Вграден междинен софтуер
ASP.NET Core идва със следните компоненти на междинния софтуер:
| Междинен софтуер | описание | | Удостоверяване | Налична е поддръжка за автентикация | | CORS | Конфигуриране на споделяне на ресурси между домейни | | Кеширане на отговор | Поддръжка за кеш отговор е налична | | Компресия на отговора | Осигурете поддръжка за компресия на отговора | | Маршрутизация | Дефиниране и ограничаване на маршрутизиране на заявките | | Сесия | Осигурява управление на потребителски сесии | | Статични файлове | Осигурява поддръжка за статично разглеждане на файлове и директории | | Пренаписване на URL междинен софтуер | Използва се за пренаписване на URL адреси и заявка за поддръжка при пренасочване |
|