NET 8: приложения и сервисы. Практика создания проектов с использованием Blazor, .NET MAUI, gRPC, GraphQL и других технологий. 2 изд

NET 8: приложения и сервисы. Практика создания проектов с использованием Blazor, .NET MAUI, gRPC, GraphQL и других технологий. 2 изд

NET 8: приложения и сервисы. Практика создания проектов с использованием Blazor, .NET MAUI, gRPC, GraphQL и других технологий. 2 изд
Автор: Прайс Марк Дж.
Переводчик: А. Ларин
Дата выхода: 2025
Издательство: «Спринт Бук»
Количество страниц: 768
Размер файла: 6,6 МБ
Тип файла: PDF
Добавил: Федоров_АИ
 Проверить на вирусы

Об авторе................................................................................................................................................20
О научных редакторах.......................................................................................................................21
Предисловие .........................................................................................................................................22
Примеры кода......................................................................................................................................... 22
Структура книги.................................................................................................................................... 23
Введение............................................................................................................................................ 23
Данные ............................................................................................................................................... 23
Библиотеки....................................................................................................................................... 23
Сервисы............................................................................................................................................. 24
Приложения..................................................................................................................................... 25
Резюме................................................................................................................................................ 25
Что вам понадобится............................................................................................................................ 25
Полноцветные иллюстрации ............................................................................................................ 25
Условные обозначения........................................................................................................................ 26
От издательства ...................................................................................................................................27
Глава 1. Знакомство с приложениями и сервисами на .NET ..............................................28
Знакомство с этой книгой и ее содержимым............................................................................... 28
Сопутствующие книги для продолжения обучения.......................................................... 29
Что вы узнаете из этой книги..................................................................................................... 29
Уникальная философия обучения........................................................................................... 31
Исправление моих ошибок......................................................................................................... 31
Готовые решения на сайте GitHub........................................................................................... 31
Соглашения об именовании проектов и нумерации портов........................................... 31
Настройка информирования об ошибках.............................................................................. 33
Технологии разработки приложений и сервисов ...................................................................... 35
Технология .NET............................................................................................................................ 35
Создание сайтов и приложений с помощью ASP.NET Core........................................... 35
Создание веб- и других сервисов.............................................................................................. 36
Windows Communication Foundation...................................................................................... 37
Общие принципы сервисов ........................................................................................................ 38
Советы по выбору сервиса .......................................................................................................... 38
Создание Windows-приложений.............................................................................................. 40
Создание кросс-платформенных мобильных и классических приложений............. 42
Альтернативы .NET MAUI ......................................................................................................... 42
Настройка среды разработки............................................................................................................ 43
Выбор подходящего редактора кода........................................................................................ 44
Кросс-платформенное развертывание.................................................................................... 46
Загрузка и установка Visual Studio 2022 ............................................................................... 47
Загрузка и установка Visual Studio Code............................................................................... 48
Использование ресурсов Azure ................................................................................................. 52
Использование других шаблонов проектов.......................................................................... 53
Установка дополнительных пакетов шаблонов ......................................................................... 54
Обзор высокоуровневых программ, функций и пространств имен .................................... 55
Обработка локальной функции в процессе компиляции ................................................ 56
Размещение статических функций в отдельном файле класса Program .................... 56
Обработка статической функции в процессе компиляции............................................. 57
GitHub-репозиторий для этой книги............................................................................................. 58
При возникновении вопросов по книге ................................................................................. 59
Загрузка кода решения из репозитория GitHub................................................................. 59
Источники справочной информации............................................................................................. 60
Техническая документация на сайте Microsoft Learn ....................................................... 60
Получение справки с помощью команды dotnet................................................................. 60
Инструменты ИИ, такие как ChatGPT и GitHub Copilot............................................... 62
Подписка на официальный блог .NET и уведомления..................................................... 64
Практика и исследование................................................................................................................... 64
Упражнение 1.1. Проверьте свои знания............................................................................... 65
Упражнение 1.2. Дополнительная информация ................................................................. 65
Резюме....................................................................................................................................................... 65
Глава 2. Управление реляционными данными в системе SQL Server.............................66
Создание современной БД................................................................................................................. 66
Использование образца реляционной БД............................................................................. 66
Подключение к БД SQL Server................................................................................................. 68
Установка и настройка локальной версии SQL Server..................................................... 69
Настройка Azure SQL Database................................................................................................. 74
Управление данными с помощью Transact-SQL ....................................................................... 80
Типы данных T-SQL..................................................................................................................... 80
Документирование и комментирование кода ...................................................................... 81
Объявление переменных............................................................................................................. 81
Указание типов данных ............................................................................................................... 81
Управление потоком..................................................................................................................... 81
Операторы ........................................................................................................................................ 82
Язык манипулирования данными (DML) ............................................................................ 82
DML для добавления, обновления и удаления данных.................................................... 85
Язык описания данных (DDL).................................................................................................. 85
Управление данными с помощью низкоуровневых API......................................................... 86
Типы данных в ADO.NET........................................................................................................... 87
Создание консольного приложения для работы с ADO.NET........................................ 88
Выполнение запросов и извлечение данных с помощью ADO.NET............................ 95
Вывод статистики .......................................................................................................................... 97
Асинхронная работа с ADO.NET ............................................................................................. 98
Выполнение хранимых процедур с помощью ADO.NET ................................................ 99
Вывод потоков с помощью объекта DataReader ...............................................................103
Создание объектов с помощью объекта DataReader........................................................105
Управление данными с помощью Dapper ..................................................................................107
Расширение подключений с помощью Dapper..................................................................107
Выполнение запросов с помощью Dapper...........................................................................108
Удаление использовавшихся ресурсов .......................................................................................110
Удаление ресурсов Azure...........................................................................................................110
Практика и исследование.................................................................................................................111
Упражнение 2.1. Проверьте свои знания.............................................................................111
Упражнение 2.2. Дополнительная информация ...............................................................111
Упражнение 2.3. Альтернативные варианты хранения конфиденциальной
информации ...................................................................................................................................111
Резюме.....................................................................................................................................................112
Глава 3. Построение моделей сущностей для SQL Server с помощью EF Core......... 113
Управление данными с помощью EF Core ................................................................................113
Обзор Entity Framework Core..................................................................................................114
Жесткая привязка моделей на основе существующей БД ............................................114
Настройка инструмента dotnet-ef ..........................................................................................115
Конфигурирование моделей данных EF Core ...................................................................116
Соглашения EF Core для конфигурации модели.............................................................116
Атрибуты аннотаций EF Core для конфигурации модели............................................117
Конфигурация модели EF Core с помощью Fluent API.................................................118
Инициализация базы данных с помощью Fluent API.....................................................119
Конфигурирование модели БД Northwind .........................................................................119
Запрос модели Northwind .........................................................................................................125
Управление отслеживанием сущностей ..............................................................................128
Работа с иерархиями наследования в EF Core .........................................................................132
Стратегия сопоставления «одна таблица — одна иерархия» (TPH). ........................132
Стратегия сопоставления «одна таблица — один тип» (TPT) .....................................133
Стратегия сопоставления «одна таблица — конкретный тип» (TPC) ......................134
Настройка стратегий сопоставления для иерархий наследования ............................135
Пример стратегий сопоставления иерархий ......................................................................136
Построение многократно используемой модели данных сущностей...............................144
Создание библиотеки классов для моделей сущностей в SQL Server.......................145
Создание библиотеки классов для контекста данных
с помощью SQL Server ...............................................................................................................147
Свойства, вычисляемые при создании модели сущности .............................................149
Тестовый проект для проверки интеграции библиотек классов.................................151
Модульные тесты для моделей сущностей.........................................................................152
Запуск модульных тестов в Visual Studio 2022 .................................................................154
Запуск модульных тестов в Visual Studio Code.................................................................154
Практика и исследование.................................................................................................................155
Упражнение 3.1. Проверьте свои знания.............................................................................155
Упражнение 3.2. Практическое сравнение ADO.NET с EF Core................................155
Упражнение 3.3. Обзор решений в отношении производительности .......................155
Упражнение 3.4. Дополнительная информация ...............................................................155
Резюме.....................................................................................................................................................156
Глава 4. Управление данными NoSQL с помощью Azure Cosmos DB .......................... 157
Основы работы с БД NoSQL...........................................................................................................157
Cosmos DB и поддерживаемые API.......................................................................................158
Моделирование документов.....................................................................................................158
Уровни согласованности ...........................................................................................................160
Иерархия компонентов ..............................................................................................................162
Обеспечение пропускной способности ................................................................................163
Стратегии разбиения ..................................................................................................................164
Проектирование хранилищ данных ......................................................................................165
Перенос данных в Cosmos DB .................................................................................................165
Создание ресурсов Cosmos DB.......................................................................................................165
Эмуляция ресурсов Azure Cosmos DB в Windows...........................................................166
Создание ресурсов Azure Cosmos DB на портале Azure .................................................171
Создание ресурсов Azure Cosmos DB с помощью приложения .NET .......................174
Управление данными через API Core (SQL) ............................................................................179
Выполнение CRUD-операций с помощью API Cosmos SQL.......................................179
Структура SQL-запросов ..........................................................................................................189
Полезные SQL-запросы в Cosmos DB ..................................................................................192
Серверное программирование в Cosmos DB.............................................................................192
Реализация функций, определяемых пользователем......................................................192
Реализация хранимых процедур.............................................................................................194
Очистка ресурсов Azure....................................................................................................................197
Практика и исследование.................................................................................................................198
Упражнение 4.1. Проверьте свои знания.............................................................................198
Упражнение 4.2. Моделирование и разделение данных ................................................198
Упражнение 4.3. Дополнительная информация ...............................................................198
Упражнение 4.4. Шпаргалки по запросам Cosmos DB ...................................................198
Упражнение 4.5. Gremlin API ..................................................................................................199
Упражнение 4.6. Дополнительные материалы по NoSQL и EF Core ........................199
Резюме.....................................................................................................................................................199
Глава 5. Многозадачность и конкурентность ........................................................................ 200
Процессы, потоки и задачи..............................................................................................................200
Асинхронное выполнение задач ....................................................................................................201
Синхронное выполнение нескольких действий................................................................202
Асинхронное выполнение нескольких действий с помощью задач ...........................204
Начальные задания......................................................................................................................205
Ожидание завершения задач....................................................................................................206
Использование методов wait в задачах.................................................................................206
Выполнение задач продолжения ............................................................................................207
Вложенные и дочерние задачи ................................................................................................208
Обертывание объектов в задачи..............................................................................................210
Синхронизация доступа к общим ресурсам ..............................................................................212
Доступ к ресурсу из нескольких потоков ............................................................................212
Применение взаимно исключающей блокировки к «раковине».................................214
Оператор блокировки.................................................................................................................215
Предотвращение взаимных блокировок..............................................................................216
Синхронизация событий...........................................................................................................217
Атомарность операций ЦП.......................................................................................................218
Другие типы синхронизации ...................................................................................................219
Конструкции async и await ..............................................................................................................220
Ускорение отклика консольных приложений ...................................................................220
Управление асинхронными потоками..................................................................................221
Ускорение отклика GUI-приложений..................................................................................222
Оптимизация масштабируемости веб-приложений и веб-сервисов..........................228
Распространенные типы с поддержкой многозадачности.............................................229
Оператор await в блоках catch.................................................................................................229
Практика и исследование.................................................................................................................229
Упражнение 5.1. Проверьте свои знания.............................................................................229
Упражнение 5.2. Дополнительная информация ...............................................................230
Упражнение 5.3. Узнайте больше о параллельном программировании...................230
Резюме.....................................................................................................................................................230
Глава 6. Популярные сторонние библиотеки........................................................................ 231
Наиболее популярные сторонние библиотеки.........................................................................231
О чем рассказывается в моих книгах ....................................................................................232
Работа с изображениями ..................................................................................................................233
Генерация полутоновых изображений .................................................................................233
Функционал ImageSharp для отрисовки и обработки изображений
в Интернете ....................................................................................................................................238
Обработка строк и чисел с помощью Humanizer.....................................................................238
Работа с текстом ...........................................................................................................................238
Преобразование регистра..........................................................................................................238
Преобразование пробелов.........................................................................................................239
Методы преобразования форм слов ......................................................................................240
Пример обработки текста в консольном приложении....................................................240
Работа с числами..........................................................................................................................244
Работа с датами и временем .....................................................................................................246
Журналирование с помощью Serilog ...........................................................................................248
Структурированные данные о событиях .............................................................................248
Приемники журналов Serilog...................................................................................................249
Журналирование в консоль и файл.......................................................................................249
Сопоставление объектов...................................................................................................................251
Определение моделей для конфигурации AutoMapper.................................................252
Определение сопоставлений для конфигурации AutoMapper ....................................254
Тестирование конфигурации AutoMapper..........................................................................255
Выполнение сопоставления в консольном приложении ...............................................257
Формулировка утверждений в модульном тестировании....................................................259
Формулировка утверждений для строковых значений..................................................259
Формулировка утверждений для коллекций и массивов..............................................260
Формулировка утверждений для дат и времени ..............................................................261
Проверка достоверности данных...................................................................................................262
Встроенные валидаторы ............................................................................................................262
Настройка валидации.................................................................................................................262
Уведомления валидации ...........................................................................................................263
Создание модели и валидатора ...............................................................................................263
Тестирование валидатора..........................................................................................................265
Проверка достоверности данных в ASP.NET Core ..........................................................268
Создание PDF-файлов......................................................................................................................269
QuestPDF на устройствах Mac с Apple Silicon ..................................................................269
Создание библиотек классов для генерации PDF-документов...................................269
Создание консольного приложения для формирования PDF-документов............272
Практика и исследование.................................................................................................................274
Упражнение 6.1. Проверьте свои знания.............................................................................274
Упражнение 6.2. Дополнительная информация ...............................................................275
Резюме.....................................................................................................................................................275
Глава 7. Дата, время и интернационализация ....................................................................... 276
Управление датами и временем.....................................................................................................276
Создание значений даты и времени.......................................................................................276
Форматирование значений даты и времени.......................................................................280
Вычисления даты и времени....................................................................................................283
Микросекунды и наносекунды................................................................................................284
Глобализация дат и времени ....................................................................................................285
Сложности перехода на летнее время (DST).....................................................................286
Локализация перечисления DayOfWeek.............................................................................287
Работа с датами и временем по отдельности......................................................................288
Получение информации о форматировании даты/времени.........................................289
Модульное тестирование с учетом времени.......................................................................290
Учет часовых поясов .NET...............................................................................................................294
Классы DateTime и TimeZoneInfo..........................................................................................295
Пример работы с классами DateTime и TimeZoneInfo ...................................................296
Применение культур..........................................................................................................................301
Определение и изменение текущей культуры...................................................................302
Временное использование инвариантной культуры .......................................................308
Локализация пользовательского интерфейса....................................................................309
Определение и загрузка ресурсов ..........................................................................................310
Тестирование глобализации и локализации ......................................................................313
Библиотека Noda Time ......................................................................................................................319
Важные понятия и значения по умолчанию в Noda Time..............................................320
Преобразование типов даты/времени Noda Time ............................................................322
Пример работы с Noda Time в консольном приложении...............................................322
Модульное тестирование и сериализация JSON с помощью Noda Time .................326
Практика и исследование.................................................................................................................326
Упражнение 7.1. Проверьте свои знания.............................................................................326
Упражнение 7.2. Дополнительная информация ...............................................................326
Упражнение 7.3. Уроки эксперта Джона Скита................................................................327
Резюме.....................................................................................................................................................327
Глава 8. Создание и защита веб-сервисов на основе минимальных API.......................... 328
Создание веб-сервисов на основе минимальных API в ASP.NET Core...........................328
Преимущества минимальных API .........................................................................................328
Маршрутизация в минимальных API...................................................................................329
Настройка параметров в минимальных API ......................................................................330
Возвращаемые значения............................................................................................................331
Документирование сервисов на основе минимальных API..........................................331
Настройка проекта веб-API в ASP.NET Core ....................................................................332
Тестирование веб-сервисов с помощью Swagger..............................................................338
Тестирование веб-сервисов в редакторе кода ....................................................................341
Исключение путей из документации OpenAPI.................................................................345
Создание шаблонного кода для минимальных API в Visual Studio 2022.................345
Управление междоменными запросами с помощью механизма CORS...........................346
Настройка HTTP-журналирования ......................................................................................347
Создание веб-страницы с клиентским JavaScript.............................................................348
Создание .NET-клиента .............................................................................................................352
Механизм CORS...........................................................................................................................356
Включение CORS для определенных конечных точек...................................................357
Другие политики CORS ............................................................................................................358
Защита от DoS-атак путем ограничения количества запросов...........................................358
Ограничение количества запросов с помощью пакета AspNetCoreRateLimit........359
Создание консольного клиента с ограничением скорости............................................363
Ограничение количества запросов в ASP.NET Core с помощью промежуточного ПО ...................................................................................................................368
Оптимизация производительности с помощью технологии Native AOT.......................368
Ограничения Native AOT..........................................................................................................369
Рефлексия и Native AOT...........................................................................................................370
Поддержка Native AOT в ASP.NET Core.............................................................................370
Требования к Native AOT .........................................................................................................371
Добавление Native AOT в проект...........................................................................................372
Включение сериализации JSON в Native AOT..................................................................372
Создание проекта Native AOT.................................................................................................372
Публикация проекта Native AOT...........................................................................................378
Работа с сервисами идентификации ............................................................................................381
Авторизация с помощью токена JWT Bearer.....................................................................382
Проверка подлинности клиентов сервисов с помощью JWT Bearer.........................382
Практика и исследование.................................................................................................................385
Упражнение 8.1. Проверьте свои знания.............................................................................385
Упражнение 8.2. Обзор философии дизайна Microsoft HTTP API ...........................386
Упражнение 8.3. Дополнительная информация ...............................................................386
Упражнение 8.4. Шаблоны проекта Auth0..........................................................................386
Резюме.....................................................................................................................................................386
Глава 9. Кэширование, очереди и отказоустойчивые фоновые сервисы ..................... 387
Архитектура сервисов .......................................................................................................................387
Самые медленные компоненты системы .............................................................................387
Время доступа к данным............................................................................................................388
Кэширование в ASP.NET Core.......................................................................................................389
Общие рекомендации по кэшированию...............................................................................389
Создание сервиса веб-API на основе контроллера...........................................................389
Кэширование объектов в оперативной памяти .................................................................395
Распределенное кэширование объектов ..............................................................................398
Новая абстракция для распределенного кэширования ..................................................402
HTTP-кэширование веб-ответов............................................................................................402
Повышение отказоустойчивости с помощью библиотеки Polly ........................................406
Паттерны Retry и Circuit Breaker...........................................................................................407
Определение и применение политик ....................................................................................407
Настройка интервалов между попытками ..........................................................................408
Применение политик к HTTP-клиентам.............................................................................409
Внесение в веб-сервис случайных ошибок..........................................................................409
Создание проекта MVC для вызова отказавшего веб-сервиса ....................................410
Реализация шаблона Retry для обработки временных сбоев.......................................415
Создание очередей с помощью RabbitMQ.................................................................................417
Настройка RabbitMQ с помощью Docker ...........................................................................419
Отправка сообщений в очередь с сайта MVC....................................................................421
Консольное приложение для обработки сообщений в очереди...................................425
Реализация фоновых сервисов с длительным временем работы.......................................430
Создание Worker Service ...........................................................................................................430
Обработка сообщений в очереди с помощью Worker Service ......................................433
Выполнение кода по расписанию...........................................................................................435
Создание сайта с функционалом Hangfire ..........................................................................438
Планирование задач с помощью Hangfire ...........................................................................443
Практика и исследование.................................................................................................................445
Упражнение 9.1. Проверьте свои знания.............................................................................446
Упражнение 9.2. Дополнительная информация ...............................................................446
Упражнение 9.3. Замените модель Distributed Memory Cache другой
реализацией распределенного кэша ......................................................................................446
Упражнение 9.4. Замените Hangfire на Quartz.NET........................................................447
Упражнение 9.5. Знакомство с шаблоном Reliable Web App .......................................447
Резюме.....................................................................................................................................................448
Глава 10. Создание бессерверных наносервисов с помощью Azure Functions........... 449
Платформа Azure Functions ............................................................................................................449
Триггеры и привязки Azure Functions..................................................................................450
Выражения NCRONTAB...........................................................................................................451
Версии и языки Azure Functions.............................................................................................455
Модели рабочих процессов Azure Functions......................................................................456
Тарифные планы Azure Functions..........................................................................................457
Требования к хранилищу Azure Storage ..............................................................................458
Локальное тестирование с помощью Azurite......................................................................458
Уровни авторизации Azure Functions...................................................................................459
Поддержка внедрения зависимостей в Azure Functions.................................................459
Установка Azure Functions Core Tools..................................................................................459
Создание проекта Azure Functions................................................................................................460
В Visual Studio 2022.....................................................................................................................460
В Visual Studio Code....................................................................................................................461
В терминале с помощью инструмента func .........................................................................462
Обзор проекта Azure Functions...............................................................................................462
Реализация функции ..................................................................................................................464
Тестирование функции..............................................................................................................466
Реакция на триггеры таймера и ресурсов...................................................................................467
Реализация функции с триггером в форме таймера........................................................468
Проверка функции.......................................................................................................................471
Реализация функции для работы с очередями и BLOB-объектами..........................474
Тестирование функции..............................................................................................................480
Публикация проекта Azure Functions в облаке ........................................................................482
Публикация в Visual Studio 2022 ...........................................................................................483
Публикация в Visual Studio Code...........................................................................................485
Удаление ресурсов Azure Functions .............................................................................................486
Практика и исследование.................................................................................................................486
Упражнение 10.1. Проверьте свои знания...........................................................................486
Упражнение 10.2. Дополнительная информация.............................................................487
Резюме.....................................................................................................................................................487
Глава 11. Трансляция сообщений в реальном времени с помощью SignalR .............. 488
Знакомство с SignalR.........................................................................................................................488
Развитие связи в реальном времени......................................................................................488
AJAX .................................................................................................................................................489
WebSocket.......................................................................................................................................489
SignalR..............................................................................................................................................489
Сервис Azure SignalR..................................................................................................................490
Разработка сигнатур методов...................................................................................................490
Создание сервиса живого общения в SignalR...........................................................................491
Определение общих моделей...................................................................................................492
Включение центра SignalR на сервере..................................................................................493
Разработка веб-клиента на JavaScript в SignalR ......................................................................497
Добавление на сайт страницы чата ........................................................................................498
Тестирование функции чата.....................................................................................................501
Создание консольного клиента на .NET.....................................................................................505
Создание .NET-клиента для SignalR.....................................................................................505
Тестирование консольного клиента .NET...........................................................................506
Потоковая передача данных с помощью SignalR.....................................................................507
Определение центра для потоковой передачи...................................................................508
Создание .NET-клиента для потоковой передачи............................................................509
Проверка потокового сервиса и клиента .............................................................................511
Практика и исследование.................................................................................................................512
Упражнение 11.1. Проверьте свои знания...........................................................................513
Упражнение 11.2. Дополнительная информация.............................................................513
Резюме.....................................................................................................................................................513
Глава 12. Объединение источников данных с помощью GraphQL................................ 514
Основы GraphQL ................................................................................................................................514
Формат документа GraphQL-запроса...................................................................................515
Другие возможности GraphQL................................................................................................516
Платформа ChilliCream GraphQL..........................................................................................516
Создание сервиса с поддержкой GraphQL.................................................................................517
Определение схемы GraphQL для проекта с приветствием .........................................518
Составление и выполнение GraphQL-запросов................................................................521
Именование GraphQL-запросов и операций......................................................................522
Оформление полей в GraphQL ...............................................................................................522
Определение GraphQL-запросов для моделей EF Core........................................................523
Добавление поддержки EF Core .............................................................................................523
GraphQL-запросы к БД Northwind........................................................................................525
Реализация пагинации ...............................................................................................................532
Реализация фильтрации............................................................................................................535
Реализация сортировки .............................................................................................................539
Создание .NET-клиентов для GraphQL-сервиса .....................................................................539
Форматы GraphQL-запросов...................................................................................................540
Формат GraphQL-ответов.........................................................................................................540
Тестирование GraphQL с помощью REST-клиента ........................................................540
GraphQL-клиент на основе ASP.NET Core MVC.............................................................543
Тестирование .NET-клиента ....................................................................................................550
Создание консольного клиента с помощью Strawberry Shake .....................................551
Реализация мутаций GraphQL.......................................................................................................556
Добавление мутаций в GraphQL-сервис..............................................................................556
Исследование мутации для добавления товара ................................................................558
Реализация мутаций для обновления и удаления............................................................560
Реализация подписок в GraphQL..................................................................................................566
Добавление подписки и темы в GraphQL-сервис.............................................................566
Тестирование подписки на тему.............................................................................................568
Практика и исследование.................................................................................................................570
Упражнение 12.1. Проверьте свои знания...........................................................................570
Упражнение 12.2. Дополнительная информация.............................................................570
Упражнение 12.3. Создание .NET-клиентов ......................................................................571
Резюме.....................................................................................................................................................571
Глава 13. Создание эффективных микросервисов с помощью gRPC........................... 572
Обзор фреймворка gRPC.................................................................................................................573
Принцип работы gRPC ..............................................................................................................573
Определение контрактов gRPC в .proto-файлах...............................................................573
Преимущества gRPC ..................................................................................................................576
Ограничения gRPC .....................................................................................................................576
Типы методов gRPC....................................................................................................................576
gRPC-пакеты корпорации Microsoft.....................................................................................577
Создание сервиса и клиента gRPC ...............................................................................................577
Создание gRPC-сервиса Hello World ...................................................................................577
Конфигурация файлов проекта...............................................................................................582
Создание gRPC-клиента Hello World...................................................................................582
Тестирование сервиса и клиента gRPC................................................................................586
Реализация gRPC в модели EF Core............................................................................................587
Создание gRPC-сервиса ............................................................................................................587
Реализация gRPC-клиента .......................................................................................................590
Улучшение gRPC-сервиса ...............................................................................................................594
Улучшение gRPC-сервиса с помощью публикации Native AOT................................594
Работа с метаданными запроса и ответа...............................................................................598
Ограничение срока выполнения в рамках повышения надежности..........................599
Обработка дат, времени и десятичных чисел............................................................................602
Определение пользовательского типа для десятичных чисел,
обработка времени и дат ............................................................................................................603
Реализация gRPC-сервисов для работы с товарами и сотрудниками.......................607
Создание gRPC-клиентов для вызова сервисов................................................................607
Проверка обработки десятичных дробей, дат и байтов ..................................................610
Перехватчики gRPC и обработка ошибок..................................................................................612
Добавление перехватчика на стороне клиента ..................................................................612
Обработка исключений и временных сбоев .......................................................................613
Транскодирование JSON в gRPC..................................................................................................616
Включение транскодирования JSON....................................................................................616
Проверка транскодирования JSON .......................................................................................618
Сравнение с gRPC-Web.............................................................................................................619
Практика и исследование.................................................................................................................620
Упражнение 13.1. Проверьте свои знания...........................................................................620
Упражнение 13.2. Сравнение сервисов gRPC с API HTTP..........................................620
Упражнение 13.3. Дополнительная информация.............................................................620
Резюме.....................................................................................................................................................621
Глава 14. Создание пользовательских веб-интерфейсов с помощью
ASP.NET Core ................................................................................................................................... 622
Настройка сайта MVC ASP.NET Core ........................................................................................622
Создание сайта MVC ASP.NET Core....................................................................................623
Обзор стандартного сайта MVC ASP.NET Core ...............................................................625
Регистрация посетителей..........................................................................................................626
Структура проекта сайта MVC ...............................................................................................626
Ссылка на библиотеку классов EF Core и регистрация
контекста данных .........................................................................................................................629
Определение пользовательских веб-интерфейсов с помощью
представлений Razor..........................................................................................................................629
Обзор представлений Razor......................................................................................................629
Создание прототипов с помощью Bootstrap.......................................................................632
Синтаксис и выражения Razor................................................................................................633
HTML-хелперы.............................................................................................................................634
Строго типизированное представление Razor...................................................................635
Локализация и глобализация в ASP.NET Core........................................................................638
Создание файлов ресурсов .......................................................................................................638
Изменение представлений Razor с помощью внедряемого сервиса
локализатора представлений ...................................................................................................641
Заголовок Accept-Language ......................................................................................................644
Применение тег-хелперов к HTML-элементам .......................................................................645
Сравнение HTML-хелперов и тег-хелперов.......................................................................645
Тег-хелпер привязки...................................................................................................................646
Тег-хелпер кэша............................................................................................................................651
Тег-хелпер среды..........................................................................................................................653
Кэширование и тег-хелперы.....................................................................................................655
Тег-хелперы формы.....................................................................................................................656
Кэширование выходных данных ...................................................................................................658
Конечные точки кэширования выходных данных ...........................................................659
Кэширование выходных данных представления MVC..................................................660
Практика и исследование.................................................................................................................662
Упражнение 14.1. Проверьте свои знания...........................................................................662
Упражнение 14.2. Создание пользовательских интерфейсов с помощью
библиотеки Bootstrap..................................................................................................................662
Упражнение 14.3. Дополнительная информация.............................................................663
Резюме.....................................................................................................................................................663
Глава 15. Создание веб-компонентов с помощью Blazor ................................................... 664
Знакомство с Blazor............................................................................................................................665
Модели размещения Blazor......................................................................................................665
Компоненты Blazor......................................................................................................................666
Маршрутизация к страницам-компонентам ......................................................................667
Передача параметров маршрута..............................................................................................669
Установка параметров из строки запроса............................................................................669
Ограничения маршрута .............................................................................................................669
Базовые классы компонентов..................................................................................................670
Макеты Blazor................................................................................................................................671
Настройка маршрутов Blazor к компонентам страницы................................................672
Изоляция CSS и JavaScript.......................................................................................................672
Создание компонентов Blazor.........................................................................................................673
Создание проекта Blazor из шаблона ....................................................................................673
Подключение значков Bootstrap.............................................................................................678
Создание ссылок на библиотеку классов EF Core и регистрация контекста данных .........................................................................................................................679
Статический Blazor-компонент с визуализацией данных на стороне сервера ........680
Blazor-компонент с интерактивностью на стороне сервера ..........................................681
Blazor-компонент индикатора выполнения........................................................................683
Blazor-компонент диалогового окна......................................................................................684
Blazor-компонент уведомлений ..............................................................................................688
Создание компонента данных Blazor...........................................................................................690
Создание компонента .................................................................................................................691
Превращение компонента в маршрутизируемую страницу..........................................692
Получение данных для компонента через веб-сервис ....................................................693
Получение данных в компонент через вызов веб-сервиса.............................................696
Практика и исследование.................................................................................................................699
Упражнение 15.1. Проверьте свои знания...........................................................................699
Упражнение 15.2. Создание компонентов Blazor .............................................................699
Упражнение 15.3. Создание сервиса для работы с IndexedDB....................................700
Упражнение 15.4. Дополнительная информация.............................................................700
Резюме.....................................................................................................................................................700
Глава 16. Создание мобильных и классических приложений с помощью .NET MAUI ................................................................................................................. 701
Обзор XAML.........................................................................................................................................702
Оптимизация кода с помощью XAML..................................................................................702
Пространства имен .NET MAUI .............................................................................................704
Преобразователи типов..............................................................................................................705
Выбор элементов управления .NET MAUI.........................................................................705
Расширения разметки в XAML...............................................................................................706
Обзор .NET MAUI ..............................................................................................................................707
Поддержка .NET MAUI и Xamarin ........................................................................................708
Средства разработки для мобильных и облачных проектов.........................................708
Установка рабочих нагрузок .NET MAUI вручную.........................................................709
Категории компонентов пользовательского интерфейса .NET MAUI .....................711
Обработчики .NET MAUI.........................................................................................................712
Разработка платформенно-специфичного кода ................................................................713
Разработка мобильных и классических приложений с помощью .NET MAUI ............714
Виртуализация Android-устройства для локального тестирования приложений....................................................................................................................................714
Включение режима разработчика Windows.......................................................................715
Создание проекта .NET MAUI ................................................................................................716
Добавление навигационной оболочки и страниц с дополнительным содержимым...................................................................................................................................719
Внедрение дополнительных страниц с содержимым......................................................725
Управление общими ресурсами.....................................................................................................727
Определение общих ресурсов в приложении.....................................................................727
Обращение к общим ресурсам.................................................................................................728
Динамическое изменение общих ресурсов .........................................................................729
Привязка данных ................................................................................................................................736
Привязка к элементам................................................................................................................736
Практика и исследование.................................................................................................................738
Упражнение 16.1. Проверьте свои знания...........................................................................738
Упражнение 16.2. Дополнительная информация.............................................................739
Резюме.....................................................................................................................................................739
Послесловие....................................................................................................................................... 740
Облачно-нативная разработка с .NET Aspire............................................................................740
Ознакомление с проектом Survey Project Challenge ..............................................................741
Следующие шаги на пути изучения C# и .NET .......................................................................741
Сопутствующие книги для продолжения обучения........................................................742
Приложение. Ответы к разделам «Проверьте свои знания»............................................ 744

С новым изданием «.NET 8: приложения и сервисы» вы сможете поднять свои навыки владения C# и .NET на новый уровень.

В книге описаны практические приемы использования различных технологий, включая Web API, gRPC, GraphQL и SignalR, что выделяет ее среди других источников. Она познакомит вас с новой унифицированной моделью Blazor Full Stack и расскажет, как использовать .NET MAUI для разработки мобильных и десктопных приложений.

В новом издании представлены последние достижения, включая бесшовную реализацию веб-сервисов со встроенной поддержкой Ahead-of-Time (AOT) ADO. NET SqlClient. Помимо других популярных библиотек, в книге рассматриваются Humanizer и Noda Time. Совершенно новая глава расскажет об архитектуре, кэшировании, организации очередей и приемах построения надежных фоновых сервисов.

Обретите глубокие знания и создайте многофункциональные и эффективные приложения.

Вы научитесь:

  • узнавать, как хранить данные локально и в облаке и управлять ими с помощью SQL Server и Cosmos DB;
  • работать с такими технологиями, как gRPC и GraphQL;
  • научитесь использовать ADO.NET SqlClient для реализации веб-сервисов со встроенной поддержкой AOT;
  • видеть приемы использования Dapper для повышения производительности по сравнению с EF Core;
  • выяснять, как внедрять популярные сторонние библиотеки, такие как Serilog, FluentValidation, Humanizer и Noda Time;
  • исследовать новую унифицированную модель хостинга Blazor Full Stack.

Структура книги
Введение
Глава 1 посвящена настройке среды разработки и концепциям использования приложений Visual Studio 2022, Visual Studio Code и JetBrains Rider. Вы также узнаете, как получить справочные сведения и связаться со мной (автором этой книги) в целях решения проблем или отправки отзыва для улучшения книги.

Данные
Глава 2 посвящена настройке SQL Server под Windows и в облаке Azure с помощью SQL Database. Затем вы создадите демонстрационную БД вымышленной организации Northwind. С помощью библиотек ADO.NET (Microsoft.Data.SqlClient) вы научитесь писать код низкоуровневого доступа для достижения максимальной производительности, а также упрощать разработку посредством Dapper — технологии преобразования объектов в данные.

Глава 3 рассказывает об использовании технологии преобразования объектов в данные более высокого уровня — Entity Framework Core (EF Core). Вы научитесь создавать библиотеки классов, определяющие модель EF Core, для работы с БД Northwind, созданной в главе 2. Эти библиотеки классов используются во многих последующих главах.

Глава 4 посвящена нативному облачному NoSQL-хранилищу данных Azure Cosmos DB. Вы узнаете, как считывать и записывать данные с помощью нативного API.

Библиотеки
В главе 5 рассказывается о повышении производительности, масштабируемости и продуктивности работы пользователей посредством одновременного выполнения нескольких действий с помощью потоков и задач.

В главе 6 рассматриваются вопросы решения таких распространенных практических задач, как форматирование текста и чисел с помощью инструмента Humanizer, обработка изображений в ImageSharp, логирование с библиотекой Serilog, преобразование объектов с помощью AutoMapper, генерация модульных тестов в FluentAssertions, проверка данных посредством FluentValidation и создание PDF-документов в библиотеке QuestPDF.

В главе 7 рассказывается о способах решения таких популярных задач, как обработка дат и времени, работа с часовыми поясами, а также глобализация и локализация данных и пользовательского интерфейса приложения в рамках интернационализации. Помимо встроенных типов данных для работы с датами и временем, мы рассмотрим гораздо более совершенную стороннюю библиотеку Noda Time.

Сервисы
В главе 8 представлен наипростейший способ создания веб-сервисов на основе минимальных API в ASP.NET Core. Благодаря им отпадает необходимость в использовании классов-контроллеров. Вы узнаете, как сократить время запуска и количество требуемых ресурсов, используя инструментарий публикации Native AOT. Затем мы рассмотрим, как защитить и обезопасить веб-сервис, ограничивая количество запросов, а также используя технологии CORS, проверки подлинности и авторизации. Вы изучите способы тестирования веб-сервиса в новом HTTP-редакторе, встроенном в программу Visual Studio 2022, и с помощью расширения REST Client для Visual Studio Code.

