- •Оглавление
- •Предисловие
- •Введение
- •Часть I Обзор Глава 1 "Расслоение" системы
- •Развитие модели слоев в корпоративных программных приложениях
- •Три основных слоя
- •Где должны функционировать слои
- •Глава 2 Организация бизнес-логики
- •Выбор типового решения
- •Глава 3 Объектные модели и реляционные базы данных
- •Архитектурные решения
- •Функциональные проблемы
- •Считывание данных
- •Взаимное отображение объектов и реляционных структур
- •Отображение связей
- •Наследование
- •Реализация отображения
- •Двойное отображение
- •Использование метаданных
- •Соединение с базой данных
- •Другие проблемы
- •Дополнительные источники информации
- •Глава 4 Представление данных в Web
- •Типовые решения представлений
- •Типовые решения входных контроллеров
- •Дополнительные источники информации
- •Глава 5 Управление параллельными заданиями
- •Проблемы параллелизма
- •Контексты выполнения
- •Изолированность и устойчивость данных
- •Стратегии блокирования
- •Предотвращение возможности несогласованного чтения данных
- •Разрешение взаимоблокировок
- •Транзакции
- •Типовые решения задачи обеспечения автономного параллелизма
- •Параллельные операции и серверы приложений
- •Дополнительные источники информации
- •Глава 6 Сеансы и состояния
- •В чем преимущество отсутствия "состояния"
- •Состояние сеанса
- •Глава 7 Стратегии распределенных вычислений
- •Соблазны модели распределенных объектов
- •Интерфейсы локального и удаленного вызова
- •Когда без распределения не обойтись
- •Сужение границ распределения
- •Интерфейсы распределения
- •Глава 8 Общая картина
- •Предметная область
- •Источник данных
- •Платформы и инструменты
- •Другие модели слоев
- •Часть II Типовые решения Глава 9 Представление бизнес-логики Сценарий транзакции (Transaction Script)
- •Модель предметной области (Domain Model)
- •Модуль таблицы (Table Module)
- •Слой служб (Service Layer)
- •Глава 10 Архитектурные типовые решения источников данных Шлюз таблицы данных (Table Data Gateway)
- •Шлюз записи данных (Row Data Gateway)
- •Активная запись (Active Record)
- •Преобразователь данных (Data Mapper)
- •Глава 11 Объектно-реляционные типовые решения, предназначенные для моделирования поведения Единица работы (Unit of Work)
- •Коллекция объектов (Identity Map)
- •Загрузка по требованию (Lazy Load)
- •Глава 12 Объектно-реляционные типовые решения, предназначенные для моделирования структуры Поле идентификации (Identity Field)
- •Отображение внешних ключей (Foreign Key Mapping)
- •Отображение с помощью таблицы ассоциаций (Association Table Mapping)
- •Отображение зависимых объектов (Dependent Mapping)
- •Внедренное значение (Embedded Value)
- •Сериализованный крупный объект (Serialized lob)
- •Наследование с одной таблицей (Single Table Inheritance)
- •Наследование с таблицами для каждого класса (Class Table Inheritance)
- •Наследование с таблицами для каждого конкретного класса (Concrete Table Inheritance)
- •Преобразователи наследования (Inheritance Mappers)
- •Глава 13 Типовые решения объектно-реляционного отображения с использованием метаданных Отображение метаданных (Metadata Mapping)
- •Объект запроса (Query Object)
- •Хранилище (Repository)
- •Глава 14 Типовые решения, предназначенные для представления данных в Web Модель-представление-контроллер (Model View Controller)
- •Контроллер страниц (Page Controller)
- •Контроллер запросов (Front Controller)
- •Представление по шаблону (Template View)
- •Представление с преобразованием (Transform View)
- •Двухэтапное представление (Two Step View)
- •Контроллер приложения (Application Controller)
- •Глава 15 Типовые решения распределенной обработки данных Интерфейс удаленного доступа (Remote Facade)
- •Объект переноса данных (Data Transfer Object)
- •Глава 16 Типовые решения для обработки задач автономного параллелизма Оптимистическая автономная блокировка (Optimistic Offline Lock)
- •Пессимистическая автономная блокировка (Pessimistic Offline Lock)
- •Блокировка с низкой степенью детализации (Coarse-Grained Lock)
- •Неявная блокировка (Implicit Lock)
- •Глава 17 Типовые решения для хранения состояния сеанса Сохранение состояния сеанса на стороне клиента (Client Session State)
- •Сохранение состояния сеанса на стороне сервера (Server Session State)
- •Сохранение состояния сеанса в базе данных (Database Session State)
- •Глава 18 Базовые типовые решения Шлюз (Gateway)
- •Преобразователь (Mapper)
- •Супертип слоя (Layer Supertype)
- •Отделенный интерфейс (Separated Interface)
- •Реестр (Registry)
- •Объект-значение (Value Object)
- •Деньги (Money)
- •Частный случай (Special Case)
- •Дополнительный модуль (Plugin)
- •Фиктивная служба (Service Stub)
- •Множество записей (Record Set)
- •Список типовых решений
- •Шпаргалка
- •Как управлять сложным потоком функций приложения?
- •Как взаимодействовать с базой данных?
- •Как избежать загрузки в оперативную память всего содержимого базы данных?
- •Как сохранить структуры наследования в реляционной базе данных?
Список типовых решений
Активная запись (Active Record). Объект, выполняющий роль оболочки для строки таблицы или представления базы данных. Он инкапсулирует доступ к базе данных и добавляет к данным логику домена.
Блокировка с низкой степенью детализации (Coarse-Grained Lock). Блокирует группу взаимосвязанных объектов как единый элемент.
Внедренное значение (Embedded Value). Отображает объект на несколько полей таблицы, соответствующей другому объекту.
Двухэтапное представление (Two Step View). Выполняет визуализацию данных домена в два этапа: вначале формирует некое подобие логической страницы, после чего преобразует логическую страницу в формат HTML.
Деньги (Money). Представляет денежное значение.
Дополнительный модуль (Plugin). Связывает классы во время настройки, а не во время компиляции приложения.
Единица работы (Unit of Work). Содержит список объектов, охватываемых бизнес-транзакцией, координирует запись изменений в базу данных и разрешает проблемы параллелизма.
Загрузка по требованию (Lazy Load). Объект, который не содержит все требующиеся данные, однако может загрузить их в случае необходимости.
Интерфейс удаленного доступа (Remote Facade). Предоставляет интерфейс с низкой степенью детализации для доступа к объектам, имеющим интерфейс с высокой степенью детализации, в целях повышения эффективности работы в сети.
Коллекция объектов (Identity Map). Гарантирует, что каждый объект будет загружен из базы данных только один раз, сохраняя загруженный объект в специальной коллекции. При получении запроса просматривает коллекцию в поисках нужного объекта.
Контроллер запросов (Front Controller). Контроллер, который обрабатывает все запросы к Web-сайту.
Контроллер приложения (Application Controller). Точка централизованного управления порядком отображения интерфейсных экранов и потоком функций приложения.
Контроллер страниц (Page Controller). Объект, который обрабатывает запрос к конкретной Web-странице или выполнение конкретного действия на Web-сайте.
Множество записей (Record Set). Представление табличных данных в оперативной памяти.
Модель-представление-контроллер (Model View Controller). Распределяет обработку взаимодействия с пользовательским интерфейсом между тремя участниками.
Модель предметной области (Domain Model). Объектная модель домена, охватывающая поведение (функции) и свойства (данные).
Модуль таблицы (Table Module). Объект, охватывающий логику обработки всех записей хранимой или виртуальной таблицы базы данных.
Наследование с одной таблицей (Single Table Inheritance). Представляет иерархию наследования классов в виде одной таблицы, столбцы которой соответствуют всем полям классов, входящих в иерархию.
Наследование с таблицами для каждого класса (Class Table Inheritance). Представляет иерархию наследования классов, используя по одной таблице для каждого класса.
Наследование с таблицами для каждого конкретного класса (Concrete Table Inheritance). Представляет иерархию наследования классов, используя по одной таблице для каждого конкретного класса этой иерархии.
Неявная блокировка (Implicit Lock). Предоставляет инфраструктуре приложения или супертипу слоя право накладывать автономные блокировки.
Объект-значение (Value Object). Небольшие простые объекты наподобие денежных значений или диапазонов дат, равенство которых не основано на равенстве идентификаторов.
Объект запроса (Query Object). Объект, представляющий запрос к базе данных.
Объект переноса данных (Data Transfer Object). Применяется для переноса данных между процессами в целях уменьшения количества вызовов.
Оптимистическая автономная блокировка (Optimistic Offline Lock). Предотвращает возникновение конфликтов между параллельными бизнес-транзакциями путем обнаружения конфликта и отката транзакции.
Отделенный интерфейс (Separated Interface). Предполагает размещение интерфейса и его реализации в разных пакетах.
Отображение внешних ключей (Foreign Key Mapping). Отображает ассоциации между объектами на ссылки внешнего ключа между таблицами базы данных.
Отображение зависимых объектов (Dependent Mapping). Передает некоторому классу полномочия по выполнению отображения для дочернего класса.
Отображение метаданных (Metadata Mapping). Хранит описание деталей объектно-реляционного отображения в виде метаданных.
Отображение с помощью таблицы ассоциаций (Association Table Mapping). Сохраняет множество ассоциаций в виде таблицы, содержащей внешние ключи таблиц, связанных ассоциациями.
Пессимистическая автономная блокировка (Pessimistic Offline Lock). Предотвращает возникновение конфликтов между параллельными бизнес-транзакциями, предоставляя доступ к данным в конкретный момент времени только одной бизнес-транзакции.
Поле идентификации (Identity Field). Сохраняет идентификатор записи базы данных для поддержки соответствия между объектом приложения и строкой базы данных.
Представление по шаблону (Template View). Преобразует результаты выполнения запроса в формат HTML путем внедрения маркеров в HTML-страницу.
Представление с преобразованием (Transform View). Представление, которое поочередно обрабатывает элементы данных домена и преобразует их в код HTML.
Преобразователи наследования (Inheritance Mappers). Структура, предназначенная для организации преобразователей, которые работают с иерархиями наследования.
Преобразователь (Mapper). Объект, устанавливающий взаимодействие между двумя независимыми объектами.
Преобразователь данных (Data Mapper). Слой преобразователей (Mapper), который осуществляет передачу данных между объектами и базой данных, сохраняя последние независимыми друг от друга и от самого преобразователя.
Реестр (Registry). "Глобальный" объект, который используется другими объектами для поиска общих объектов или служб.
Сериализованный крупный объект (Serialized LOB). Сохраняет граф объектов путем их сериализации в единый крупный объект (Large Object — LOB) и помещает его в поле базы данных.
Слой служб (Service Layer). Схема определения границ приложения посредством слоя служб, который устанавливает множество доступных действий и координирует отклик приложения на каждое действие.
Сохранение состояния сеанса в базе данных (Database Session State). Сохраняет состояние сеанса как обычное содержимое базы данных.
Сохранение состояния сеанса на стороне клиента (Client Session State). Сохраняет состояние сеанса на стороне клиента.
Сохранение состояния сеанса на стороне сервера (Server Session State). Сохраняет сериализованное представление состояния сеанса на стороне сервера.
Супертип слоя (Layer Supertype). Тип, выполняющий роль суперкласса для всех классов своего слоя.
Сценарий транзакции (Transaction Script). Способ организации бизнес-логики по процедурам, каждая из которых обслуживает один запрос, инициируемый слоем представления.
Фиктивная служба (Service Stub). Устраняет зависимость приложения от труднодоступных или проблемных служб на время тестирования.
Хранилище (Repository). Выступает в роли посредника между слоем домена и слоем отображения данных, предоставляя интерфейс в виде коллекции для доступа к объектам домена.
Частный случай (Special Case). Производный класс, описывающий поведение объекта в особых ситуациях.
Шлюз (Gateway). Объект, инкапсулирующий доступ к внешней системе или источнику данных.
Шлюз записи данных (Row Data Gateway). Объект, выполняющий роль шлюза (Gateway, 753) к отдельной записи источника данных. Каждой строке таблицы базы данных соответствует свой экземпляр шлюза записи данных (Row Data Gateway).
Шлюз таблицы данных (Table Data Gateway). Объект, выполняющий роль шлюза (Gateway, 753) к базе данных.
