Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и .NET

Джимми Нильссон

Эта книга о разработке корпоративных программных приложений в среде .NET с применением шаблонов проектирования. В ней описаны: проблемно-ориентированные методы проектирования (DDD, или Domain Driven Design), разработка посредством тестирования (TDD, или Test-Driven Development), объектно-реляционное преобразование, т.е. методы, которые многие относят к ключевым технологиям разработки программного обеспечения. По мере развития и усложнения технологии все большее значение приобретают вопросы правильного применения методов проектирования. Ценность этой книги в том и состоит, что она помогает разобраться в этих вопросах. Хотя большинство примеров кода представлено на языке С#, материал книги может оказаться полезным и для тех, кто работает на платформе Java.

Книга адресована опытным разработчикам архитектуры и прикладного программного обеспечения уровня предприятий, в том числе и в среде .NET.

Издательство: Вильямс, 2008 г.

ISBN 978-5-8459-1296-1, 0-321-26820-2

Количество страниц: 560.

Содержание книги «Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и .NET»:

  • 17 Отзывы о книге
  • 26 Об авторе
  • 27 Предисловия
  • 31 Вступление: наведение мостов
  • 37 Благодарности
  • 38 От издательства
  • 39 Часть I. Основы
  • 41 Глава 1. Переоценка ценностей
    • 41 Общие ценности
    • 42 Оценка стилей архитектуры
      • 42 Акцент на модели
      • 43 Акцент на прецедентах использования
      • 48 Если сделан акцент на модели, следует применять шаблон модели предметной области
      • 53 База данных требует аккуратного обращения
      • 58 Потеря соответствия модели предметной области и реляционной базы данных
      • 63 Распределение требует аккуратного обращения
      • 65 Акцент на обмене сообщениями
    • 67 Оценка составляющих процесса
      • 68 Предварительное проектирование архитектуры
      • 71 Проектирование на основе предметной области
      • 71 Разработка посредством тестирования
      • 75 Рефакторинг кода
      • 77 Отдельные составляющие или их сочетание
    • 78 Непрерывная интеграция
      • 79 Проблема интеграции
      • 79 Решение проблемы или радикальный шаг в правильном направлении
      • 80 Уроки, которые я извлек из опыта работы в своей организации
      • 81 Дополнительные сведения
    • 81 Не следует забывать об эксплуатации
      • 81 Когда механизм нужен
      • 82 Некоторые примеры механизмов эксплуатации
      • 83 Это не только оплошность разработчиков
    • 84 Резюме
  • 85 Глава 2. Переход к шаблонам
    • 86 Вкратце о шаблонах
      • 88 Предостережения в отношении шаблонов
    • 90 Шаблоны проектирования
      • 90 Пример применения шаблона State
    • 98 Архитектурные шаблоны
      • 99 Пример применения шаблона Layers
      • 100 Шаблон Domain Model в качестве другого примера
    • 100 Шаблоны проектирования для конкретных типов приложений
      • 101 Пример применения шаблона Query Object
    • 107 Шаблоны предметной области
      • 109 Пример применения шаблона Factory
    • 114 Резюме
  • 115 Глава 3. РПТ и рефакторинг кода
    • 115 Разработка посредством тестирования
      • 116 Порядок выполнения РПТ
      • 116 Пора приступать к демонстрации
      • 123 Следствия для проектирования
      • 126 Недостатки проектирования методом РПТ
      • 127 Следующая стадия
    • 128 Заглушки и имитации
      • 128 Типичный блочный тест
      • 129 Объявление независимости
      • 130 Работа с трудными объектами
      • 130 Замена взаимодействующих объектов тестовыми заглушками
      • 133 Замена взаимодействующих объектов имитирующими объектами
      • 135 Последствия для проектирования
      • 136 Выводы
      • 136 Дополнительные сведения
    • 136 Рефакторинг кода
      • 137 Чистка недоброкачественного кода
    • 148 Резюме
  • 149 Часть II. Прикладное ППО
  • 151 Глава 4. Новая используемая по умолчанию архитектура
    • 151 Основа новой используемой по умолчанию архитектуры
      • 153 Смещение акцента с базы данных на модель предметной области
      • 153 Более конкретный акцент на ППО
      • 154 Разделение на слои в соответствии с ППО
    • 155 Первый набросок
      • 156 Задачи и возможности для примера предметной области
      • 158 Решение задач по очереди
      • 171 Модель предметной области на данном этапе
    • 173 Первая попытка привязать пользовательский интерфейс к модели предметной области
      • 173 Основная цель
      • 173 Акцент на простой пользовательский интерфейс
      • 173 Составление списка заказов клиента
      • 175 Ввод заказа
      • 175 Что получается в итоге
    • 176 Еще одно измерение
      • 178 Расположение модели предметной области
      • 178 Изолирование или совместное использование экземпляров
      • 179 Реализация модели предметной области с сохранением или без сохранения состояния
      • 179 Полная или частичная реализация модели предметной области
    • 180 Резюме
  • 181 Глава 5. Проектирование на основе модели предметной области
    • 181 Уточнение модели предметной области простым экспериментированием с РПТ
      • 182 Первая задача: создание классов Order и OrderFactory
      • 187 Немного логики для предметной области
      • 188 Вторая задача: создание класса OrderRepository и ввод свойства OrderNumber
      • 193 Восстановление объекта-сущности из состояния сохраняемости: задание значений извне
      • 198 Выборка списка заказов
      • 200 Пора обсудить объекты-сущности
      • 200 Назад к основному ходу рассуждений
      • 202 Общая перспектива
      • 203 Подделка класса OrderRepository
      • 205 Несколько слов о сохранении
      • 206 Общая сумма каждого заказа
      • 211 Сведения о предыстории клиента
      • 214 Жизненный цикл экземпляра объекта
      • 216 Тип заказа
      • 216 Ответственное лицо для заказа
    • 218 Плавный интерфейс
    • 220 Резюме
  • 221 Глава 6. Подготовка к инфраструктуре
    • 222 POCO как образ жизни
      • 223 НС для объектов-сущностей и объектов-значений
      • 228 Соблюдать НС или не соблюдать
      • 228 НС во время выполнения или компиляции
      • 229 Во что обходится НС для объектов-сущностей и объектов-значений
      • 231 НС для хранилищ
      • 237 Во что обходятся хранилища единственного ряда
    • 238 Сценарии сохранения
      • 240 Основания для принятых решений
    • 243 Построение механизма подделки
      • 244 Дополнительные свойства механизма подделки
      • 246 Реализация подделки
      • 247 Воздействие подделки на блочные тесты
    • 251 Тестирование базы данных
      • 253 Установка базы данных в исходное состояние перед каждым тестом
      • 255 Сохранение состояния базы данных во время выполнения тестов
      • 255 Сброс данных для теста перед его выполнением
      • 256 Не забывайте о развитии схемы базы данных
      • 257 Тестирование блока кода отдельно от проверки обращения к базе данных
    • 261 Формирование запросов
      • 262 Объекты запросов единственного ряда
      • 263 Во что обходятся объекты запросов единственного ряда
      • 266 Размещение запросов
      • 267 Агрегаты как инструмент формирования запросов
      • 269 Описания в качестве запросов
      • 269 Другие методы формирования запросов
    • 270 Резюме
  • 271 Глава 7. Порядок устанавливают правила
    • 271 Разделение правил на категории
    • 272 Принципы для правил и их применения
      • 272 Двухсторонняя проверка правил: необязательная (профилактическая) и обязательная (задним числом)
      • 272 Сохранению подлежат все состояния — даже ошибочные
      • 273 Правила должны применяться продуктивно
      • 273 Правила должны допускать поправки для ввода специальных правил
      • 273 Правила должны размещаться вместе с состоянием
      • 273 Правила должны быть очень удобными для тестирования
      • 274 Система должна препятствовать переходу в недействительное состояние
    • 274 Начало создания интерфейса API
      • 275 Контекст, контекст и еще раз контекст!
      • 276 Ограничения, связанные с базой данных
      • 277 Привязка правил к переходам, связанным с моделью предметной области или же с инфраструктурой
      • 278 Уточнение принципа «Сохранению подлежат все состояния — даже ошибочные»
    • 280 Требования к интерфейсу API для основных правил, связанных с сохраняемостью
      • 281 Возврат к проблемам интерфейса API
      • 281 Какая именно проблема возникла
      • 282 Мы допустили неправильный переход
      • 282 Если мы забыли выполнить проверку
    • 283 Акцент на правилах, связанных с предметной областью
      • 285 Правила, требующие взаимодействия
      • 286 Поиск методов обработки на основе множеств
      • 289 Обслуживание проверки достоверности по шаблону Service
      • 289 Попытка сделать непредусмотренный переход
      • 292 Идентификационный номер клиента
      • 294 Как избежать осложнений
      • 295 Агрегаты как инструмент проверки правил
    • 296 Расширение интерфейса API
      • 296 Запрос правил для настройки пользовательского интерфейса
      • 297 Возможность для внесения правил
    • 297 Уточнение реализации
      • 297 Наивная реализация
      • 303 Переход от самой наивной стадии к созданию классов правил
      • 306 Составление списка правил
      • 307 Использование списка правил
      • 308 Составление подсписков
      • 309 Усовершенствование интерфейса API
      • 310 Специальная настройка
      • 310 Предоставление пользователю метаданных
      • 311 Проблема под стать шаблону
      • 311 Как обращаться со сложными правилами
    • 313 Привязка к абстрактному представлению сохраняемости
      • 313 Внедряемый интерфейс проверки достоверности
      • 314 Альтернативные решения для проверки достоверности задним числом при сохранении
      • 315 Повторное использование метаданных преобразования
    • 315 Обобщения и анонимные методы как спасение
    • 317 Другие подходы
    • 317 Резюме
  • 319 Часть III. Применение шаблонов архитектуры корпоративных программных приложений
  • 321 Глава 8. Инфраструктура для сохраняемости
    • 322 Требования к инфраструктуре сохраняемости
    • 324 Место для хранения данных
      • 324 Оперативная память
      • 327 Файловая система
      • 327 Объектная база данных
      • 328 Реляционные базы данных
      • 329 Один или несколько администраторов ресурсов
      • 329 Другие факторы
      • 330 Выбор решения и переход к его воплощению
    • 330 Подход
      • 330 Написание вручную заказного кода
      • 331 Генерация заказного кода
      • 333 Преобразование метаданных (объектно-реляционное преобразование)
      • 335 Повторный выбор
    • 335 Классификация
      • 336 Вид модели предметной области
      • 336 Вид объектно-реляционного преобразователя
      • 337 Отправная точка
      • 338 Акцент на интерфейсе API
      • 339 Тип языка запросов
      • 340 Улучшенная поддержка базы данных
      • 341 Другие функциональные возможности
    • 342 Классификация по шаблонам инфраструктуры
      • 343 Тип метаданных для преобразования
      • 344 Поля идентификации
      • 346 Преобразование внешних ключей
      • 346 Внедренное значение
      • 347 Решения проблемы наследования
      • 348 Карта идентичности
      • 349 Единица работы
      • 349 Загрузка по требованию или энергичная загрузка
      • 350 Управление параллельным выполнением операций
    • 351 Резюме
  • 353 Глава 9. Приведение в действие преобразователя NHibernate
    • 353 Основания для выбора преобразователя NHibernate
    • 354 Краткое введение в NHibernate
      • 354 Подготовка
      • 356 Метаданные для преобразования
      • 362 Небольшой пример интерфейса API
      • 365 Транзакции
    • 366 Требования к инфраструктуре сохраняемости
      • 366 Высокий уровень неведения сохраняемости
      • 367 Некоторые желательные свойства жизненного цикла постоянных объектов-сущностей
      • 369 Аккуратное обращение с реляционной базой данных
    • 370 Классификация
      • 371 Вид модели предметной области
      • 371 Вид объектно-реляционного преобразователя
      • 372 Отправная точка
      • 372 Акцент на интерфейсе API
      • 372 Тип языка запросов
      • 374 Улучшенная поддержка базы данных
      • 375 Другие функциональные возможности
    • 377 Классификация по шаблонам инфраструктуры
      • 377 Тип метаданных для преобразования
      • 377 Поля идентификации
      • 379 Преобразование внешних ключей
      • 380 Внедренное значение
      • 381 Решения проблемы наследования
      • 382 Карта идентичности
      • 383 Единица работы
      • 383 Загрузка по требованию или энергичная загрузка
      • 384 Управление параллельным выполнением операций
      • 384 Дополнительные возможности: перехватчики проверки достоверности
    • 385 NHibernate и ППО
      • 385 Краткий обзор сборок
      • 386 Интерфейс ISession и хранилища
      • 386 Интерфейс ISession, хранилища и транзакции
      • 387 Чего мы достигли
    • 388 Резюме
  • 389 Часть IV. Что дальше
  • 391 Глава 10. Рекомендуемые методы проектирования
    • 392 Все дело в контексте
      • 392 Слои и разделы
      • 393 Основания для разбиения на разделы
      • 393 Ограниченный контекст
      • 394 Взаимосвязь между ограниченными контекстами и разделами
      • 395 Расширение масштабов проектов ППО
      • 395 Основание для разбиения модели предметной области на разделы — ориентация на службы
    • 396 Введение в АОС
      • 396 Что собой представляет АОС
      • 396 Назначение АОС
      • 397 Отличия АОС
      • 397 Что такое служба
      • 398 Что входит в службу
      • 399 О значении четырех руководящих принципов АОС
      • 400 Еще раз о том, что такое служба
      • 401 Место объектной ориентации в АОС
      • 401 Архитектура «клиент-сервер» и АОС
      • 402 Односторонний асинхронный обмен сообщениями
      • 403 Как АОС улучшает масштабируемость
      • 403 Структура службы АОС
      • 404 Взаимодействие службы с другими службами
      • 407 АОС и недоступные службы
      • 408 Сложные процессы обмена сообщениями
      • 408 Масштабирование служб
      • 409 Выводы
    • 410 Инверсия управления и внесение зависимостей
      • 410 Ни один из объектов не изолирован
      • 412 Фабрики, реестры и указатели служб
      • 415 Внесение зависимостей в конструктор
      • 418 Внесение зависимостей в механизм установки
      • 419 Инверсия управления
      • 420 Внесение зависимостей в среде Spring.NET
      • 422 Автосвязывание в среде PicoContainer.NET
      • 424 Вложенные контейнеры
      • 426 Сравнение шаблонов Service Locator и Dependency Injection
      • 427 Выводы
    • 429 Аспектно-ориентированное программирование
      • 429 Из-за чего столько шума
      • 433 Терминология АОП
      • 433 АОП в .NET
      • 447 Выводы
    • 447 Резюме
  • 449 Глава 11. Акцент на пользовательском интерфейсе
    • 449 Предварительный эпилог
    • 451 Шаблон Model-View-Controller
      • 452 Пример: обувной магазин Джо
      • 459 Упрощение интерфейсов представления с помощью адаптеров
      • 459 Развязка контроллера от представления
      • 460 Сочетание представлений и контроллеров
      • 460 Чего все это стоит
    • 461 Разработка Web-формы посредством тестирования
      • 461 Предпосылки
      • 462 Пример
      • 463 Модель предметной области
      • 463 РПТ графического пользовательского интерфейса
      • 470 Реализация Web-формы
      • 472 Выводы
      • 472 Имитация средствами NMock
    • 474 Преобразование и заключение в оболочку
      • 475 Преобразование и заключение объектов в оболочку
      • 476 Заключение МПО в оболочку МП
      • 477 Преобразование МП в МПО
      • 480 Организация отношений между объектами
      • 484 Вопросы состояния
      • 485 Заключительные соображения
    • 486 Резюме
    • 486 Эпилог
  • 489 Часть V. Приложения
  • 491 Приложение А. Другие виды моделей предметной области
    • 493 Объектно-ориентированная модель данных, уровень развитого обслуживания и документы
      • 493 В начале
      • 494 Объектная ориентация и реляционные структуры данных
      • 494 Модель предметной области и объектно-реляционное преобразование
      • 495 Уровень обслуживания
      • 496 Объединение на одном уровне
      • 496 Приложение Джимми и АОС
      • 499 Структура уровня обслуживания
      • 501 Предоставление данных
      • 503 Степень структурирования
      • 505 Несколько слов о транзакциях
      • 505 Выводы
    • 506 Модель базы данных как модель предметной области
      • 506 Место обитания сущностей
      • 511 Функциональный анализ как основа разработки приложений
    • 514 Прагматизм и нетрадиционный подход
      • 515 Предпосылки и история вопроса
      • 515 Краткий обзор архитектуры
      • 519 Пример приложения Джимми для обработки заказов
      • 522 Бизнес-правила размещения заказов
      • 527 Некоторые заключительные соображения
    • 527 Резюме
  • 529 Приложение Б. Перечень рассмотренных шаблонов
  • 536 Список литературы
  • 543 Предметный указатель

Инструкция как скачать книгу Джимми Нильссон: Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и .NET в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и .NET
Рейтинг книги:
0 голосов
1581

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: