Опубликовано

Вышла книга: “Разработка веб-приложений с помощью Blazor”

Разработка веб-приложений с помощью Blazor

ассмотрены особенности создания веб-приложений с помощью фреймворка Blazor с обновленной структурой, появившейся с выходом .NET 8. Приведены основные понятия, описана архитектура приложений для различных моделей хостинга (Blazor Server и Blazor WebAssembly) и даны практические примеры реализации таких приложений. Показаны способы привязки данных, настройки обратного вызова с использованием событий. Разобрано создание моделей и репозиториев для хранения данных, управление объектами при осуществлении CRUD-операций. Подробно описаны функции, специфичные для Blazor. Рассматриваются методы настройки рендеринга компонентов, их жизненный цикл, показаны способы создания и применения универсальных компонентов, предложены варианты внедрения готовых библиотек и реализации взаимодействия с JavaScript. Книга ориентирована на  разработчиков, имеющих базовые знания о .NET, C# и веб-технологиях (HTML, JavaScript и CSS), желающих овладеть основами веб-разработки с помощью Blazor. Электронный архив на сайте издательства содержит результаты выполнения всех рассмотренных в книге проектов .

Для веб-разработчиков

Результаты выполнения всех рассмотренных в книге проектов можно скачать по ссылке https://zip.bhv.ru/9785977519847.zip, а также со страницы книги на сайте bhv.ru.

В книге рассмотрены:

  • Разработка в Blazor
  • Blazor Server и Blazor WebAssembly
  • CRUD-операции в Blazor Server
  • Взаимодействие с JavaScript
  • Entity Framework Core и MS SQL Server
  • Использование сторонних компонентов

Книгу “Разработка веб-приложений с помощью Blazor” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Введение………………………………………………………………………………………………….. 7

Что вы узнаете из этой книги?…………………………………………………………………………………………………….. 9

Что нужно знать?……………………………………………………………………………………………………………………….. 12

Основные термины и понятия…………………………………………………………………………………………………… 13

Глава 1. Базовые сведения…………………………………………………………………….. 15

Модели хостинга……………………………………………………………………………………………………………………….. 15

Создание проекта на Blazor……………………………………………………………………………………………………… 20

Запуск приложения на локальном сервере……………………………………………………………………………… 24

Структура проекта…………………………………………………………………………………………………………………….. 26

Порядок работы приложения с рендерингом на сервере……………………………………………………….. 29

Рендеринг WebAssembly……………………………………………………………………………………………………………. 33

Автоматический рендеринг………………………………………………………………………………………………………. 34

Структура проекта Blazor WebAssembly…………………………………………………………………………………. 35

Структура домашней страницы приложения…………………………………………………………………………. 38

Знакомство с компонентом……………………………………………………………………………………………………….. 38

Подключение Blazor для проекта ASP.NET Core…………………………………………………………………….. 40

Глава 2. Привязки и организация кода………………………………………………….. 45

Однонаправленная привязка данных………………………………………………………………………………………. 45

Двунаправленная привязка данных…………………………………………………………………………………………. 47

Привязка событий………………………………………………………………………………………………………………………. 50

Раскрывающиеся списки…………………………………………………………………………………………………………… 51

Частичный класс………………………………………………………………………………………………………………………… 56

Наследование от класса ComponentBase………………………………………………………………………………… 59

Организация кода внутри компонента…………………………………………………………………………………….. 60

Вывод списка элементов в компонентах…………………………………………………………………………………. 63

Глава 3. Общие компоненты, параметры и обработка событий…………….. 69

Создание общих компонентов………………………………………………………………………………………………….. 69

Параметры компонента…………………………………………………………………………………………………………….. 70

Настройка отрисовки флажков………………………………………………………………………………………………… 73

Обработка обратного вызова…………………………………………………………………………………………………… 74

Глава 4. Отрисовка компонентов…………………………………………………………… 83

Понятие RenderFragment…………………………………………………………………………………………………………… 83

Настройка обратного вызова…………………………………………………………………………………………………… 86

Управление отрисовкой различных фрагментов……………………………………………………………………. 88

Настройка доступа к дочернему компоненту…………………………………………………………………………. 91

Создание шаблонных компонентов…………………………………………………………………………………………. 93

Глава 5. Атрибуты и каскадные параметры…………………………………………… 97

Управление атрибутами……………………………………………………………………………………………………………. 97

Сплаттинг атрибутов………………………………………………………………………………………………………………… 99

Прием атрибутов……………………………………………………………………………………………………………………… 102

Передача параметров через несколько уровней вложенности……………………………………………. 103

Каскадные параметры…………………………………………………………………………………………………………….. 106

Каскадная передача нескольких значений…………………………………………………………………………… 111

