Применение наборов данных
Наборы данных могут использоваться в трёх основных областях большинства приложений:
- Клиентская («front end») обработка пользовательской активности и отображение данных.
- Транспортировка сложных структур данных из одной процедуры в другую.
- Обработка бизнес-логики на стороне сервера, извлечение данных и хранение данных.
В этом учебном пособии приведены примеры всех трёх областей использования набора данных.
В то время как существует большое количество путей применения наборов данных в приложениях, некоторыми из наиболее встречаемых являются:
- Традиционный клиент-серверный сценарий «Round Trip».
- Бизнес-логика на стороне сервера.
- Использование набора данных для представления сложных отношений, на которые часто можно ссылаться в приложении.
- Использование набора данных вместо свободных коллекций временных таблиц с целью использования встроенных в набор данных функций.
- Транспортировка данных между ABL- и не ABL приложениями, например, приложениями .NET.
Клиент-серверный сценарий «Round Trip»
В типичном сценарии «Round Trip» взаимодействие клиента с сервером включает следующие этапы:
- Клиентская сессия запрашивает набор данных с сервера в результате возникновения события пользовательского интерфейса, например, пользователь запрашивает данные для конкретного заказа на поставку. Клиент выполняет процедуру на сервере, передавая номер заказа на поставку в качестве входного параметра.
- На стороне сервера процедура определяет набор данных, подключает источники данных, ограничивает объём данных запрошенным набором данных, заполняет набор данных и возвращает его вызывающей процедуре в качестве параметра.
- Клиентская сессия получает набор данных и делает его доступным для пользовательского интерфейса, где пользователь может просматривать и вносить изменения в данные. После внесения изменений набор данных может быть передан другой серверной процедуре для проверки данных и применения изменений к источникам данных.
- Клиент считывает обновлённые данные для слияния со своей версией. Так как могут быть изменения на стороне сервера и/или какие-либо серверные ошибки, которые требуется обработать на стороне клиента.
Бизнес-логика на стороне сервера
В этом сценарии процедура бизнес-логики на сервере использует один или несколько наборов данных для доступа к требуемым данным приложения. Наборы данных структурируют данные стандартным способом, изолируя логику от источников данных. Они также применяют логику проверки достоверности обновлений и прочие поведения стандартным, последовательным способом. Бизнес-логика заполняет набор данных необходимыми данными, которые требуется просмотреть или изменить, а затем применяет изменения данных к базе данных. Таким образом набор данных используется для изоляции определений данных, доступа к данным и логике обновления.
Наборы данных для сложных объектов
Набор данных может быть создан из множества сложных, вычисляемых полей (например, прайс-лист), расчёт которых обычно является достаточно ресурсоёмкой задачей, чтобы выполнять её каждый раз при чтении из исходных таблиц базы данных. После того как набор данных определён и заполнен, а вычисляемые поля рассчитаны, набор данных может многократно использоваться во всём приложении.
Набор данных из одной таблицы
Можно использовать набор данных из одной таблицы вместо временной таблицы (даже в рамках одной сессии), чтобы воспользоваться преимуществом передачи набора данных по ссылке или чтобы передать набор данных в/из приложения, которое использует JSON. Кроме того, набор данных из одной таблицы можно заполнить одной операцией FILL и использовать множество методов и атрибутов, которые доступны для объектов из набора данных.
Наборы данных для несвязанных таблиц
Если существует набор несвязанных таблиц, которые используются или извлекаются вместе, то можно спроектировать набор данных, состоящий из таких таблиц. В таком случае набор данных будет состоять из нескольких верхнеуровневых временных таблиц без использования родительской таблицы.
Обзор реализации
В этом пособии подробно описаны шаги программирования, необходимые для реализации наборов данных в приложении, в том числе определение, создание, заполнение и изменение данных в наборе данных.
Следующая таблица иллюстрирует типичную последовательность шагов, используя сценарий «Round Trip» в качестве модели. Она также демонстрирует распространённое разделение шагов на стороне клиента или сервера. Этот сценарий служит основой для многих примеров и практических упражнений в этом пособии.
Шаг реализации |
Клиент |
Сервер |
Определение объектов | ||
Определение объектов для набора данных. |
V |
V |
Построение набора данных | ||
Определение и отправка набора данных в качестве параметра. |
V |
V |
Заполнение набора данных. |
V |
|
Обновление данных | ||
Сбор изменений. |
V |
|
Определение и отправка изменений в наборе данных в качестве параметра. |
V |
V |
Сохранение изменений в базе данных. |
V |
|
Объединение автоматизированных изменений базы данных. |
V |
|
Очистка | ||
Очистка |
V |
V |