В программе лояльности

Внедрение зависимостей на платформе .NET

Симан Марк, Дерсен Стивен Ван

Код товара: 4403386
(0 оценок)Оценить
ОтзывНаписать отзыв
ВопросЗадать вопрос
1 / 3
Нет в наличии
Доставим в
г. Москва
Курьером
Л-Пост
бесплатно от 10 000 ₽
В пункт выдачи
от 155 ₽
бесплатно от 10 000 ₽
Точная стоимость доставки рассчитывается при оформлении заказа
Издательство:
Оригинальное название:
Dependency Injection. Principles, Practices, and Patterns
Год издания:
2021
Переводчик:

Описание

Характеристики

Парадигма внедрения зависимостей (DI) в течение минувшего десятилетия де-факто стала одной из доминирующих на платформе .NET и теперь обязательна к изучению для всех .NET-разработчиков.

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

В книге:
- Рефакторинг существующего кода в слабо связанный код
- Методы DI, которые работают со статически типизированными ОО языками
- Интеграция с общими платформами .NET Framework
- Обновленные примеры, иллюстрирующие DI в .NET Core
код в Майшоп
4403386
возрастная категория
16+
издание
2
количество томов
1
количество страниц
608 стр.
размеры
235x170x32 мм
формат
70x100/16 (170x240) мм
ISBN
978-5-4461-1166-4
тип бумаги
офсетная (60-220 г/м2)
цвет
Чёрный
стандарт
вес
язык
русский
переплёт
Мягкая обложка

Содержание