Глава 6. Маршрутизация……………………………………………………………………… 115

Базовая маршрутизация………………………………………………………………………………………………………….. 116

Параметры запроса…………………………………………………………………………………………………………………. 118

Навигация с помощью NavigationManager…………………………………………………………………………… 121

Ограничения параметров………………………………………………………………………………………………………… 123

Необязательные параметры…………………………………………………………………………………………………… 124

Обработка строки запроса с помощью [SupplyParameterFromQuery]……………………………….. 124

Обработка отсутствующих маршрутов………………………………………………………………………………… 126

Глава 7. Взаимодействие с JavaScript…………………………………………………… 129

Настройка подтверждений с использованием confirm…………………………………………………………. 129

Стилизованные уведомления Notyf……………………………………………………………………………………….. 132

Использование расширений для IJSRuntime…………………………………………………………………………. 136

Стилизованные уведомления SweetAlert2……………………………………………………………………………… 138

Настройка доступа к компонентам через директиву @ref………………………………………………….. 140

Глава 8. Жизненный цикл компонентов………………………………………………. 143

Методы OnInitialized и OnInitializedAsync…………………………………………………………………………….. 143

Методы OnParametersSet и OnParametersSetAsync………………………………………………………………. 148

Методы OnAfterRender и OnAfterRenderAsync………………………………………………………………………. 150

Метод StateHasChanged………………………………………………………………………………………………………….. 153

Метод ShouldRender………………………………………………………………………………………………………………… 155

Глава 9. Управление состоянием………………………………………………………….. 157

Использование каскадных параметров…………………………………………………………………………………. 158

Служба управления состоянием…………………………………………………………………………………………….. 161

Хранилище браузера………………………………………………………………………………………………………………. 165

Глава 10. Библиотека компонентов и виртуализация…………………………… 173

Создание библиотеки компонентов……………………………………………………………………………………….. 173

Компонент Virtualize……………………………………………………………………………………………………………….. 178

Получение объектов по мере необходимости……………………………………………………………………….. 182

Глава 11. Работа с формами и визуальным интерфейсом……………………… 185

Создание моделей предметной области………………………………………………………………………………… 186

Создание интерфейса для репозитория…………………………………………………………………………………. 188

Создание репозитория и реализация методов работы с данными……………………………………… 190

Настройка доступа к репозиторию……………………………………………………………………………………….. 193

Создание компонента для визуализации справочника………………………………………………………… 195

Настройка формы для ввода данных…………………………………………………………………………………….. 196

Настройка валидации……………………………………………………………………………………………………………… 200

Создание нового элемента справочника……………………………………………………………………………….. 204

Настройка вывода списка данных из справочника……………………………………………………………… 205

Настройка анимации загрузки компонента………………………………………………………………………….. 208

Настройка загрузки страницы изменения элемента справочника……………………………………… 210

Настройка редактирования элемента справочника…………………………………………………………….. 213

Обработка форм при статическом рендеринге на сервере………………………………………………….. 214

Настройка компонента для подтверждения удаления…………………………………………………………. 216

Удаление элемента из справочника………………………………………………………………………………………. 221

Определение интерфейса для удаления элемента………………………………………………………………… 222

Использование асинхронных методов для работы с репозиторием…………………………………… 226

Глава 12. Реализация CRUD-операций в Blazor Server…………………………. 231

Создание компонента для вывода списка элементов модели……………………………………………… 232

Настройка компонента для создания и обновления экземпляра модели…………………………… 239

Определение выпадающего списка……………………………………………………………………………………….. 245

Создание сервиса работы с файлами…………………………………………………………………………………….. 248

Загрузка файлов изображений……………………………………………………………………………………………….. 252

Настройка добавления……………………………………………………………………………………………………………. 254

Настройка обновления……………………………………………………………………………………………………………. 256

Настройка удаления……………………………………………………………………………………………………………….. 257

Глава 13. Использование сторонних компонентов……………………………….. 261

Интеграция компонента Radzen для редактирования текста……………………………………………… 261

Настройка репозитория для работы с данными подчиненной таблицы……………………………. 264

Создание компонента для работы с подчиненными данными……………………………………………. 269

Настройка вывода сводной информации………………………………………………………………………………. 271

Добавление компонента RadzenDataGrid……………………………………………………………………………… 273

Настройка редактирования для RadzenDataGrid…………………………………………………………………. 274

Настройка добавления для RadzenDataGrid…………………………………………………………………………. 280

Настройка удаления для RadzenDataGrid…………………………………………………………………………….. 284

Настройка фильтрации, сортировки и пагинации………………………………………………………………… 286

Глава 14. Интеграция MS SQL Server и Entity Framework Core……………. 291

Настройка контекста базы данных……………………………………………………………………………………….. 291

Добавление доступа к базе данных в контейнере для внедрения зависимостей……………….. 293

Подготовка моделей………………………………………………………………………………………………………………… 296

Создание таблиц базы данных………………………………………………………………………………………………. 298

Создание репозиториев…………………………………………………………………………………………………………… 302

Добавление доступа к репозиториям…………………………………………………………………………………….. 308

Отслеживание изменений………………………………………………………………………………………………………… 309

Применение миграций……………………………………………………………………………………………………………… 312

Использование DbContextFactory………………………………………………………………………………………….. 313

Глава 15. Аутентификация в Blazor Server…………………………………………… 317

Создание Web API……………………………………………………………………………………………………………………. 317

Функции JavaScript для вызова Web API……………………………………………………………………………….. 320

Настройка входа и выхода…………………………………………………………………………………………………….. 321

Внедрение сервисов аутентификации……………………………………………………………………………………. 325

Защита страниц и компонентов……………………………………………………………………………………………… 327

Настройка проверки………………………………………………………………………………………………………………… 328

Глава 16. Особенности работы с Blazor WebAssembly…………………………… 331

Определение таблицы в базе данных для CRUD-операций………………………………………………… 332

Создание модели из таблицы базы данных………………………………………………………………………….. 333

Определение репозитория для работы с данными……………………………………………………………….. 336

Настройка Web API…………………………………………………………………………………………………………………. 337

Настройка проекта приложения Blazor WebAssembly…………………………………………………………. 343

Определение компонента для вывода списка……………………………………………………………………….. 345

Определение компонента для добавления элемента……………………………………………………………. 348

Определение компонента для редактирования элемента……………………………………………………. 351

Определение компонента для удаления элемента……………………………………………………………….. 353

Выполнение HTTP-запросов с помощью IHttpClientFactory………………………………………………. 356

Создание защищенных страниц…………………………………………………………………………………………….. 360

Размещение приложения Blazor WebAssembly……………………………………………………………………… 373

Глава 17. Развертывание приложений………………………………………………….. 375

Развертывание приложения с помощью IIS………………………………………………………………………….. 375

Развертывание приложения с помощью nginx под Linux…………………………………………………….. 383

Автономное развертывание приложения Blazor WebAssembly на сервере IIS………………….. 389

Заключение………………………………………………………………………………………….. 392

Приложение. Описание электронного архива………………………………………. 394

Предметный указатель…………………………………………………………………………. 396

 

 

Умрихин Евгений

Умрихин Евгений Дмитриевич, кандидат технических наук, инженер-программист в крупной региональной страховой компании. Имеет многолетний опыт разработки и внедрения распределенных IT-решений с использованием веб-сервисов ASP.NET и мобильных платформ Android и iOS. Обладатель ряда авторских свидетельств об официальной регистрации программ для ЭВМ.

Опубликовано

Новинка: “C# 11 и .NET 7.0”

C# 11 и .NET 7.0

Книга о разработке нативных, кросc-платформенных и веб-приложений на платформе .NET с использованием языка C#. Подробно рассмотрена экосистема платформы .NET, средства связи в распределённых системах (gRPC и SignalR), инструменты современной веб-разработки – Blazor, библиотека машинного обучения ML.NET, фреймворк для веб-разработки ASP.NET Core, инструментарий Entity Framework Core 7. Объяснены возможности подготовки микросервисной архитектуры, а также развёртывание контейнеров и управление ими с применением Docker Swarm и Kubernetes.

Для разработчиков

Создаём кросс-платформенные приложения на базе .NET Core

Платформа .NET – это развитая среда, в которой можно разрабатывать и выполнять приложения любых типов. Хотя официально на платформе .NET поддерживается несколько языков программирования, наиболее популярен среди них именно язык C#, и его можно считать флагманским.

В этой книге разобраны основы .NET, пошагово объяснено, как создавать нативные приложения, которые легко адаптировать для работы на многих платформах. Уделено внимание взаимодействию с базами данных и работе с Entity Framework Core 7. Рассматривается ASP.NET Core, главный фреймворк .NET, предназначенный для веб-разработки.

Обсуждаются и более современные веб-технологии, в частности Blazor (технология на основе WebAssembly, специально предназначенная для платформы .NET), а также настройка двунаправленной коммуникации с использованием SignalR и gRPC. В последней части книги описано развёртывание и контейнеризация приложения с применением Docker Swarm и Kubernetes.

Прочитав книгу, вы научитесь уверенно создавать  приложения на языке C# для платформы .NET.

