Информация о книге

978-5-496-00657-6

Главная  » Тематика определяется » Внедрение зависимостей в .NET

Симан М., Внедрение зависимостей в .NET

Питер, 2014 г., 978-5-496-00657-6


Описание книги

Внедрение зависимостей позволяет уменьшить сильное связывание между программными компонентами. Вместо жесткого кодирования зависимостей (например, драйвера какой-либо базы данных), внедряется список сервисов, в которых может нуждаться компонент. После этого сервисы подключаются третьей стороной. Такой подход обеспечивает лучшее управление будущими изменениями и решение проблем в разрабатываемом программном обеспечении. Данная книга рассказывает о внедрении зависимостей и является практическим руководством по их применению в приложениях .NET. Издание содержит основные шаблоны внедрения зависимостей, написанные на \"чистом\" C#. Кроме того, рассмотрены способы интеграции внедрений зависимостей со стандартными технологиями Microsoft, такими как ASP.NET MVC, а также примеры применения фреймворков StructureMap, Castle Windsor и Unity.

Ключевые слова

Поделиться ссылкой на книгу



Содержание книги

Предисловие
Введение
Благодарности
Об этой книге
Для кого предназначена эта книга
Наш маршрут
Условные обозначения и возможности для
скачивания
Об авторе
Иллюстрация на обложке
От издательства
Часть 1. Последовательность изучения внедрения
зависимостей
Глава 1. Дегустационное меню внедрения
зависимостей
1.1.Написание удобного в сопровождении кода
1.1.1. Отучиться от внедрения зависимостей
1.1.2. Назначение внедрения зависимостей
1.2.Hello DI (Привет, ВЗ)
1.2.1. Код для Hello DI
1.2.2. Достоинства внедрения зависимостей
1.3.Что следует и что не следует внедрять
1.3.1. Швы
1.3.2. Стабильные зависимости
1.3.3. Нестабильные зависимости
1.4.Область применения внедрения зависимостей
1.4.1. Композиция объектов
1.4.2. Жизненный цикл объектов
1.4.3. Перехват
1.4.4. Внедрение зависимостей в трех
измерениях
1.5.Резюме
Глава 2. Детальный пример
2.1.Неверная реализация
2.1.1. Разработка сильно связанного
приложения
2.1.2. Тест "На дым" (Smoke test)
2.1.3. Оценка
2.1.4. Анализ
2.2.Правильная реализация
2.2.1. Новая разработка приложения
2.2.2. Анализ слабо связанной реализации
2.3.Расширение приложения-примера
2.3.1. Архитектура
2.3.2. Корзина покупок
2.4.Резюме
Глава 3. Контейнеры внедрения зависимостей
3.1.Введение в контейнеры внедрения
зависимостей
3.1.1. Привет, контейнер
3.1.2. Автоподключение
3.2.Конфигурирование контейнеров внедрения
3.2.1. Конфигурирование контейнеров с
использованием XML
3.2.2. Конфигурирование контейнеров при
помощи кода
3.2.3. Конфигурирование контейнеров по
соглашению
3.3.Паттерны контейнеров внедрения
3.3.1. Корень компоновки
3.3.2. "Регистрация, преобразование,
высвобождение"
3.4.Панорама контейнеров внедрения
3.4.1. Выбор контейнера внедрения
зависимостей
3.4.2. Microsoft и внедрение зависимостей
3.5.Резюме
Часть 2. Каталог паттернов внедрения
зависимостей
Глава 4. Паттерны внедрения зависимостей
4.1. "Внедрение конструктора"
4.1.1. Как это работает
4.1.2. Когда должно использоваться внедрение
конструктора
4.1.3. Известные способы применения
4.1.4. Пример: добавление сервиса
конвертации валют в покупательскую корзину
4.1.5. Родственные паттерны
4.2."Внедрение свойства"
4.2.1. Как это работает
4.2.2. Когда следует применять внедрение
свойства
4.2.3. Известные способы применения
4.2.4. Пример: реализация сервиса профиля
валюты для BasketController
4.2.5. Родственные паттерны
4.3.Внедрение метода
4.3.1. Как это работает
4.3.2. Когда следует использовать внедрение
метода
4.3.3. Известные способы применения
4.3.4. Пример: конвертация валют в корзине
4.3.5. Родственные паттерны
4.4."Окружающий контекст"
4.4.1. Как это работает
4.4.2. Когда следует использовать
окружающий контекст
4.4.3. Известные способы применения
4.4.4. Пример: кэширование валюты
4.4.5. Родственные паттерны
4.5.Резюме
Глава 5. Антипаттерны внедрения зависимостей
5.1."Диктатор"
5.1.1. Пример: создание новых экземпляров
зависимостей
5.1.2. Пример: фабрика
5.1.3. Анализ
5.2."Гибридное внедрение"
5.2.1. Пример: ProductService с внешним
умолчанием
5.2.2. Анализ
5.3."Ограниченное конструирование"
5.3.1. Пример: динамическое связывание
ProductRepository
5.3.2. Анализ
5.4."Локатор сервисов"
5.4.1. Пример: ProductService, использующий
"Локатор сервисов"
5.4.2. Анализ
5.5.Резюме
Глава 6. Рефакторинг внедрения зависимостей
6.1.Соотнесение значения времени исполнения с
абстракциями
6.1.1. Абстракции с зависимостями времени
исполнения
6.1.2. Пример: выбор алгоритма расчета пути
6.1.3. Пример: использование CurrencyProvider
6.2.Использование краткосрочных зависимостей
6.2.1. Закрытие соединений с помощью
абстракций
6.2.2. Пример: обращение к сервису управления
продуктами
6.3.Устранение циклических зависимостей
6.3.1. Устранение циклов зависимостей
6.3.2. Пример: компоновка окна
6.4.Использование сверхвнедрения конструктора
6.4.1. Распознавание и разрешение
сверхвнедрения конструктора
6.4.2. Пример: рефакторинг получения заказов
6.5.Мониторинг связанности
6.5.1. Модульное тестирование связанности
6.5.2. Интеграционное тестирование
связывания
6.5.3. Использование NDepend для
отслеживания связей
6.6.Резюме
Часть 3. Самостоятельное создание внедрения
зависимостей
Глава 7. Компоновка объектов
7.1.Компоновка в консольных приложениях
7.1.1. Пример: обновление валют
7.2.Компоновка приложений ASP.NET MVC
7.2.1. Расширяемость ASP.NET MVC
7.2.2. Пример: реализация
CommerceControllerFactory
7.3.Компоновка WCF-приложений
7.3.1. Расширяемость WCF
7.3.2. Пример: подключение сервиса
управления продуктами
7.4.Компоновка WPF-приложений
7.4.1. WPF-компоновка
7.4.2. Пример: подключение насыщенного
клиента для управления продуктами
7.5.Компоновка приложений ASP.NET
7.5.1. Компоновка в ASP.NET
7.5.2 Пример: подключение CampaignPresenter
7.6.Компоновка PowerShell cmdlets
7.6.1. Пример: компоновка cmdlets для управления
корзиной
7.7.Резюме
Глава 8. Время жизни объектов
8.1.Управление временем жизни зависимостей
8.1.1. Введение в управление временем жизни
8.1.2. Управление временем жизни с помощью
контейнера
8.2.Использование одноразовых зависимостей
8.2.1. Использование одноразовых
зависимостей
8.2.2. Управление одноразовыми зависимостями
8.3.Каталог жизненных стилей
8.3.1 Singleton
8.3.2. Transient
8.3.3. Per Graph
8.3.4. Web Request Context (Контекст
веб-запроса)
8.3.5. Pooled (Пулированный, реализованный
как пул)
8.3.6. Прочие жизненные стили
8.4.Резюме
Глава 9. Перехват
9.1.Вводная информация о перехватах
9.1.1. Пример: реализация аудита
9.1.2. Паттерны и принципы перехвата
9.2.Реализация сквозных аспектов приложения
9.2.1. Перехват с "Прерывателем цепи" (Circuit
Breaker)
9.2.2. Обработка исключительных состояний
9.2.3. Добавление функционала безопасности
9.3.Объявление аспектов
9.3.1. Использование атрибутов для
объявления аспектов
9.3.2. Применение динамического перехвата
9.3.3. Пример: перехват с Windsor
9.4.Резюме
Часть 4. Контейнеры внедрения зависимостей
Глава 10. Castle Windsor
10.1.Знакомство с Castle Windsor
10.1.1. Разрешение объектов
10.1.2. Конфигурирование контейнера
10.1.3. Размещение конфигурации
10.2.Управление жизненным циклом
10.2.1. Конфигурирование стилей жизненных
циклов
10.2.2. Использование продвинутых стилей
жизненных циклов
10.2.3. Разработка специальных стилей
жизненных циклов
10.3.Работа с несколькими компонентами
10.3.1. Выбираем одного кандидата из
нескольких
10.3.2. Подключение последовательностей
10.3.3. Подключение декораторов
10.4.Конфигурирование сложных API
10.4.1. Конфигурирование примитивных
зависимостей
10.4.2. Регистрирование компонентов с помощью
блоков кода
10.4.3. Подключение с внедрением свойств
10.5.Резюме
Глава 11. StructureMap
11.1.Знакомство со StructureMap
11.1.1. Разрешение объектов
11.1.2. Конфигурирование контейнера
11.1.3. Размещение конфигурации
11.2.Управление жизненным циклом
11.2.1. Конфигурирование стилей жизненных
циклов
11.2.2. Разработка собственного стиля
жизненных циклов
11.3.Работа с несколькими компонентами
11.3.1. Выбираем одного кандидата из
нескольких
11.3.2. Подключение последовательностей
11.3.3. Подключение декораторов
11.4.Конфигурирование сложных API
11.4.1. Конфигурирование примитивных
зависимостей
11.4.2. Создание компонентов с помощью блоков
кода
11.4.3. Подключение с внедрением свойств
11.5.Резюме


Об авторе


Отзывы

Это библия Dependency Injection  [11 January 2014]
Книга пойдет для архитекторов и для ведущих разработчиков.
Хорошо, что автор описал паттерны DI, абстрагируясь от конкретных IoC-контейнеров.

Последняя глава о конкретных контейнерах и не нужна, тем более что в русской версии их всего 2 (в английской их 6).
Или нужно было описывать полностью все 6.

Минусы по самой печати: листы тонкие, просвечиваются, обложка совсем никакая.
Самый раз для архитекторов  [18 November 2013]
Пожалуй вряд ли "мидлы" и "джуниоры" смогут проникнуться материалом даже на треть, тем более использовать его грамотно на практике. Я бы отправил сначала к книге "Банды четырех". А вот для опытных "перцев" - просто идеальная книга, все очень детально и грамотно разложено по полочкам, начиная от причин использования внедрения зависимостей, заканчивая практикой. Я, во всяком случае, аналогов не встречал.

Последние поступления в рубрике "Тематика определяется"



Фигуры 2+. Вырезалки Фигуры 2+. Вырезалки Терентьева Н.М., Маврина Л.

Умение вырезать – важный навык, который способствует развитию мелкой моторики рук, координации движений, внимательности и усидчивости....

Первые контурные вырезалки 2+ Первые контурные вырезалки 2+ Терентьева Н.М., Маврина Л.

Умение вырезать - важный навык, который способствует развитию мелкой моторики рук, координации движений, внимательности и усидчивости. Для детей до 3-х лет....

Мои первые вырезалки 2+ Мои первые вырезалки 2+ Терентьева Н.М., Маврина Л.

Умение вырезать – важный навык, который способствует развитию мелкой моторики рук, координации движений, внимательности и усидчивости. Для детей до 3-х лет....

Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Симан М., Внедрение зависимостей в .NET в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.