В предыдущей части мы вкратце познакомились с Dependency Injection в ASP.NET и даже смогли на простейшем примере посмотреть как регистрируются сервисы в контейнере DI и используются приложением. Сегодня разберемся подробнее с разработкой собственных сервисов в ASP.NET Core
ASP.NET Core
Dependency Injection (внедрение зависимостей) в ASP.NET Core
Внедрение зависимостей (Dependency Injection, DI) в .NET является встроенной частью платформы. Это механизм, позволяющий сделать взаимодействующие в приложении объекты слабосвязанными — такие объекты связываются через абстракции (чаще всего — интерфейсы). Чтобы разобраться с этим механизмом и понять в чем его преимущества, рассмотрим небольшой пример.
Поддержка обработки статических файлов в ASP.NET Core. Просмотр каталогов на сервере
По соображениям безопасности просмотр каталогов в ASP.NET Core отключен по умолчанию. Однако, если необходимо, то мы можем разрешить пользователя просматривать список каталогов и файлов на сервере.
Поддержка обработки статических файлов в ASP.NET Core. Методы UseStaticFiles и UseDefaultFiles
До этого момента мы изучали работу со статическими файлами, да и в целом работу с ASP.NET Core, не обращаясь к штатным middleware. Однако, ASP.NET Core содержит ряд методов и middleware, которые позволяют немного упростить обработку статических файлов в приложении. И сегодня мы начнем изучение обработки статических файлов с использованием middleware StaticFiles, который встраивается в конвейер обработки запросов ASP.NET Core методом расширения IApplicationBuilder.UseStaticFiles.
Работа со статическими файлами в ASP.NET Core. Загрузка файлов на сервер
В предыдущей части мы научились отправлять файлы клиенту и скачивать файлы на компьютер пользователя. Сегодня рассмотрим обратную операцию — загрузку файлов на сервер. Загрузка файлов на сервер в ASP.NET Core немногим сложнее, так как все же для этой операции нам придётся немного вспомнить работу с формами в HTML и научиться отправлять запросы POST на сервер.
Работа со статическими файлами в ASP.NET Core. Метод SendFileAsync
Современные web-приложения активно используют в своей работе разного рода статические файлы, например, файлы css, js, html и другие. Кроме этого, web-приложения могут как получать файлы от пользователей, так и наоборот — отправлять какие-либо данные в виде файлов пользователю. В ASP.NET Core имеются как стандартные компоненты middleware для работы со статическими файлами, так и отдельные методы, определенные в классе HttpResponse предназначенные для этих целей. Сегодня мы рассмотрим метод HttpResponse.SendFileAsync для работы со статическими файлами в ASP.NET Core.
Работа с окружением в ASP.NET Core. Интерфейс IWebHostEnvironment
При разработке приложения ASP.NET Core мы можем получать и работать со сведениями об окружении в котором запускается наше приложение. Для этого используется свойство Environment класса WebApplication, которое предоставляет сведения об окружении в виде IWebHostEnvironment. Посмотрим какие свойства и методы мы можем использовать для работы с окружением.
Порядок построения конвейера обработки запроса в ASP.NET Core
До этого момента мы создавали компоненты middleware, не заостряя внимание на важном моменте, а именно на том, что порядок, в котором компоненты middleware добавляются в файл Program.cs, определяет порядок их вызова при запросах и соблюдать этот порядок крайне важно для обеспечения безопасности, производительности и функциональности. Сегодня рассмотрим построение конвейера запросов с учётом порядка компонентов middleware в конвейере.
Классы middleware в ASP.NET Core
До этого момента при изучении ASP.NET Core мы использовали компоненты middleware в форме делегатов или, так называемые inline middleware. Такой подход позволяет довольно быстро встроить компонент middleware в конвейер запросов и продемонстрировать работу приложения. При этом, стоит учитывать, что далеко не всегда компонент middleware будет содержать минимум исходного кода и выполнять одно-два действия. В этом случае рекомендуется выносить логику middleware в отдельный класс с определенным описанием.
Ветвление конвейера с использованием методов MapWhen и UseWhen
В предыдущей части мы рассмотрели метод Map(), который также как и методы Run() и Use() используется для встраивания middleware в конвейер запросов ASP.NET и, при этом, создает ветвление конвейера. Сегодня рассмотрим ещё два метода ASP.NET Core для встраивания middleware и ветвления конвейера запросов — это методы MapWhen() и UseWhen().