В этой книге

    • Знакомство с новейшими возможностями языка C#
    • Работа с новыми возможностями .NET 7, в том числе, SDK и библиотеками
    • Создание веб-приложений с применением ASP.NET Core 7
    • Подготовка моделей машинного обучения с использованием ML.NET
    • Приёмы, позволяющие быстро и безопасно собирать и развёртывать распределённые приложения

Для кого эта книга
Книга рассчитана на широкую аудиторию разработчиков: для тех, кто хочет изучить язык C# и платформу .NET в их современной редакции, для желающих освоить веб-разработку на платформе .NET и для тех, кому требуется разрабатывать нативные и кросс-платформенные приложения с применением C# и .NET.

Книгу “C# 11 и .NET 7.0” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Об авторе……………………………………………………………………………………………….. 15

О рецензентах………………………………………………………………………………………… 16

Благодарности……………………………………………………………………………………….. 17

Предисловие…………………………………………………………………………………………… 18

Комплект исходного кода и цветные иллюстрации……………………………………………………………….. 22

Глава 1. Знакомство со структурой приложений .NET 7………………………… 23

Введение……………………………………………………………………………………………………………………………………… 23

Структура…………………………………………………………………………………………………………………………………… 24

Цели…………………………………………………………………………………………………………………………………………….. 24

Настройка среды разработки…………………………………………………………………………………………………… 24

Компьютеры, подходящие для разработки ПО……………………………………………………………….. 24

.NET 7 SDK………………………………………………………………………………………………………………………….. 24

Установка редактора кода или среды IDE………………………………………………………………………. 25

Установка подходящего редактора кода……………………………………………………………….. 26

Установка подходящей IDE…………………………………………………………………………………….. 28

Microsoft Visual Studio 2022………………………………………………………………………………………………. 28

Microsoft Visual Studio 2022 for Mac……………………………………………………………………….. 29

JetBrains Rider……………………………………………………………………………………………………………………… 30

Создание приложения .NET 7…………………………………………………………………………………………………… 31

Создание приложения с помощью CLI…………………………………………………………………………….. 32

Создание приложения с помощью графического интерфейса IDE……………………………….. 33

Обзор структуры проекта .NET 7……………………………………………………………………………………………… 35

Добавление объекта struct………………………………………………………………………………………………… 35

Добавление интерфейса и класса…………………………………………………………………………………….. 36

Изменение точки входа в приложение……………………………………………………………………………… 39

Основы C# 11 и встроенные типы данных………………………………………………………………………………. 41

Встроенные типы данных…………………………………………………………………………………………………. 41

Поток управления………………………………………………………………………………………………………………. 43

Пользовательские типы в C#…………………………………………………………………………………………….. 44

Модификаторы доступа……………………………………………………………………………………………………. 44

Заключение………………………………………………………………………………………………………………………………… 45

Что следует помнить………………………………………………………………………………………………………………….. 46

Контрольные вопросы………………………………………………………………………………………………………………. 46

Ответы…………………………………………………………………………………………………………………………………. 47

Основные термины…………………………………………………………………………………………………………………….. 47

Глава 2. Обзор возможностей C# 11……………………………………………………….. 48

Введение……………………………………………………………………………………………………………………………………… 48

Структура…………………………………………………………………………………………………………………………………… 48

Цели…………………………………………………………………………………………………………………………………………….. 48

Предварительные условия………………………………………………………………………………………………………… 49

Автоматическая инициализация структур………………………………………………………………………………. 49

Обобщенные атрибуты……………………………………………………………………………………………………………… 50

Пример обобщенного атрибута………………………………………………………………………………………… 51

Сопоставление последовательности с образцом……………………………………………………………………. 53

Демонстрация сопоставления последовательности с образцом…………………………………… 54

Сопоставление последовательности с образцом типа char span………………………………….. 54

Новые операции со строками…………………………………………………………………………………………………… 56

Заключение………………………………………………………………………………………………………………………………… 59

Что следует помнить………………………………………………………………………………………………………………….. 60

Контрольные вопросы………………………………………………………………………………………………………………. 60

Ответы…………………………………………………………………………………………………………………………………. 61

Основные термины…………………………………………………………………………………………………………………….. 61

Глава 3. Что нового в .NET 7?………………………………………………………………… 62

Введение……………………………………………………………………………………………………………………………………… 62

Структура…………………………………………………………………………………………………………………………………… 62

Цели…………………………………………………………………………………………………………………………………………….. 62

Предварительные условия………………………………………………………………………………………………………… 63

Улучшения в SDK и инструментах сборки………………………………………………………………………………. 63

Улучшения инструментов командной строки…………………………………………………………………. 63

NativeAOT и функция обрезки библиотек………………………………………………………………………… 64

Центральный диспетчер пакетов……………………………………………………………………………………… 65

