Шаблоны корпоративных приложений

Мартин Фаулер, Дейвид Райс, Мэттью Фоммел, Эдвард Хайет, Роберт Ми, Рэнди Стаффорд

Создание компьютерных систем - дело далеко не простое. По мере того как возрастает их сложность, процессы конструирования соответствующего программного обеспечения становятся все более трудоемкими, причем затраты труда растут экспоненциально. Как и в любой профессии, прогресс в программировании достигается исключительно путем обучения, причем не только на ошибках, но и на удачах - как своих, так и чужих. Книга дает ответы на трудные вопросы, с которыми приходится сталкиваться всем разработчикам корпоративных систем. Автор, известный специалист в области объектно-ориентированного программирования, заметил, что с развитием технологий базовые принципы проектирования и решения общих проблем остаются неизменными, и выделил более 40 наиболее употребительных подходов, оформив их в виде типовых решений. Результат перед вами - незаменимое руководство по архитектуре программных систем для любой корпоративной платформы. Это своеобразное учебное пособие поможет вам не только усвоить информацию, но и передать полученные знания окружающим значительно быстрее и эффективнее, чем это удавалось автору.

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

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

ISBN 978-5-8459-1611-2, 0-321-12742-0

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

Содержание книги «Шаблоны корпоративных приложений»:

  • 17 Предисловие
  • 27 Введение
  • 41 Часть I. Обзор
  • 43 Глава 1. «Расслоение» системы
    • 44 Развитие модели слоев в корпоративных программных приложениях
    • 46 Три основных слоя
    • 48 Где должны функционировать слои
  • 51 Глава 2. Организация бизнес-логики
    • 55 Выбор типового решения
    • 56 Уровень служб
  • 59 Глава 3. Объектные модели и реляционные базы данных
    • 59 Архитектурные решения
    • 64 Функциональные проблемы
    • 66 Считывание данных
    • 67 Взаимное отображение объектов и реляционных структур
      • 67 Отображение связей
      • 71 Наследование
    • 73 Реализация отображения
      • 74 Двойное отображение
    • 75 Использование метаданных
    • 76 Соединение с базой данных
    • 78 Другие проблемы
    • 79 Дополнительные источники информации
  • 81 Глава 4. Представление данных в Web
    • 84 Типовые решения представлений
    • 86 Типовые решения входных контроллеров
    • 86 Дополнительные источники информации
  • 87 Глава 5. Управление параллельными заданиями
    • 88 Проблемы параллелизма
    • 89 Контексты выполнения
    • 91 Изолированность и устойчивость данных
    • 91 Стратегии блокирования
      • 93 Предотвращение возможности несогласованного чтения данных
      • 94 Разрешение взаимоблокировок
    • 95 Транзакции
      • 96 ACID: свойства транзакций
      • 96 Ресурсы транзакций
      • 97 Уровни изоляции
      • 99 Системные транзакции и бизнес-транзакции
    • 101 Типовые решения задачи обеспечения автономного параллелизма
    • 102 Параллельные операции и серверы приложений
    • 104 Дополнительные источники информации
  • 105 Глава 6. Сеансы и состояния
    • 105 В чем преимущество отсутствия «состояния»
    • 107 Состояние сеанса
      • 108 Способы сохранения состояния сеанса
  • 111 Глава 7. Стратегии распределенных вычислений
    • 111 Соблазны модели распределенных объектов
    • 112 Интерфейсы локального и удаленного вызова
    • 114 Когда без распределения не обойтись
    • 115 Сужение границ распределения
    • 116 Интерфейсы распределения
  • 119 Глава 8. Общая картина
    • 120 Предметная область
    • 121 Источник данных
      • 121 Источник данных для сценария транзакции
      • 122 Источник данных для модуля таблицы
      • 122 Источник данных для модели предметной области
    • 123 Слой представления
    • 124 Платформы и инструменты
      • 124 Java и J2EE
      • 125 .NET
      • 126 Хранимые процедуры
      • 126 Web-службы
    • 127 Другие модели слоев
  • 131 Часть II. Типовые решения
  • 133 Глава 9. Представление бизнес-логики
    • 133 Сценарий транзакции (Transaction Script)
      • 133 Принцип действия
      • 135 Назначение
      • 135 Задача определения зачтенного дохода
      • 136 Пример: определение зачтенного дохода (Java)
    • 140 Модель предметной области (Domain Model)
      • 140 Принцип действия
      • 143 Назначение
      • 143 Дополнительные источники информации
      • 144 Пример: определение зачтенного дохода (Java)
    • 148 Модуль таблицы (Table Module)
      • 149 Принцип действия
      • 151 Назначение
      • 152 Пример: определение зачтенного дохода (C#)
    • 156 Слой служб (Service Layer)
      • 157 Принцип действия
        • 157 Разновидности «бизнес-логики»
        • 157 Варианты реализации
        • 158 Быть или не быть удаленному доступу
        • 158 Определение необходимых служб и операций
      • 160 Назначение
      • 160 Дополнительные источники информации
      • 161 Пример: определение зачтенного дохода (Java)
  • 167 Глава 10. Архитектурные типовые решения источников данных
    • 167 Шлюз таблицы данных (Table Data Gateway)
      • 167 Принцип действия
      • 168 Назначение
      • 169 Дополнительные источники информации
      • 170 Пример: класс PersonGateway (C#)
      • 172 Пример: использование объектов ADO.NET DataSet (C#)
    • 175 Шлюз записи данных (Row Data Gateway)
      • 175 Принцип действия
      • 176 Назначение
      • 178 Пример: запись о сотруднике (Java)
      • 181 Пример: использование диспетчера данных для объекта домена (Java)
    • 182 Активная запись (Active Record)
      • 182 Принцип действия
      • 184 Назначение
      • 184 Пример: простой класс Person (Java)
    • 187 Преобразователь данных (Data Mapper)
      • 187 Принцип действия
        • 190 Обращение к методам поиска
        • 191 Отображение данных на поля объектов домена
        • 192 Отображения на основе метаданных
      • 192 Назначение
      • 193 Пример: простой преобразователь данных (Java)
      • 198 Пример: отделение методов поиска (Java)
      • 201 Пример: создание пустого объекта (Java)
  • 205 Глава 11. Объектно-реляционные типовые решения, предназначенные для моделирования поведения
    • 205 Единица работы (Unit of Work)
      • 206 Принцип действия
      • 211 Назначение
      • 212 Пример: регистрация посредством изменяемого объекта (Java)
    • 216 Коллекция объектов (Identity Map)
      • 216 Принцип действия
        • 217 Выбор ключей
        • 217 Явная или универсальная?
        • 217 Сколько нужно коллекций?
        • 218 Куда их поместить?
      • 219 Назначение
      • 219 Пример: методы для работы с коллекцией объектов (Java)
    • 220 Загрузка по требованию (Lazy Load)
      • 221 Принцип действия
      • 223 Назначение
      • 224 Пример: инициализация по требованию (Java)
      • 224 Пример: виртуальный прокси-объект (Java)
      • 226 Пример: использование диспетчера значения (Java)
      • 227 Пример: использование фиктивных объектов (C#)
  • 237 Глава 12. Объектно-реляционные типовые решения, предназначенные для моделирования структуры
    • 237 Поле идентификации (Identity Field)
      • 237 Принцип действия
        • 238 Выбор ключа
        • 239 Представление поля идентификации в объекте
        • 240 Вычисление нового значения ключа
      • 242 Назначение
      • 243 Дополнительные источники информации
      • 243 Пример: числовой ключ (C#)
      • 244 Пример: использование таблицы ключей (Java)
      • 246 Пример: использование составного ключа (Java)
        • 246 Класс ключа
        • 249 Чтение
        • 252 Вставка
        • 256 Обновление и удаление
    • 258 Отображение внешних ключей (Foreign Key Mapping)
      • 258 Принцип действия
      • 261 Назначение
      • 262 Пример: однозначная ссылка (Java)
      • 265 Пример: многотабличный поиск (Java)
      • 266 Пример: коллекция ссылок (C#)
    • 269 Отображение с помощью таблицы ассоциаций (Association Table Mapping)
      • 270 Принцип действия
      • 270 Назначение
      • 271 Пример: служащие и профессиональные качества (C#)
      • 274 Пример: использование SQL для непосредственного обращения к базе данных (Java)
      • 278 Пример: загрузка сведений о нескольких служащих посредством одного запроса (Java)
    • 283 Отображение зависимых объектов (Dependent Mapping)
      • 283 Принцип действия
      • 285 Назначение
      • 285 Пример: альбомы и композиции (Java)
    • 288 Внедренное значение (Embedded Value)
      • 289 Принцип действия
      • 289 Назначение
      • 290 Дополнительные источники информации
      • 290 Пример: простой объект-значение (Java)
    • 292 Сериализованный крупный объект (Serialized LOB)
      • 292 Принцип действия
      • 294 Назначение
      • 294 Пример: сериализация иерархии отделов в формат XML (Java)
    • 297 Наследование с одной таблицей (Single Table Inheritance)
      • 298 Принцип действия
      • 298 Назначение
      • 299 Пример: общая таблица игроков (C#)
        • 301 Загрузка объекта из базы данных
        • 303 Обновление объекта
        • 303 Вставка объекта
        • 304 Удаление объекта
    • 305 Наследование с таблицами для каждого класса (Class Table Inheritance)
      • 305 Принцип действия
      • 306 Назначение
      • 307 Дополнительные источники информации
      • 307 Пример: семейство игроков (C#)
        • 307 Загрузка объекта
        • 310 Обновление объекта
        • 311 Вставка объекта
        • 312 Удаление объекта
    • 313 Наследование с таблицами для каждого конкретного класса (Concrete Table Inheritance)
      • 314 Принцип действия
      • 315 Назначение
      • 316 Пример: конкретные классы игроков (C#)
        • 318 Загрузка объекта из базы данных
        • 320 Обновление объекта
        • 320 Вставка объекта
        • 321 Удаление объекта
    • 322 Преобразователи наследования (Inheritance Mappers)
      • 323 Принцип действия
      • 324 Назначение
  • 325 Глава 13. Типовые решения объектно-реляционного отображения с использованием метаданных
    • 325 Отображение метаданных (Metadata Mapping)
      • 326 Принцип действия
      • 327 Назначение
      • 328 Пример: использование метаданных и метода отражения (Java)
        • 328 Хранение метаданных
        • 330 Поиск по идентификатору
        • 332 Запись в базу данных
        • 334 Извлечение множества объектов
    • 335 Объект запроса (Query Object)
      • 336 Принцип действия
      • 337 Назначение
      • 337 Дополнительные источники информации
      • 337 Пример: простой объект запроса (Java)
    • 341 Хранилище (Repository)
      • 342 Принцип действия
      • 343 Назначение
      • 344 Дополнительные источники информации
      • 344 Пример: поиск подчиненных заданного сотрудника (Java)
      • 345 Пример: выбор стратегий хранилища (Java)
  • 347 Глава 14. Типовые решения, предназначенные для представления данных в Web
    • 347 Модель–представление–контроллер (Model View Controller)
      • 348 Принцип действия
      • 350 Назначение
    • 350 Контроллер страниц (Page Controller)
      • 351 Принцип действия
      • 352 Назначение
      • 352 Пример: простое отображение с помощью контроллера-сервлета и представления JSP (Java)
      • 355 Пример: использование страницы JSP в качестве обработчика запросов (Java)
      • 358 Пример: обработка запросов страницей сервера с применением механизма разделения кода и представления (C#)
    • 362 Контроллер запросов (Front Controller)
      • 362 Принцип действия
      • 364 Назначение
      • 364 Дополнительные источники информации
      • 365 Пример: простое отображение (Java)
    • 368 Представление по шаблону (Template View)
      • 369 Принцип действия
        • 369 Вставка маркеров
        • 370 Вспомогательный объект
        • 370 Условное отображение
        • 371 Итерация
        • 372 Обработка страницы
        • 372 Использование сценариев
      • 372 Назначение
      • 373 Пример: использование страницы JSP в качестве представления с вынесением контроллера в отдельный объект (Java)
      • 375 Пример: страница сервера ASP.NET (C#)
    • 379 Представление с преобразованием (Transform View)
      • 379 Принцип действия
      • 380 Назначение
      • 381 Пример: простое преобразование (Java)
    • 383 Двухэтапное представление (Two Step View)
      • 383 Принцип действия
      • 385 Назначение
      • 390 Пример: двухэтапное применение XSLT (XSLT)
      • 393 Пример: страницы JSP и пользовательские дескрипторы (Java)
    • 397 Контроллер приложения (Application Controller)
      • 398 Принцип действия
      • 400 Назначение
      • 400 Дополнительные источники информации
      • 400 Пример: модель состояний контроллера приложения (Java)
  • 405 Глава 15. Типовые решения распределенной обработки данных
    • 405 Интерфейс удаленного доступа (Remote Facade)
      • 406 Принцип действия
        • 409 Интерфейс удаленного доступа и типовое решение интерфейс сеанса (Session Facade)
        • 409 Слой служб
      • 410 Назначение
      • 410 Пример: использование компонента сеанса Java в качестве интерфейса удаленного доступа (Java)
      • 414 Пример: Web-служба (C#)
    • 419 Объект переноса данных (Data Transfer Object)
      • 419 Принцип действия
        • 421 Сериализация объекта переноса данных
        • 423 Сборка объекта переноса данных из объектов домена
      • 424 Назначение
      • 424 Дополнительные источники информации
      • 425 Пример: передача информации об альбомах (Java)
      • 429 Пример: сериализация с использованием XML (Java)
  • 433 Глава 16. Типовые решения для обработки задач автономного параллелизма
    • 434 Оптимистическая автономная блокировка (Optimistic Offline Lock)
      • 435 Принцип действия
      • 439 Назначение
      • 439 Пример: слой домена с преобразователями данных (Java)
    • 445 Пессимистическая автономная блокировка (Pessimistic Offline Lock)
      • 446 Принцип действия
      • 450 Назначение
      • 450 Пример: простой диспетчер блокировки (Java)
    • 457 Блокировка с низкой степенью детализации (Coarse-Grained Lock)
      • 457 Принцип действия
      • 460 Назначение
      • 460 Пример: общая оптимистическая автономная блокировка (Java)
      • 466 Пример: общая пессимистическая автономная блокировка (Java)
      • 467 Пример: оптимистическая автономная блокировка корневого элемента (Java)
    • 468 Неявная блокировка (Implicit Lock)
      • 469 Принцип действия
      • 470 Назначение
      • 470 Пример: неявная пессимистическая автономная блокировка (Java)
  • 473 Глава 17. Типовые решения для хранения состояния сеанса
    • 473 Сохранение состояния сеанса на стороне клиента (Client Session State)
      • 473 Принцип действия
      • 474 Назначение
    • 475 Сохранение состояния сеанса на стороне сервера (Server Session State)
      • 475 Принцип действия
      • 478 Назначение
    • 479 Сохранение состояния сеанса в базе данных (Database Session State)
      • 479 Принцип действия
      • 481 Назначение
  • 483 Глава 18. Базовые типовые решения
    • 483 Шлюз (Gateway)
      • 484 Принцип действия
      • 484 Назначение
      • 485 Пример: создание шлюза к службе отправки сообщений (Java)
    • 489 Преобразователь (Mapper)
      • 490 Принцип действия
      • 490 Назначение
    • 491 Супертип слоя (Layer Supertype)
      • 491 Принцип действия
      • 491 Назначение
      • 491 Пример: объект домена (Java)
    • 492 Отделенный интерфейс (Separated Interface)
      • 493 Принцип действия
      • 494 Назначение
    • 495 Реестр (Registry)
      • 495 Принцип действия
      • 497 Назначение
      • 498 Пример: реестр с единственным экземпляром (Java)
      • 499 Пример: реестр, уникальный в пределах потока (Java)
    • 500 Объект-значение (Value Object)
      • 501 Принцип действия
      • 502 Назначение
        • 502 Совпадение названий
    • 502 Деньги (Money)
      • 503 Принцип действия
      • 506 Назначение
      • 506 Пример: класс Money (Java)
    • 511 Частный случай (Special Case)
      • 512 Принцип действия
      • 512 Назначение
      • 512 Дополнительные источники информации
      • 513 Пример: объект NullEmployee (C#)
    • 514 Дополнительный модуль (Plugin)
      • 514 Принцип действия
      • 515 Назначение
      • 516 Пример: генератор идентификаторов (Java)
    • 519 Фиктивная служба (Service Stub)
      • 519 Принцип действия
      • 520 Назначение
      • 521 Пример: служба определения величины налога (Java)
    • 523 Множество записей (Record Set)
      • 524 Принцип действия
        • 524 Явный интерфейс
      • 526 Назначение
  • 527 Список основных источников информации
  • 532 Предметный указатель

Инструкция как скачать книгу Мартин Фаулер, Дейвид Райс, Мэттью Фоммел, Эдвард Хайет, Роберт Ми, Рэнди Стаффорд: Шаблоны корпоративных приложений в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Шаблоны корпоративных приложений
Рейтинг книги:
2 голоса
1045

Поиск книг:




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

Статистика: