ASP.NET Core MVC с примерами на C#
Разработка веб-приложений.
Адам Фримен «ASP.NET Core MVC с примерами на C# для профессионалов» Диалектика, 2017 год, 992 стр., 6-е изд. ISBN 978-5-9908910-4-3 (67,7 мб. pdf)
Эта книга состоит из двух частей, которые тематически связаны между собой.
Первая часть раскрывает всю структуру платформы, рассматривая ASP.NET Core MVC в контексте разработки веб-приложений. Объясняются преимущества и практическое влияние паттерна МVС, рассмотрен способ, которым инфраструктура ASP.NET Core MVC встраивается в современную разработку веб-приложений, приводится описание инструментов и средств языка C#, необходимых при работе с ASP.NEТ Core МVС.
Вторая часть рассматривает работу встроенных средств ASP.NET Core MVC, при помощи которых создавалось приложение SportsStore. Показана работа всех инструментов, объясняется их роль и описаны доступные варианты конфигурирования и настройки. Представленное издание переработано и расширено с целью описания инфраструктуры ASP.NET Core МVС, которая отражает полную смену способа поддержки разработки веб-приложений компанией Microsoft. Для профессиональных разработчиков.
Содержание.
Часть I. Введение в инфраструктуру ASP.NET Core MVC
Глава 1. Основы ASP. NET Core MVC
История развития ASP. NET Core MVC 20
ASP.NET Web Fbrms 21
Первоначальная инфраструктура MVC Framework 22
Обзор ASP.NETCore 23
Основные преимущества ASP.NET Core MVC 24
Архитектура MVC 24
Расширяемость 24
Жесткий контроль над HTML и HTTP 25
Тестируемость 25
Мощная система маршрутизации 25
Современный API-интерфейс 26
Межплатформеиная природа 26
Инфраструктура ASP. NET Core MVC имеет открытый код 27
Что необходимо знать? 27
Какова структура книги? 27
Часть I. Введение в инфраструктуру ASP.NET Core MVC 27
Часть II. Подробные сведения об инфраструктуре ASP.NET Core MVC 28
Что нового в этом издании? 28
Ifte можно получить код примеров? 28
Резюме 28
Глава 2. Ваше первое приложение MVC
Установка Visual Studio 29
Создание нового проекта ASP.NET Core MVC 31
Добавление первого контроллера 33
Понятие маршрутов 36
Визуализация веб-страниц 37
Создание и визуализация представления 37
Добавление динамического вывода 40
Создание простого приложения для ввода данных 42
Предварительная настройка 42
Проектирование модели данных 43
Создание второго действия и строго типизированного представления 44
Ссылка на методы действий 46
Построение формы 47
Получение данных формы 49
Добавление проверки достоверности 56
Стилизация содержимого 61
Резюме 67
Глава 3. Паттерн MVC, проекты и соглашения
История создания МVС 68
Особенности паттерна MVC 68
Понятие моделей 69
Понятие контроллеров 70
Понятие представлений 70
Реализация MVC в ASP.NET Core 70
Сравнение MVC с другими паттернами 71
Паттерн интеллектуального пользовательского интерфейса 71
Проекты ASP.NET Core MVC 75
Создание проекта 76
Соглашения в проекте MVC 79
Резюме 81
Глава 4. Важные функциональные возможности языка C#
Подготовка проекта для примера 83
Включение ASP. NET Core MVC 84
Создание компонентов приложения MVC 85
Использование null -условной операции 87
Связывание в цепочки null-условных операций 88
Комбинирование null-условной операции и операции объединения с null 89
Использование автоматически реализуемых свойств 90
Использование инициализаторов автоматически реализуемых свойств 91
Создание автоматически реализуемых свойств только для чтения 92
Использование интерполяции строк 93
Использование инициализаторов объектов и коллекций 94
Использование инициализатора индексированной коллекции 96
Использование расширяющих методов 97
Применение расширяющих методов к интерфейсу 98
Создание фильтрующих расширяющих методов 100
Использование лямбда-выражений 101
Определение функций 103
Использование методов и свойств в форме лямбда-выражений 105
Использование автоматического выведения типа и анонимных типов 107
Использование анонимных типов 108
Использование асинхронных методов 109
Работа с задачами напрямую 110
Применение ключевых слов async и await til
Получение имен 113
Резюме 114
Глава 5. Работа с Razor
Подготовка проекта для примера 116
Определение модели 117
Создание контроллера 117
Создание представления 118
Работа с объектом модели 119
Использование файла импортирования представлений 121
Работа с компоновками 123
Создание компоновки 123
Применение компоновки 125
Использование файла запуска представления 126
Использование выражений Razor 128
Вставка значений данных 129
Установка значений атрибутов 130
Использование условных операторов 131
Проход по содержимому массивов и коллекций 133
Резюме 135
Глава 6. Работа с Visual Studio
Подготовка проекта для примера 137
Создание модели 137
Создание контроллера и представления 139
Управление программными пакетами 141
Инструмент NuGet 141
Инструмент Bower 143
Итеративная разработка 147
Внесение изменений в представления Razor 147
Внесение изменений в классы C# 148
Использование средства Browser Link 156
Подготовка файлов JavaScript и CSS для развертывания 161
Включение доставки статического содержимого 161
Добавление в проект статического содержимого 162
Обновление представления 164
Пакетирование и минификация в приложениях MVC 166
Резюме 169
Глава 7. Модульное тестирование приложений MVC
Подготовка проекта для примера 171
Включение встроенных дескрипторных вспомогательных классов 171
Добавление действий к контроллеру 172
Создание формы для ввода данных 172
Обновление представления Index 173
Модульное тестирование приложений MVC 174
Создание проекта модульного тестирования 175
Изолирование компонентов для модульного тестирования 182
Улучшение модульных тестов 190
Параметризация модульного теста 190
Улучшение фиктивных реализаций 194
Резюме 200
Глава 8. SportsStore: реальное приложение
Начало работы 202
Создание проекта MVC 202
Создание проекта модульного тестирования 207
Проверка и запуск приложения 209
Начало работы с моделью предметной области 209
Создание хранилища 210
Создание фиктивного хранилища 210
Регистрация службы хранилища 211
Отображение списка товаров 212
Добавление контроллера 213
Добавление и конфигурирование представления 215
Установка стандартного маршрута 216
Запуск приложения 217
Подготовка базы данных 218
Установка Entity Framework Core 219
Создание классов базы данных 220
Создание класса хранилища 221
Определение строки подключения 222
Конфигурирование приложения 223
Создание и применение миграции базы данных 225
Добавление поддержки разбиения на страницы 226
Отображение ссылок на страницы 228
Улучшение URL 236
Стилизация содержимого 237
Установка пакета Bootstrap 238
Применение стилей Bootstrap к компоновке 238
Создание частичного представления 241
Резюме 242
Глава 9. SportsStore: навигация
Добавление навигационных элементов управления 244
Фильтрация списка товаров 244
Улучшение схемы URL 248
Построение мешо навигации по категориям 252
Корректировка счетчика страниц 259
Построение корзины для покупок 262
Определение модели корзины 262
Создание кнопок добавления в корзину 266
Включение поддержки сеансов 267
Реализация контроллера для корзины 269
Отображение содержимого корзины 272
Резюме 275
Глава 10. SportsStore: завершение построения корзины для покупок
Усовершенствование модели корзины с помощью службы 276
Создание класса корзины, осведомленного о хранилище 276
Регистрация службы 277
Упрощение контроллера Cart 278
Завершение функциональности корзины 279
Удаление элементов из корзины 279
Добавление виджета с итоговой информацией по корзине 281
Отправка заказов 284
Создание класса модели 284
Добавление реализации процесса оплаты 285
Реализация обработки заказов 287
Завершение построения контроллера Order 291
Отображение сообщений об ошибках проверки достоверности 295
Отображение итоговой страницы 296
Резюме 297
Глава 11. SportsStore: администрирование
Управление заказами 298
Расширение модели 298
Добавление действий и представления 299
Добавление средств управления каталогом 302
Создание контроллера CRUD 303
Реализация представления списка 304
Редактирование сведений о товарах 306
Создание новых товаров 320
Удаление товаров 321
Резюме 324
Глава 12. SportsStore: защита и развертывание
Защита средств администрирования 325
Добавление в проект пакета Identity 325
Создание базы данных Identity 326
Применение базовой политики авторизации 330
Создание контроллера Account и представлений 332
Тестирование политики безопасности 336
Развертывание приложения 336
Создание баз данных 337
Подготовка приложения 338
Применение миграций баз данных 343
Процесс развертывания приложения 343
Резюме 346
Глава 13. Работа с Visual Studio Code
Настройка среды разработки 348
Установка Node.Js 349
Проверка установки Node 350
Установка Git 350
Проверка установки Git 351
Установка Yeoman, Bower и Gulp 35 ]
Установка .NET Core 351
Проверка установки .NET Core 352
Установка Visual Studio Code 353
Проверка установки Visual Studio Code 353
Установка расширения C# для Visual Studio Code 353
Создание проекта ASP.NET Core 355
Подготовка проекта с помощью Visual Studio Code 356
Добавление в проект пакетов NuGet 357
Добавление в проект пакетов клиентской стороны 358
Конфигурирование приложения 359
Построение и запуск проекта 359
Воссоздание приложения Partylnvites 360
Создание модели и хранилища 360
Создание базы данных 363
Создание контроллеров и представлений 365
Модульное тестирование в Visual Studio Code 369
Конфигурирование приложения 369
Создание модульного теста 371
Прогон тестов 371
Резюме 372
Часть II. Подробные сведения об инфраструктуре ASP.NET Core MVC
Глава 14. Конфигурирование приложений
Подготовка проекта для примера 376
Конфигурационные файлы JSON 377
Конфигурирование решения 378
Конфигурирование проекта 380
Класс Program 383
Класс Startup 385
Особенности использования класса Startup 386
Службы ASP. NETT 387
Промежуточное программное обеспечение ASP.NET 390
Особенности вызова метода Configure () 400
Добавление оставшихся компонентов промежуточного программного обеспечения 408
Использование данных конфигурации 413
Конфигурирование служб MVC 419
Работа со сложными конфигурациями 421
Создание разных внешних конфигурационных файлов 421
Создание разных методов конфигурирования 422
Создание разных классов конфигурирования 424
Резюме 425
Глава 15. Маршрутизация URL
Подготовка проекта для примера 428
Создание класса модели 429
Создание контроллеров 430
Создание представления 431
Введение в шаблоны URL 432
Создание и регистрация простого маршрута 434
Определение стандартных значений 435
Определение встроенных стандартных значений 436
Использование статических сегментов URL 438
Определение специальных переменных сегментов 442
Использование специальных переменных в качестве параметров метода действия 445
Определение необязательных сегментов URL 446
Определение маршрутов переменной длины 448
Ограничение маршрутов 451
Ограничение маршрута с использованием регулярного выражения 454
Использование ограничений на основе типов и значений 455
Объединение ограничений 456
Определение специального ограничения 458
Использование маршрутизации с помощью атрибутов 460
Подготовка для маршрутизации с помощью атрибутов 460
Применение маршрутизации с помощью атрибутов 461
Применение ограничений к маршрутам 463
Резюме 464
Глава 16. Дополнительные возможности маршрутизации
Подготовка проекта для примера 467
Генерация исходящих URL в представлениях 468
Генерирование исходящих ссылок 468
Генерация URL (без ссылок) 478
Генерирование URL в методах действий 478
Настройка системы маршрутизации 479
Изменение конфигурации системы маршрутизации 479
Создание специального класса маршрута 481
Применение специального класса маршрута 484
Маршрутизация на контроллеры MVC 485
Работа с областями 491
Создание области 492
Создание маршрута для области 492
Заполнение области 493
Генерирование ссылок на действия в областях 496
Полезные советы относительно схемы URL 497
Делайте URL чистыми и понятными человеку 497
GET и POST: выбор правильного запроса 499
Резюме 499
Глава 17. Контроллеры и действия
Под готовка проекта для примера 501
Подготовка представлений 503
Понятие контроллеров 505
Создание контроллеров 506
Создание контроллеров РОСО 506
Использование базового класса Controller 508
Получение данных контекста 509
Получение данных из объектов контекста 510
Использование параметров метода действия 514
генерирование ответа 516
генерирование ответа с использованием объекта контекста 516
Понятие результатов действий 517
генерирование HTML-ответа 520
Передача данных из метода действия в представление 523
Выполнение перенаправления 528
Возвращение разных типов содержимого 535
Реагирование с помощью содержимого файлов 538
Возвращение ошибок и кодов HTTP 540
Другие классы результатов действий 542
Резюме 542
Глава 18. Внедрение зависимостей
Подготовка проекта для примера 544
Создание модели и хранилища 545
Создание контроллера и представления 547
Создание проекта модульного тестирования 548
Создание слабо связанных компонентов 549
Исследование сильно связанных компонентов 550
Введение в средство внедрения зависимостей ASP.NET 556
Подготовка к внедрению зависимостей 556
Конфигурирование поставщика служб 558
Модульное тестирование контроллера с зависимостью 560
Использование цепочек зависимостей 560
Использование внедрения зависимостей для конкретных типов 563
Жизненные циклы служб 565
Использование переходного жизненного цикла 566
Использование жизненного цикла, ограниченного областью действия 570
Использование жизненного цикла одиночки 571
Использование внедрения в действия 572
Использование атрибутов внедрения в свойства 573
Запрашивание объекта реализации вручную 574
Резюме 575
Глава 19. Фильтры
Подготовка проекта для примера 577
Включение SSL 579
Создание контроллера и представления 579
Использование фильтров 581
Понятие фильтров 584
Получение данных контекста 585
Использование фильтров авторизации 585
Создание фильтра авторизации 586
Использование фильтров действий 588
Создание фильтра действий 590
Создание асинхронного фильтра действий 591
Использование фильтров результатов 592
Создание фильтра результатов 593
Создание асинхронного фильтра результатов 595
Создание гибридного фильтра действий/результатов 596
Использование фильтров исключений 598
Создание фильтра исключений 599
Использование внедрения зависимостей для фильтров 600
Распознавание зависимостей в фильтрах 601
Управление жизненными циклами фильтров 605
Создание глобальных фильтров 608
Порядок применения фильтров и его изменение 610
Изменения порядка применения фильтров 612
Резюме 613
Глава 20. Контроллеры API
Подготовка проекта для примера 615
Создание модели и хранилища 615
Создание контроллера и представлений 617
Конфигурирование приложения 619
Роль контроллеров REST 621
П роблема скорости 621
Проблема эффективности 622
Проблема открытости 622
Введение в REST и контроллеры API 623
Создание контроллера API 623
Тестирование контроллера API 628
Использование контроллера API в браузере 631
Форматирование содержимого 634
Стандартная политика содержимого 635
Согласование содержимого 636
Указание формата данных для действия 639
Получение формата данных из маршрута или строки запроса 639
Включение полного согласования содержимого 641
Получение разных форматов данных 643
Резюме 643
Глава 21. Представления
Подготовка проекта для примера 645
Создание специального механизма визуализации 647
Создание специальной реализации интерфейса IView 649
Создание реализации интерфейса IViewEngine 650
Регистрация специального механизма визуализации 651
Тестирование механизма визуализации 652
Работа с механизмом Razor 654
Подготовка проекта для примера 654
Прояснение представлений Razor 656
Добавление динамического содержимого к представлению Razor 660
Использование разделов компоновки 661
Использование частичных представлений 666
Добавление содержимого JSON в представления 669
Конфигурирование механизма Razor 671
Расширители местоположений представлений 672
Резюме 677
Глава 22. Компоненты представлений
Подготовка проекта для примера 679
Создание моделей и хранилищ 680
Создание контроллера и представлений 682
Конфигурирование приложения 685
Понятие компонентов представлений 686
Создание компонента представления 686
Создание компонентов представлений РОСО 686
Наследование от базового класса ViewComponent 688
Понятие результатов компонентов представлений 690
Получение данных контекста 695
Создание асинхронных компонентов представлений 701
Создание гибридных компонентов контроллеров/представлений 703
Создание гибридных представлений 704
Применение гибридного класса 706
Резюме 707
Глава 23. Дескрипторные вспомогательные классы
Подготовка проекта для примера 709
Создание модели и хранилища 710
Создание контроллера, компоновки и представлений 711
Конфигурирование приложения 713
Создание дескрипторного вспомогательного класса 715
Определение дескрипторного вспомогательного класса 715
Регистрация дескрипторных вспомогательных классов 719
Использование дескрипторного вспомогательного класса 719
Управление областью действия дескрипторного вспомогательного класса 721
Усовершенствованные возможности дескрипторных вспомогательных классов 726
Создание сокращающих элементов 726
Вставка содержимого перед и после элементов 728
Получение данных контекста представления и использование внедрения зависимостей 732
Работа с моделью представления 734
Согласование дескрипторных вспомогательных классов 736
Подавление выходного элемента 738
Резюме 740
Глава 24. Использование дескрипторных вспомогательных классов для форм
Подготовка проекта для примера 743
Изменение регистрации дескрипторных вспомогательных классов 743
Переустановка представлений и компоновки 743
Работа с элементами form 745
Установка цели формы 746
Использование средства противодействия подделке 746
Работа с элементами input 749
Конфигурирование элементов input 749
Форматирование значений данных 751
Работа с элементами label 754
Работа с элементами select и option 756
Использование источника данных для заполнения элемента select 758
генерирование элементов opt ion из перечисления 758
Работа с элементами textarea 763
Дескрипторные вспомогательные классы для проверки достоверности форм 764
Резюме 765
Глава 25. Использование других встроенных дескрипторных вспомогательных классов
Подготовка проекта для примера 767
Использование вспомогательного класса для среды размещения 768
Использование вспомогательных классов для JavaScript и CSS 769
Управление файлами JavaScript 769
Управление таблицами стилей CSS 778
Работа с якорными элементами 781
Работа с элементами img 782
Использование кеша данных 783
Установка времени истечения для кеша 786
Использование вариаций кеша 788
Использование URL. относительных к приложению 789
Резюме 792
Глава 26. Привязка моделей
Подготовка проекта для примера 794
Создание модели и хранилища 795
Создание контроллера и представления 796
Конфигурирование приложения 796
Понятие привязки моделей 799
Стандартные значения привязки 801
Привязка простых типов 802
Привязка сложных типов 803
Привязка массивов и коллекций 813
Привязка коллекций сложных типов 817
Указание источника данных привязки моделей 820
Выбор стандартного источника данных привязки 820
Использование заголовков в качестве источников данных привязки 821
Использование тел запросов в качестве источников данных привязки 824
Резюме 827
Глава 27. Проверка достоверности моделей
Подготовка проекта для примера 830
Создание модели 831
Создание контроллера 831
Создание компоновки и представлений 832
Необходимость в проверке достоверности модели 834
Явная проверка достоверности модели 835
Отображение пользователю ошибок проверки достоверности 838
Отображение сообщений об ошибках проверки достоверности 839
Отображение сообщений об ошибках проверки достоверности на уровне свойств 844
Отображение сообщений об ошибках проверки достоверности на уровне модели 845
Указание правил проверки достоверности с помощью метаданных 849
Создание специального атрибута проверю! достоверности для свойства 852
Выполнение проверки достоверности на стороне клиента 854
Выполнение удаленной проверки достоверности 857
Резюме 860
Глава 28. Введение в ASP.NET Core Identity
Подготовка проекта для примера 863
Создание контроллера и представления 864
Настройка ASP.NET Core Identity 866
Добавление пакета Identity 8 приложение 866
Создание класса пользователя 867
Создание класса контекста базы д анных 869
Конфигурирование настройки строки подключения к базе данных 869
Конфигурирование служб и промежуточного программного обеспечения Identity 870
Создание базы данных Identity 872
Использование ASP. NET Core Identity 872
Перечисление пользовательских учетных записей 873
Создание пользователей 875
Проверка паролей 879
Проверка деталей, связанных с пользователем 886
Завершение средств администрирования 890
Реализация средства удаления 891
Реализация возможности редактирования 892
Резюме 897
Глава 29. Применение ASP.NET Core Identity
Подготовка проекта для примера 898
Аутентификация пользователей 899
Подготовка к реализации аутентификации 901
Добавление аутентификации пользователей 904
Тестирование аутентификации 907
Авторизация пользователей с помощью ролей 908
Создание и удаление ролей 909
Управление членством в ролях 914
Использование ролей для авториаации 919
Помещение в базу данных начальных данных 923
Резюме 925
Глава 30. Расширенные средства ASP.NET Core Identity
Подготовка проекта для примера 927
Добавление специальных свойств в класс пользователя 927
Подготовка миграции базы данных 931
Тестирование специальных свойств 931
Работа с заявками и политиками 932
Понятие заявок 933
Создание заявок 937
Использование политик 940
Использование политик для авторизации доступа к ресурсам 946
Использование сторонней аутентификации 951
Регистрация приложения в Google 951
Включение аутентификации Google 952
Резюме 957
Глава 31. Соглашения по модели и ограничения действий
Подготовка проекта для примера 959
Создание модели представления, контроллера и представления 960
Использование модели приложения и соглашений по модели 962
Модель приложения 963
Роль соглашений по модели 967
Создание соглашения по модели 968
Порядок выполнения соглашений по модели 973
Создание глобальных соглашений по модели 974
Использование ограничений действий 976
Подготовка проекта для примера 977
Ограничения действий 978
Создание ограничения действия 979
Распознавание зависимостей в ограничениях действий 984
Резюме 986
Предметный указатель 987
Добавить комментарий