Обновления библиотек System и Microsoft……………………………………………………………………………… 66

Поддержка микросекунд и наносекунд……………………………………………………………………………. 66

Новые возможности для работы с JSON………………………………………………………………………….. 68

Свойство MaxDepth класса JsonWriterOptions………………………………………………………. 69

Конфигурация JsonSerializerOptions по умолчанию…………………………………………….. 70

Вызовы HTTP PATCH для JSON……………………………………………………………………………….. 70

Полиморфизм JSON…………………………………………………………………………………………………… 71

Тестирование возможностей JSON………………………………………………………………………….. 73

Новые возможности класса Stream…………………………………………………………………………………… 73

Улучшения RegEx………………………………………………………………………………………………………………. 75

Улучшения в криптографии………………………………………………………………………………………………. 76

Новый TAR API………………………………………………………………………………………………………………….. 78

Улучшения наблюдаемости……………………………………………………………………………………………………… 80

Новые способы мониторинга действий……………………………………………………………………………. 80

Мониторинг остановленных действий……………………………………………………………………. 80

Событие изменения текущего действия………………………………………………………………….. 81

Перечисление свойств действия………………………………………………………………………………. 81

Показатель UpDownCounter……………………………………………………………………………………………… 83

Критические изменения в .NET 7………………………………………………………………………………………………. 83

Допустимость неопределенных значений в пространстве имен Microsoft.Extensions… 83

Конечные точки: устаревшие и не допускающие неопределенных значений……………… 84

Ограничение PatternContext……………………………………………………………………………………………… 84

Многоуровневый поиск в Windows отключен…………………………………………………………………. 84

Сериализация пользовательских типов в MSBuild…………………………………………………………. 84

Заключение………………………………………………………………………………………………………………………………… 85

Что следует помнить………………………………………………………………………………………………………………….. 85

Контрольные вопросы………………………………………………………………………………………………………………. 86

Ответы…………………………………………………………………………………………………………………………………. 86

Основные термины…………………………………………………………………………………………………………………….. 87

Глава 4. MAUI и кросс-платформенные нативные приложения…………….. 88

Введение……………………………………………………………………………………………………………………………………… 88

Структура…………………………………………………………………………………………………………………………………… 88

Цели…………………………………………………………………………………………………………………………………………….. 89

Предварительные условия………………………………………………………………………………………………………… 89

Общие сведения о MAUI……………………………………………………………………………………………………………. 89

Включение среды разработки MAUI……………………………………………………………………………….. 90

Создание простых MAUI-приложений…………………………………………………………………………….. 91

Справочные данные по MAUI XAML…………………………………………………………………….. 94

Работа с Blazor на платформе .NET MAUI………………………………………………………………………. 97

Архитектурные паттерны MAUI………………………………………………………………………………………. 99

Model-View-ViewModel……………………………………………………………………………………………… 99

Паттерны, поддерживаемые MAUI через сторонние платформы……………………………….. 101

ReactiveUI………………………………………………………………………………………………………………… 101

Model-View-Update………………………………………………………………………………………………….. 101

Использование MAUI для создания настольных приложений……………………………………………. 102

Подготовка среды разработки настольных приложений…………………………………………….. 102

Запуск настольного приложения в режиме отладки…………………………………………………….. 102

Публикация настольного приложения…………………………………………………………………………… 103

Использование MAUI для создания мобильных приложений…………………………………………….. 104

Подготовка среды разработки мобильных приложений……………………………………………… 105

Запуск мобильного приложения на эмуляторе……………………………………………………………… 106

Публикация мобильного приложения……………………………………………………………………………. 106

Ограничения разработки для Mac OS и iOS………………………………………………………………………….. 107

Дополнительные инструменты, необходимые для публикации приложений
для iOS……………………………………………………………………………………………………………………………….. 107

Менее строгие требования к приложениям для Mac OS………………………………………………. 108

Заключение………………………………………………………………………………………………………………………………. 108

Что следует помнить……………………………………………………………………………………………………………….. 109

Контрольные вопросы…………………………………………………………………………………………………………….. 109

Ответы……………………………………………………………………………………………………………………………….. 110

Основные термины…………………………………………………………………………………………………………………… 110

Глава 5. Доступ к базам данных с помощью Entity Framework 7………….. 111

Введение…………………………………………………………………………………………………………………………………… 111

Структура…………………………………………………………………………………………………………………………………. 111

Цели…………………………………………………………………………………………………………………………………………… 112

Предварительные условия………………………………………………………………………………………………………. 112

Знакомство с основами реляционных БД……………………………………………………………………………… 112

Обзор систем управления реляционными БД и SQL…………………………………………………….. 112

Таблицы, отношения и нормализация……………………………………………………………………………. 113