В главе 9 речь пойдет о проектировании сервисов и добавлении в них средств повышения масштабируемости и надежности, таких как кэширование и очереди. Вы также научитесь справляться с временными сбоями и решать длительные задачи с помощью фоновых сервисов.

Глава 10 знакомит с сервисом Azure Functions, настраиваемым для работы исключительно за счет ресурсов сервера. При инициации некоего действия, скажем отправки сообщения в очередь, загрузки файла в хранилище или с указанной периодичностью запускается соответствующий наносервис.

В главе 11 рассматривается SignalR — технология для создания многопользовательских сервисов, позволяющих рассылать сообщения всем или определенным клиентам в реальном времени, например системам уведомлений и дашбордам с регулярно обновляемой информацией, в частности с котировками акций.

В главе 12 рассказывается о создании сервисов, обеспечивающих удобный единый канал агрегации данных из нескольких источников. Для реализации сервиса вы воспользуетесь платформой ChilliCream GraphQL, содержащей сервер Hot Chocolate. Новое в этом издании книги — реализация функций пагинации, фильтрации, сортировки и подписки.

Глава 13 посвящена сборке эффективных gRPC-микросервисов. Вы узнаете о .proto-файлах для конфигурации сервисных контрактов и бинарном формате Protobuf в рамках сериализации сообщений. Путем транскодирования gRPC JSON вы реализуете поддержку gRPC-сервисов в браузерах. В этом издании я описал приемы оптимизации запуска и уменьшения затрат памяти gRPC-сервиса с помощью инструментария публикации Native AOT, процесс работы с пользовательскими типами данных, в том числе десятичными значениями, а также способы реализации перехватчиков и обработчиков сбоев.

Приложения
Глава 14 посвящена созданию пользовательских веб-интерфейсов с помощью фреймворка MVC на платформе ASP.NET Core. Вы узнаете о синтаксисе Razor, тег-хелперах и фреймворке Bootstrap для быстрого прототипирования пользовательских интерфейсов.

В главе 15 вы займетесь разработкой компонентов пользовательского интерфейса с помощью нового унифицированного полностекового хостинга Blazor, представленного в .NET 8. Теперь допускается персональная настройка компонентов Blazor для выполнения приложения на сторонах клиента и сервера одновременно. На случай, когда необходимо использовать такие объекты браузера, как локальное хранилище, вы узнаете о JS-взаимодействии.

Глава 16 рассматривает процессы разработки кросс-платформенных мобильных и классических приложений под системы Android, iOS, macOS и Windows. Вы познакомитесь с языком XAML, используемым для конфигурации графического пользовательского интерфейса приложения.

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


Похожее:

Список отзывов:

Нет отзывов к книге.