Содержание
- 2. ASP.NET Core ASP.NET Core opensource-фреймворк. Все исходные файлы фреймворка доступны на GitHub. ASP.NET Core может работать
- 3. ASP.NET Core Благодаря модульности фреймворка все необходимые компоненты веб-приложения могут загружаться как отдельные модули через пакетный
- 4. ASP.NET Core ASP.NET Core включает в себя фреймворк MVC, который объединяет функциональность MVC, Web API и
- 5. ASP.NET Core В качестве инструментария разработки используется Visual Studio. Кроме того, можно создавать приложения в среде
- 6. Ключевые ASP.NET Core Новый легковесный и модульный конвейер HTTP-запросов. Возможность развертывать приложение как на IIS, так
- 7. Ключевые ASP.NET Core Конфигурация для упрощенного использования в облаке. Встроенная поддержка для внедрения зависимостей. Расширяемость. Кроссплатформенность:
- 8. ASP.NET Core Для разработки под ASP.NET Core можно использовать различный инструментарий Visual Studio 2019 Community Visual
- 9. ASP.NET Core
- 10. ASP.NET Core
- 11. ASP.NET Core После установки при создании проекта выберем пункт ASP.NET Core Web Application
- 12. ASP.NET Core На следующем шаге зададим имя проекта и определим для него местоположение на жестком диске:
- 13. ASP.NET Core После этого отобразится окно выбора шаблона нового приложения:
- 14. ASP.NET Core типы проектов ASP.NET Core Empty: пустой шаблон с самой минимальной функциональностью для создания приложений
- 15. ASP.NET Core типы проектов ASP.NET Core Web App(Model-View-Controller): проект, который использует архитектуру MVC. ASP.NET Core with
- 16. ASP.NET Core Empty
- 17. Структура проекта ASP.NET Core Connected Services: подключенные сервисы из Azure. Dependencies: все добавленные в проект пакеты
- 18. Структура проекта ASP.NET Core appsettings.json: файл конфигурации проекта в формате json. Program.cs: главный файл приложения, с
- 19. ASP.NET Core Данная структура, конечно, не представляет проект полнофункционального приложения. И если запустить проект, то в
- 20. Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using
- 21. ASP.NET Core Чтобы запустить приложение ASP.NET Core, необходим объект IWebHost, в рамках которого развертывается веб-приложение. Для
- 22. Host.CreateDefaultBuilder(args) Устанавливает корневой каталог (для этого используется свойство Directory.GetCurrentDirectory). Корневой каталог представляет папку, где будет производиться
- 23. Host.CreateDefaultBuilder(args) Устанавливает конфигурацию приложения. Для этого загружается содержимое из файлов appsettings.json и appsettings.{Environment}.json, а также переменные
- 24. ConfigureWebHostDefaults() Загружает конфигурацию из переменных среды с префиксом "ASPNETCORE_". Запускает и настраивает веб-сервер Kestrel, в рамках
- 25. ASP.NET Core В методе Main вызывается метод у созданного объекта IWebHostBuilder вызывается метод Build(), который создает
- 26. ASP.NET Core Класс Startup является входной точкой в приложение ASP.NET Core. Этот класс производит конфигурацию приложения,
- 27. ASP.NET Core public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
- 28. ASP.NET Core Класс Startup должен определять метод Configure(), и также опционально в Startup можно определить конструктор
- 29. ASP.NET Core В проекте по типу Empty данный метод не выполняет каких-либо действий: public void ConfigureServices(IServiceCollection
- 30. ASP.NET Core Метод Configure устанавливает, как приложение будет обрабатывать запрос. Этот метод является обязательным. Для установки
- 31. ASP.NET Core Кроме того, метод нередко принимает еще один необязательный параметр - объект IWebHostEnvironment, который позволяет
- 32. Метод Configure() в проекте по типу Empty public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // если
- 33. Конструктор Startup Конструктор является необязательной частью класса Startup. В конструкторе, как правило, производится начальная конфигурация приложения.
- 34. Конвейер обработки запроса и middleware Обработка запроса в ASP.NET Core устроена по принципу конвейера. Сначала данные
- 35. Конвейер обработки запроса и middleware Компонент middleware может либо передать запрос далее следующему в конвейере компоненту,
- 36. Конвейер обработки запроса и middleware Компоненты middleware конфигурируются с помощью методов расширений Run, Map и Use
- 37. Метод Configure из класса Startup public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // если проект в
- 38. ASP.NET Core Все вызовы типа app.UseXXX как раз и представляют собой добавление компонентов middleware для обработки
- 39. Встроенные компоненты middleware Authentication: предоставляет поддержку аутентификации. Cookie Policy: отслеживает согласие пользователя на хранение связанной с
- 40. Встроенные компоненты middleware Forwarded Headers: перенаправляет заголовки запроса. Health Check: проверяет работоспособность приложения asp.net core. HTTP
- 41. Встроенные компоненты middleware HTTP Strict Transport Security (HSTS): для улучшения безопасности приложения добавляет специальный заголовок ответа.
- 42. Встроенные компоненты middleware URL Rewrite: предоставляет функциональность URL Rewriting. Endpoint Routing: предоставляет механизм маршрутизации. Session: предоставляет
- 43. Жизненный цикл middleware Метод Configure выполняется один раз при создании объекта класса Startup, и компоненты middleware
- 44. ASP.NET Core public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app)
- 45. ASP.NET Core
- 46. Класс Startup public class Startup { public void Configure(IApplicationBuilder app) { app.Run(async (context) => { await
- 47. ASP.NET Core Метод Run представляет собой простейший способ для добавления компонентов middleware в конвейер. Однако компоненты,
- 48. ASP.NET Core Этот делегат имеет следующее определение: public delegate Task RequestDelegate(HttpContext context); Он принимает в качестве
- 49. ASP.NET Core Данный метод определяет один единственный делегат запроса, который обрабатывает все запросы к приложению. Суть
- 50. ASP.NET Core В итоге при запуске проекта в браузере увидим приветствие:
- 51. ASP.NET Core Метод Use также добавляет компоненты middleware, которые также обрабатывают запрос, но в нем может
- 52. ASP.NET Core В данном случае используем перегрузку метода Use, которая в качестве параметров принимает контекст запроса
- 53. ASP.NET Core
- 54. Выполнение app.Use public void Configure(IApplicationBuilder app) { int x = 2; app.Use(async (context, next) => {
- 55. Выполнение app.Use Если компоненты middleware в app.Use использует вызов next.Invoke() для передачи обработки дальше по конвейеру,
- 56. Выполнение app.Use 1. Вызов компонента app.Use. 2. Увеличение переменной x в два раза: x = x
- 57. Метод Map Метод Map (и методы расширения MapXXX()) применяется для сопоставления пути запроса с определенным делегатом,
- 58. Метод Map public void Configure(IApplicationBuilder app) { app.Map("/index", Index); app.Map("/about", About); app.Run(async (context) => { await
- 59. Вложенные методы Map public void Configure(IApplicationBuilder app) { app.Map("/home", home => { home.Map("/index", Index); home.Map("/about", About);
- 60. Вложенные методы Map Метод Map может иметь вложенные методы Map, которые обрабатывают подмаршруты. Теперь метод About
- 61. Конвейер обработки запроса Как правило, для обработки запроса применяется не один, а несколько компонентов middleware. И
- 62. Конвейер обработки запроса using Microsoft.AspNetCore.Http; using System.Threading.Tasks; namespace HelloApp { public class RoutingMiddleware { private readonly
- 63. Конвейер обработки запроса using Microsoft.AspNetCore.Http; using System.Threading.Tasks; namespace HelloApp { public class AuthenticationMiddleware { private RequestDelegate
- 64. ASP.NET Core Условно будем считать, что если в строке запроса есть параметр token и он имеет
- 65. ASP.NET Core Поскольку компоненту RoutingMiddleware нет смысла обрабатывать запрос, если пользователь не аутентифицирован, то в конвейере
- 66. ASP.NET Core Таким образом, если мы сейчас запустим проект и обратимся по пути /index или /about
- 67. ASP.NET Core
- 68. ASP.NET Core using Microsoft.AspNetCore.Http; using System.Threading.Tasks; namespace HelloApp { public class ErrorHandlingMiddleware { private RequestDelegate _next;
- 69. ASP.NET Core В отличие от предыдущих двух компонентов ErrorHandlingMiddleware сначала передает запрос на выполнение последующим делегатам,
- 70. ASP.NET Core И в данном случае для ErrorHandlingMiddleware важен результат обработки запроса последующими компонентами. В частности,
- 71. Конвейер обработки запроса
- 72. ASP.NET Core В то же время, если к приложению обратится пользователь, не указав в строке запроса
- 73. ASP.NET Core В первом случае, если указан параметр token, то запрос будет обработан RoutingMiddleware:
- 74. ASP.NET Core Иначе пользователь получит ошибку 403:
- 75. ASP.NET Core Для взаимодействия со средой, в которой запущено приложение, применяются объекты, реализующие интерфейс IHostingEnvironment. Этот
- 76. ASP.NET Core WebRootPath: возвращает путь к папке, в которой хранится статический контент приложения, как правило, это
- 77. ASP.NET Core При разработке можно иcпользовать эти свойства. Но наиболее часто при разработке придется сталкиваться со
- 78. ASP.NET Core В проекте это свойство задается через установку переменной среды ASPNETCORE_ENVIRONMENT. Ее текущее значение можно
- 79. ASP.NET Core Для определения значения этой переменной для интерфейса IWebHostEnvironment определены специальные методы расширения: IsEnvironment(string envName):
- 80. ASP.NET Core Например, при создании нового проекта в методе Configure() класса Startup можно найти следующие строки:
- 81. ASP.NET Core Таким образом, если имя среды имеет значение "Development", то есть приложение находится в состоянии
- 82. Определение своих состояний среды Хотя по умолчанию среда может принимать три состояния: Development, Staging, Production, но
- 83. Определение своих состояний среды { "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:58666", "sslPort":
- 84. Определение своих состояний среды
- 85. Определение своих состояний среды
- 87. Скачать презентацию