Введение первичных ключей…………………………………………………………………………………. 115

Нормализация и отношения внешних ключей……………………………………………………… 115

Введение в Entity Framework 7……………………………………………………………………………………………….. 117

Подход “сначала код” в EF7…………………………………………………………………………………………………… 119

Добавление кода Entity Framework………………………………………………………………………………… 119

Добавление объектов-сущностей…………………………………………………………………………………… 120

Добавление контекста базы данных………………………………………………………………………………. 122

Добавление скрипта создания базы данных…………………………………………………………………. 124

Создание базы данных путем запуска приложения……………………………………………………… 128

Подход “сначала база данных” в EF7……………………………………………………………………………………. 129

Создание моделей EF7 из существующей БД……………………………………………………………….. 129

Просмотр автоматически сгенерированного кода……………………………………………………….. 130

Новейшие функции EF7…………………………………………………………………………………………………………… 131

Подход “сначала база данных” и управление с помощью шаблонов T4…………………… 131

Защищенный ключ…………………………………………………………………………………………………………… 131

Отображение “одна таблица на конкретный тип” (TPC)……………………………………………… 133

Перехватчики……………………………………………………………………………………………………………………. 136

Заключение………………………………………………………………………………………………………………………………. 137

Что следует помнить……………………………………………………………………………………………………………….. 137

Контрольные вопросы…………………………………………………………………………………………………………….. 138

Ответы……………………………………………………………………………………………………………………………….. 139

Основные термины…………………………………………………………………………………………………………………… 139

Глава 6. Типы веб-приложений в .NET………………………………………………… 140

Введение…………………………………………………………………………………………………………………………………… 140

Структура…………………………………………………………………………………………………………………………………. 140

Цели…………………………………………………………………………………………………………………………………………… 141

Предварительные условия………………………………………………………………………………………………………. 141

Основы ASP.NET Core……………………………………………………………………………………………………………… 141

Структура базового приложения ASP.NET Core…………………………………………………………… 141

Web API в ASP.NET Core…………………………………………………………………………………………………………. 144

Web API с контроллерами……………………………………………………………………………………………….. 144

Конечные точки Minimal API………………………………………………………………………………………….. 149

Добавление метаданных Open API……………………………………………………………………….. 150

Улучшение передачи параметров в Minimal API………………………………………………… 150

Minimal API и типизированные результаты…………………………………………………………. 151

Выгрузка файлов в Minimal API…………………………………………………………………………….. 153

Новое в промежуточном ПО для обработки запросов…………………………………………………. 153

MVC в ASP.NET Core……………………………………………………………………………………………………………….. 155

Razor Pages в ASP.NET Core……………………………………………………………………………………………………. 167

Заключение………………………………………………………………………………………………………………………………. 169

Что следует помнить……………………………………………………………………………………………………………….. 170

Контрольные вопросы…………………………………………………………………………………………………………….. 170

Ответы……………………………………………………………………………………………………………………………….. 171

Основные термины…………………………………………………………………………………………………………………… 171

Глава 7. Blazor и WebAssembly в .NET………………………………………………….. 172

Введение…………………………………………………………………………………………………………………………………… 172

Структура…………………………………………………………………………………………………………………………………. 173

Цели…………………………………………………………………………………………………………………………………………… 173

Предварительные условия………………………………………………………………………………………………………. 173

Общие сведения о Blazor…………………………………………………………………………………………………………. 173

Примеры Razor-компонентов………………………………………………………………………………………….. 174

@page……………………………………………………………………………………………………………………….. 175

@onclick…………………………………………………………………………………………………………………… 175

@code……………………………………………………………………………………………………………………….. 175

Ключевые слова Razor в Razor-компонентах……………………………………………………………….. 175

@using………………………………………………………………………………………………………………………. 176

@implements……………………………………………………………………………………………………………. 176

@inherits…………………………………………………………………………………………………………………… 176

@inject……………………………………………………………………………………………………………………… 176

@layout…………………………………………………………………………………………………………………….. 176

@namespace…………………………………………………………………………………………………………….. 176

@preservewhitespace……………………………………………………………………………………………….. 177

@attributes……………………………………………………………………………………………………………….. 177

@bind……………………………………………………………………………………………………………………….. 177

@ref………………………………………………………………………………………………………………………….. 177

@typeparam…………………………………………………………………………………………………………….. 178

Обзор Blazor WebAssembly……………………………………………………………………………………………………… 178

Отделение кода программной части………………………………………………………………………………. 179

Взаимодействие с JavaScript…………………………………………………………………………………………… 181

Передача параметров в Razor-компоненты…………………………………………………………………… 182

Предварительная компиляция………………………………………………………………………………………… 183

