Иллюстрированный самоучитель по Delphi 7 для профессионалов

Клиент многозвенного распределенного приложения

  • Клиент многозвенного распределенного приложения

    Клиентское ПО в распределенном многозвенном приложении имеет особенности архитектуры, продиктованные его ролью – ведь большая часть бизнес-логики и функций обработки данных сосредоточены в сервере приложений (см. гл. 21).
  • Структура клиентского приложения

    По своей структуре (рис. 22.1) клиентское приложение подобно обычному приложению баз данных, рассматриваемому в гл. 11. | Рис. 22.1. Структура клиентской части многозвенного приложения Delphi | Соединение клиента с сервером приложений осуществляется специализированными компонентами DataSnap (см. гл.
  • Клиентские наборы данных

    В Палитре компонентов Delphi представлено несколько компонентов, инкапсулирующих клиентский набор данных. В то же время при разработке настоящих удаленных клиентских приложений применяется компонент TClientDataSet. Внесем ясность в этот вопрос.
  • Компонент TClientDataSet. Получение данных от компонента – провайдера.

    Компонент TclientDataSet используется в клиентской части многозвенного распределенного приложения. Он инкапсулирует набор данных, переданный при помощи компонента-провайдера из удаленного набора данных. Компонент обеспечивает выполнение следующих основных функций:
  • Кэширование и редактирование данных

    После получения записей от провайдера набор данных сохраняется в локальном буфере памяти. И все вносимые изменения после применения метода Post также сохраняются локально и не пересылаются на сервер. Буфер изменений доступен при помощи свойства: | property Delta: OleVariant;
  • Управление запросом на сервере

    Компонент TdientDataSet может не только эффективно управлять своим набором данных, но и влиять на выполнение серверного компонента, с которым он связан через провайдер. | Свойство: | property CornmandText: string;
  • Использование индексов

    Обычно использование индексов – прерогатива сервера БД. Из компонентов Delphi только табличные компоненты могут в какой-то степени управлять использованием индексов. Очевидно, что удаленное соединение не способствует эффективному управлению индексами набора данных на сервере.
  • Сохранение набора данных в файлах

    Клиентское приложение может использовать одну очень удобную функцию компонента TClientDataSet. Представим, что соединение между сервером и клиентом обладает малой пропускной способностью и к тому же часто обрывается.
  • Работа с данными типа BLOB. Представление данных в формате XML.

    Если набор данных сервера содержит большие поля (например, изображения), передача данных по медленному каналу займет очень много времени, что, несомненно, снизит эффективность приложения. Простейшее решение проблемы – передача клиенту данных типа BLOB только в том случае, когда это ему действительно необходимо – т. е. исключительно по его запросу.
  • Агрегаты. Объекты-агрегаты.

    Наличие локального буфера данных позволяет компоненту TClientDataSet реализовать ряд дополнительных функций, основанных на использовании агрегатных функций применительно к полям всего набора данных, загруженного в локальный буфер. | К агрегатным функциям относятся: | AVG – вычисляет среднее значение;
  • Агрегатные поля. Группировка и использование индексов.

    Агрегатные поля не входят в структуру полей набора данных, т. к. агрегатные функции подразумевают объединение записей таблицы для получения результата. Следовательно, значение агрегатного поля нельзя связать с какой-то одной записью, оно относится ко всем или группе записей.
  • Вложенные наборы данных. Дополнительные свойства полей клиентского набора данных.

    В гл. 14 рассматривался вопрос организации между таблицами отношения "один-ко-многим", когда через одинаковое значение поля внешнего ключа одна запись главной таблицы связывается с несколькими записями подчиненной таблицы.
  • Обработка ошибок

    Особенности использования компонента TClientDataSet распространяются также и на обработку ошибок. Ведь клиентский набор данных должен реагировать не только на ошибки, возникшие локально, но и на ошибки сохранения изменений на сервере. | В первом случае разработчик может применить стандартные способы.
  • Пример "тонкого" клиента

    Пример клиентского приложения является частью группы проектов SimpleRemote.bpg и предназначен для взаимодействия с сервером приложений simpleAppSrvr (рис. 22.5), процесс создания которого подробно рассматривался в гл. 21. | Рис. 22.5.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.