Предисловие Марка Симана
Благодарности
Об этой книге
Для кого предназначена эта книга
Структура издания
Стандарт оформления кода и материалы для
скачивания
Об авторах
Об иллюстрации на обложке
От издательства
Часть I. Общее представление о месте, занимаемом
внедрением зависимостей
Глава 1. Основы внедрения зависимостей: что,
зачем и как
1.1. Создание сопровождаемого кода
1.1.1. Устоявшиеся мифы о DI
1.1.2. Определение цели DI
1.2. Простой пример: Hello DI!
1.2.1. Код Hello DI!
1.2.2. Преимущества, получаемые от применения
DI
1.3. Что следует, а что не следует внедрять
1.3.1. Стабильные зависимости
1.3.2. Нестабильные зависимости
1.4. Область применения DI
1.4.1. Компоновка объектов
1.4.2. Время жизни объектов
1.4.3. Перехват
1.4.4. DI в трех измерениях
1.5. Заключение
Резюме
Глава 2. Создание кода с сильной связанностью
2.1. Создание приложения с сильной связанностью
2.1.1. Познакомьтесь с Мэри Роуэн
2.1.2. Создание уровня данных
2.1.3. Создание уровня доменной логики
2.1.4. Создание уровня пользовательского
интерфейса
2.2. Оценка приложения с сильной связанностью
2.2.1. Оценка схемы зависимостей
2.2.2. Оценка компонуемости
2.3. Анализ недостающей компонуемости
2.3.1. Анализ схемы зависимостей
2.3.2. Анализ интерфейса доступа к данным
2.3.3. Прочие вопросы
2.4. Заключение
Резюме
Глава 3. Создание кода со слабой связанностью
3.1. Создание нового варианта приложения
электронной торговли
3.1.1. Создание пользовательского интерфейса,
более поддающегося
сопровождению
3.1.2. Создание независимой доменной модели
3.1.3. Создание нового уровня доступа к данным
3.1.4. Реализация адаптера IUserContext,
учитывающего специфику
среды ASP.NET Core
3.1.5. Компоновка приложения в корне композиции
3.2. Анализ реализации со слабой связанностью
3.2.1. Осмысление взаимодействия компонентов
3.2.2. Анализ новой схемы зависимостей
Резюме
Часть II. Каталог
Глава 4. Паттерны внедрения зависимостей
4.1. Корень композиции
4.1.1. Принцип работы корня композиции
4.1.2. Использование DI-контейнера в корне
композиции
4.1.3. Пример: реализация корня композиции с
использованием
чистой технологии DI
4.1.4. Кажущийся взрыв зависимостей
4.2. Внедрение через конструктор
4.2.1. Принцип работы внедрения через
конструктор
4.2.2. Когда следует использовать внедрение
через конструктор
4.2.3. Известные примеры использования
внедрения
через конструктор
4.2.4. Пример: добавление конвертации валюты к
прейскуранту
предлагаемых товаров
4.2.5. Краткое заключение
4.3. Внедрение через метод
4.3.1. Принцип работы внедрения через метод
4.3.2. Когда следует использовать внедрение
через метод
4.3.3. Известные примеры применения внедрения
через метод
4.3.4. Пример: добавление конвертации валюты в
сущность
товаров Product
4.4. Внедрение через свойство
4.4.1. Принцип работы внедрения через свойство
4.4.2. Когда следует использовать внедрение
через свойство
4.4.3. Известные примеры использования
внедрения через свойство
4.4.4. Пример: внедрение через свойство,
применяемое в качестве
модели расширяемости многократно используемой
библиотеки
4.5. Выбор используемого паттерна
Резюме
Глава 5. Антипаттерны внедрения зависимостей
5.1. Антипаттерн "Диктатор"
5.1.1. Пример: антипаттерн "Диктатор",
полученный путем обновления
зависимостей с применением ключевого слова new
5.1.2. Пример: антипаттерн "Диктатор",
полученный в результате
использования фабрик
5.1.3. Пример: антипаттерн "Диктатор",
полученный при использовании
переопределяемых конструкторов
5.1.4. Анализ антипаттерна "Диктатор"
5.2. Антипаттерн "Локатор сервисов"
5.2.1. Пример: ProductService, использующий
локатор сервисов
5.2.2. Анализ антипаттерна "Локатор сервисов"
5.3. Антипаттерн "Окружающий контекст"
5.3.1. Пример: получение данных о времени
через "Окружающий контекст"
5.3.2. Пример: ведение регистрационных записей
с помощью окружающего контекста
5.3.3. Анализ антипаттерна "Окружающий
контекст"
5.4. Антипаттерн "Ограниченная конструкция"
5.4.1. Пример: позднее связывание
ProductRepository
5.4.2. Анализ антипаттерна "Ограниченная
конструкция"
Резюме
Глава 6. Проблемный код
6.1. Как справиться с проблемным кодом
избыточного внедрения
через конструктор
6.1.1. Распознавание избыточного внедрения через
конструктор
6.1.2. Переделка избыточного внедрения через
конструктор
в фасадные сервисы
6.1.3. Переделка избыточного внедрения через
конструктор
в доменные события
6.2. Злоупотребление абстрактными фабриками
6.2.1. Злоупотребление абстрактными фабриками
для преодоления
проблем с временем существования объектов
6.2.2. Злоупотребление абстрактными фабриками
при выборе возвращаемой зависимости на основе
данных среды выполнения .
6.3. Устранение зацикленности зависимостей
6.3.1. Примфер: зацикленность зависимостей,
вызванная
нарушением принципа единственной
ответственности
6.3.2. Анализ зацикленности зависимостей, с
которой столкнулась Мэри
6.3.3. Избавление от нарушений принципа
единственной
ответственности для решения проблемы
зацикленности зависимостей
6.3.4. Общие стратегии избавления от
зацикленности зависимостей
6.3.5. Крайнее средство: разрыв зацикленности
путем использования
внедрения через свойство
Резюме
Часть III. Чистое внедрение зависимостей
Глава 7. Компоновка приложений
7.1. Компоновка консольных приложений
7.1.1. Пример: обновление курсов валют с
помощью программы
UpdateCurrency
7.1.2. Построение корня композиции для программы
UpdateCurrency
7.1.3. Компоновка графа объектов в
CreateCurrencyParser
7.1.4. Более пристальный взгляд на разбиение
UpdateCurrency
на уровни
7.2. Компоновка UWP-приложений
7.2.1. Компоновка UWP
7.2.2. Пример: подключение
полнофункционального клиента
управления товарами
7.2.3. Реализация корня композиции UWP-
приложения
7.3. Компоновка приложений среды ASP.NET Core
MVC
7.3.1. Создание специализированного активатора
контроллера
7.3.2. Создание собственных компонентов-
прослоек
с использованием чистой технологии DI
Резюме
Глава 8. Время жизни объектов
8.1. Управление временем жизни зависимостей
8.1.1. Введение в управление временем жизни
8.1.2. Управление временем жизни с применением
чистой технологии DI.
8.2. Работа с ликвидируемыми зависимостями
8.2.1. Потребление ликвидируемых зависимостей
8.2.2. Управление ликвидируемыми зависимостями
8.3. Каталог жизненных циклов зависимостей
8.3.1. Жизненный цикл Singleton
8.3.2. Жизненный цикл Transient
8.3.3. Жизненный цикл Scoped
8.4. Неудачный выбор жизненного цикла
8.4.1. Захваченные зависимости
8.4.2. Применение абстракций с протечкой,
допускающей доступность
для потребителей сведений о выбранном
жизненном цикле
8.4.3. Ошибки одновременно выполняемых
вычислений, вызываемые
привязкой экземпляров к времени жизни потока
Резюме
Глава 9. Перехват
9.1. Введение в перехват
9.1.1. Паттерн проектирования "Декоратор"
9.1.2. Пример: реализация ведения контрольного
журнала
с помощью декоратора
9.2. Реализация сквозной функциональности
9.2.1. Перехват с использованием паттерна
"Предохранитель"
9.2.2. Оповещение о выдаче исключений,
выполняемое
с помощью паттерна "Декоратор"
9.2.3. Использование декоратора для
предотвращения
несанкционированного доступа к функциям,
работающим с конфиденциальной информацией
Резюме
Глава 10. Аспектно-ориентированное
проектирование
программного обеспечения
10.1. Введение в АОР
10.2. Принципы SOLID
10.2.1. Принцип единственной ответственности
10.2.2. Принцип открытости/закрытости
10.2.3. Принцип подстановки Лисков
10.2.4. Принцип изоляции интерфейса
10.2.5. Принцип инверсии зависимостей
10.2.6. SOLID-принципы и перехват
10.3. Соблюдение принципов SOLID как движущая
сила АОР
10.3.1. Пример: реализация функций работы с
товарами
с использованием IProductService
10.3.2. Анализ IProductService с позиции
соблюдения SOLID-принципов
10.3.3. Усовершенствование конструкции
применением SOLID-принципов..
10.3.4. Добавление новых аспектов сквозной
функциональности
10.3.5. Заключение
Резюме
Глава 11. Аспектно-ориентированное
программирование с помощью инструментальных
средств
11.1. Динамический перехват
11.1.1. Пример: перехват с использованием Castle
Dynamic Proxy
11.1.2. Анализ динамического перехвата
11.2. Автоматическое добавление аспектов в ходе
компиляции
11.2.1. Пример: применение аспекта транзакции с
автоматическим
добавлением аспектов в ходе компиляции
11.2.2. Анализ автоматического добавления
аспектов в ходе компиляции
Резюме
Часть IV. DI-контейнеры
Глава 12. Введение в DI-контейнеры
12.1. Введение в DI-контейнеры
12.1.1. Исследование контейнерного API,
выполняющего разрешение
12.1.2. Автоматическое связывание Auto-Wiring
12.1.3. Пример: реализация упрощенного DI-
контейнера,
поддерживающего автоматическое связывание
12.2. Конфигурация DI-контейнеров
12.2.1. Конфигурирование контейнеров с помощью
файлов
конфигурации
12.2.2. Конфигурирование контейнеров с
применением конфигурации в виде кода
12.2.3. Конфигурирование контейнеров по
соглашению
с использованием автоматической регистрации
12.2.4. Смешивание и сопоставление подходов к
конфигурированию
12.3. Когда следует использовать DI-контейнер
12.3.1. Использование сторонних библиотек
сопряжено с издержками и рисками
12.3.2. Чистая технология Di позволяет быстрее
реагировать на происходящее
12.3.3. Вердикт: когда следует использовать DI-
контейнер
Резюме
Глава 13. DI-контейнер Autofac
13.1. Введение в Autofac
13.1.1. Разрешение объектов
13.1.2. Конфигурирование ContainerBuilder
13.2. Управление временем жизни
13.2.1. Конфигурирование областей видимости
экземпляров
13.2.2. Высвобождение компонентов
13.3. Регистрация сложных API
13.3.1. Конфигурирование элементарных
зависимостей
13.3.2. Регистрация объектов с помощью блоков
кода
13.4. Работа с несколькими компонентами
13.4.1. Выбор из нескольких кандидатов
13.4.2. Связывание последовательностей
13.4.3. Связывание декораторов
13.4.4. Связывание компоновщиков
Резюме
Глава 14. DI-контейнер Simple Injector
14.1. Введение в Simple Injector
14.1.1. Разрешение объектов
14.1.2. Конфигурирование контейнера
14.2. Управление временем жизни
14.2.1. Конфигурирование жизненных циклов
14.2.2. Высвобождение компонентов
14.2.3. Охватывающие области видимости
14.2.4. Диагностика контейнера для выявления
наиболее
распространенных проблем, связанных с временем
жизни
14.3. Регистрация сложных API
14.3.1. Конфигурирование элементарных
зависимостей
14.3.2. Извлечение элементарных зависимостей в
граничные объекты
14.3.3. Регистрация объектов с помощью блоков
кода
14.4. Работа с несколькими компонентами
14.4.1. Выбор из нескольких кандидатов
14.4.2. Связывание последовательностей
14.4.3. Связывание декораторов
14.4.4. Связывание компоновщиков
14.4.5. Последовательности и потоки данных
Резюме
Глава 15. DI-контейнер
Microsoft.Extensions.Dependencylnjection
15.1. Введение в
Microsoft.Extensions.Dependencylnjection
15.1.1. Разрешение объектов
15.1.2. Конфигурирование ServiceCollection
15.2. Управление временем жизни
15.2.1. Конфигурирование жизненных циклов
15.2.2. Высвобождение компонентов
15.3. Регистрация сложных API
15.3.1. Конфигурирование элементарных
зависимостей
15.3.2. Извлечение элементарных зависимостей в
граничные объекты
15.3.3. Регистрация объектов с помощью блоков
кода
15.4. Работа с несколькими компонентами
15.4.1. Выбор из нескольких кандидатов
15.4.2. Связывание последовательностей
15.4.3. Связывание декораторов
15.4.4. Связывание компоновщиков
Резюме
Глоссарий
Список дополнительных источников
Книги
Онлайн-ресурсы
Другие ресурсы

Отзывы

Вопросы

Поделитесь своим мнением об этом товаре с другими покупателями — будьте первыми!

Дарим бонусы за отзывы!

За какие отзывы можно получить бонусы?
  • За уникальные, информативные отзывы, прошедшие модерацию
Как получить больше бонусов за отзыв?
  • Публикуйте фото или видео к отзыву
  • Пишите отзывы на товары с меткой "Бонусы за отзыв"
Правила начисления бонусов
Задайте вопрос, чтобы узнать больше о товаре
Если вы обнаружили ошибку в описании товара «Внедрение зависимостей на платформе .NET» (авторы: Симан Марк, Дерсен Стивен Ван), то выделите её мышкой и нажмите Ctrl+Enter. Спасибо, что помогаете нам стать лучше!
Ваш населённый пункт:
г. Москва
Выбор населённого пункта