Пустой шаблон Blazor WebAssembly……………………………………………………………………………… 184

Хостинг приложений Blazor WebAssembly в ASP.NET Core………………………………………………… 185

Добавление хостируемого приложения Blazor WebAssembly к существующему приложению ASP.NET Core       185

Проверка форм в Blazor…………………………………………………………………………………………………… 186

NavigationManager и передача состояния между страницами……………………………………. 188

Настройка Blazor Server………………………………………………………………………………………………………….. 189

Пользовательские элементы в Blazor……………………………………………………………………………… 190

Жизненный цикл Razor-компонента………………………………………………………………………………. 191

Пустой шаблон Blazor Server………………………………………………………………………………………….. 192

Заключение………………………………………………………………………………………………………………………………. 193

Что следует помнить……………………………………………………………………………………………………………….. 193

Контрольные вопросы…………………………………………………………………………………………………………….. 194

Ответы……………………………………………………………………………………………………………………………….. 194

Основные термины…………………………………………………………………………………………………………………… 195

Глава 8. SignalR и двусторонняя связь………………………………………………….. 196

Введение…………………………………………………………………………………………………………………………………… 196

Структура…………………………………………………………………………………………………………………………………. 197

Цели…………………………………………………………………………………………………………………………………………… 197

Предварительные условия………………………………………………………………………………………………………. 197

Общие сведения о библиотеке SignalR…………………………………………………………………………………… 197

WebSocket…………………………………………………………………………………………………………………………. 198

Server-Sent Events……………………………………………………………………………………………………………… 198

Длительный опрос……………………………………………………………………………………………………………. 199

Создание хаба SignalR на сервере…………………………………………………………………………………………. 199

Строго типизированный хаб…………………………………………………………………………………………… 202

Внедрение зависимостей в хаб SignalR………………………………………………………………………….. 203

JSON и MessagePack…………………………………………………………………………………………………………. 204

JavaScript-клиент для SignalR…………………………………………………………………………………………………. 204

Добавление HTML-разметки для клиента SignalR……………………………………………………….. 205

Применение функций SignalR в JavaScript……………………………………………………………………… 208

.NET-клиент для SignalR………………………………………………………………………………………………………….. 211

Заключение………………………………………………………………………………………………………………………………. 214

Что следует помнить……………………………………………………………………………………………………………….. 214

Контрольные вопросы…………………………………………………………………………………………………………….. 214

Ответы……………………………………………………………………………………………………………………………….. 215

Основные термины…………………………………………………………………………………………………………………… 215

Глава 9. gRPC в ASP.NET Core…………………………………………………………….. 216

Введение…………………………………………………………………………………………………………………………………… 216

Структура…………………………………………………………………………………………………………………………………. 216

Цели…………………………………………………………………………………………………………………………………………… 217

Предварительные условия………………………………………………………………………………………………………. 217

Общие сведения о технологии gRPC………………………………………………………………………………. 217

Protobuf как основной протокол сериализации сообщений………………………………………………… 218

Настройка сервера gRPC………………………………………………………………………………………………………… 218

Структура проекта ASP.NET Core gRPC………………………………………………………………………… 219

Типы вызовов и типы данных gRPC……………………………………………………………………………….. 221

JSON-перекодирование в gRPC……………………………………………………………………………………….. 224

Настройка клиента gRPC………………………………………………………………………………………………………… 227

Использование фабрики клиентов gRPC и внедрение зависимостей…………………………… 230

Обзор типов данных gRPC………………………………………………………………………………………………………. 232

Перечисления Protobuf…………………………………………………………………………………………………….. 233

Использование коллекций с помощью ключевого слова repeated………………………………. 234

Функциональность словаря в Protobuf…………………………………………………………………………… 234

Использование ключевого слова oneof в Protobuf………………………………………………………… 234

Общеизвестные типы данных…………………………………………………………………………………………………. 235

Заключение………………………………………………………………………………………………………………………………. 236

Что следует помнить……………………………………………………………………………………………………………….. 237

Контрольные вопросы…………………………………………………………………………………………………………….. 237

Ответы……………………………………………………………………………………………………………………………….. 238

Основные термины…………………………………………………………………………………………………………………… 238

Глава 10. Машинное обучение с помощью ML.NET…………………………….. 239

Введение…………………………………………………………………………………………………………………………………… 239

Структура…………………………………………………………………………………………………………………………………. 240

Цели…………………………………………………………………………………………………………………………………………… 240

Предварительные условия………………………………………………………………………………………………………. 240

Основы ML.NET……………………………………………………………………………………………………………………….. 240

Типы машинного обучения……………………………………………………………………………………………… 242

Обучение с учителем………………………………………………………………………………………………. 242

Обучение без учителя…………………………………………………………………………………………….. 242

Обучение с подкреплением……………………………………………………………………………………. 242

Начало работы с ML.NET………………………………………………………………………………………………. 243

Установка инструментов ML.NET………………………………………………………………………… 243

Использование ML.NET для создания первой модели МО…………………………………. 244

Выбор задачи для МО…………………………………………………………………………………………………………….. 246

Бинарная классификация………………………………………………………………………………………………… 246

Многоклассовая классификация…………………………………………………………………………………….. 248

Регрессия…………………………………………………………………………………………………………………………… 249

Рекомендации…………………………………………………………………………………………………………………… 250

Прогнозирование……………………………………………………………………………………………………………… 251

Классификация изображений…………………………………………………………………………………………. 253

Кластеризация………………………………………………………………………………………………………………….. 254

Обнаружение отклонений……………………………………………………………………………………………….. 254

Ранжирование…………………………………………………………………………………………………………………… 255

Обучение и оценка модели……………………………………………………………………………………………………… 255

Показатели бинарной классификации…………………………………………………………………………… 256

Показатели многоклассовой классификации………………………………………………………………… 256

Классификация изображений…………………………………………………………………………………………. 256

Прогнозирование……………………………………………………………………………………………………………… 257

Регрессия и рекомендации………………………………………………………………………………………………. 257

Показатели кластеризации……………………………………………………………………………………………… 257

Показатели обнаружения отклонений…………………………………………………………………………… 258

Показатели ранжирования……………………………………………………………………………………………… 258

Использование малокодового построителя моделей…………………………………………………………… 258

Заключение………………………………………………………………………………………………………………………………. 261

Что следует помнить……………………………………………………………………………………………………………….. 262

Контрольные вопросы…………………………………………………………………………………………………………….. 262

Ответы……………………………………………………………………………………………………………………………….. 263

Основные термины…………………………………………………………………………………………………………………… 263

Глава 11. Микросервисы и контейнеризация в .NET 7…………………………. 265

Введение…………………………………………………………………………………………………………………………………… 265

Структура…………………………………………………………………………………………………………………………………. 266

Цели…………………………………………………………………………………………………………………………………………… 266

Предварительные условия………………………………………………………………………………………………………. 266

Контейнеры Docker………………………………………………………………………………………………………………….. 266

Контейнеры и образы контейнеров………………………………………………………………………………… 267

Базовые образы и уровни………………………………………………………………………………………………… 267

Изоляция сети и сопоставление портов…………………………………………………………………………. 268

Изоляция файловой системы и монтирование каталогов хоста………………………………….. 268

Установка Docker в Linux………………………………………………………………………………………………… 269

Установка Docker на Mac……………………………………………………………………………………………….. 269

Установка Docker в Windows…………………………………………………………………………………………… 269

Базовый образ Docker для .NET 7…………………………………………………………………………………………… 270

Создание приложения с поддержкой Docker…………………………………………………………………. 271

Добавление поддержки Docker в существующее приложение…………………………………….. 272

Структура файла Dockerfile……………………………………………………………………………………………. 273

Создание и запуск контейнера Docker…………………………………………………………………………… 275

Оркестрация приложений с помощью Docker Swarm…………………………………………………………… 275

Базовая оркестрация помощью Docker Compose………………………………………………………….. 276

Запуск Docker Swarm……………………………………………………………………………………………………….. 278

Оркестрация приложений с помощью Kubernetes………………………………………………………………… 279

Установка Kubernetes в Linux…………………………………………………………………………………………. 279

Установка Kubernetes на Mac…………………………………………………………………………………………. 280

Добавление сервисов в кластер Kubernetes…………………………………………………………………… 281

Заключение………………………………………………………………………………………………………………………………. 282

Что следует помнить……………………………………………………………………………………………………………….. 282

Контрольные вопросы…………………………………………………………………………………………………………….. 282

Ответы……………………………………………………………………………………………………………………………….. 283

Основные термины…………………………………………………………………………………………………………………… 283

Предметный указатель…………………………………………………………………………. 285

Федор Сазанцев

Сазанавец Фёдор (Sazanavets Fiodar) — профессиональный инженер-программист, который широко использует программное обеспечение компании Microsoft. Основные области его специализации включают ASP.NET (Framework и Core), SQL Server, Azure, Docker, Интернет вещей (IoT), архитектуру микросервисов и различные интерфейсные технологии. Фёдор имеет большой практический опыт разработки программного обеспечения в различных отраслях, включая гидротехнику, финансы, розничную торговлю, железную дорогу и оборону. С энтузиазмом обучает других людей навыкам программирования. Автор ряда книг и курсов по программированию.