Механизм удаленного доступа к данным DataSnap. Компонент TDCOMConnection.
Для передачи пакетов данных между компонентом-провайдером и клиентским набором данных (см. рис. 20.2) (между клиентом и сервером) должен существовать некий транспортный канал, обеспечивающий физическую передачу данных. Для этого могут использоваться разнообразные транспортные протоколы, поддерживаемые операционной системой.
Различные типы соединений, позволяющие настроить транспорт и начать передачу и прием данных, инкапсулированы в нескольких компонентах DataSnap. Для создания соединения с тем или иным транспортным протоколом разработчику достаточно перенести соответствующий компонент на форму и правильно настроить несколько свойств. Ниже рассматриваются варианты настройки транспортных протоколов для компонентов, использующих DCOM, сокеты TCP/IP, http.
Компонент TDCOMConnection
Компонент TDCOMConnection предоставляет транспорт на основе технологии Distributed COM и применяется в основном для организации транспорта в рамках локальной сети.
Для настройки соединения DCOM в первую очередь необходимо задать имя компьютера, на котором функционирует сервер приложений. Для компонента TDCOMConnection это должен быть зарегистрированный сервер Автоматизации. Имя компьютера задается свойством:
property ComputerName: string;
Если оно задано правильно, в списке свойства:
property ServerName: string;
…в Инспекторе объектов можно выбрать один из доступных серверов. При выборе сервера также автоматически заполняется свойство:
property ServerGUID: string;
Причем для успешного соединения клиента с сервером приложений оба свойства должны быть заданы в обязательном порядке. Только имя сервера или только его GUID не обеспечат правильный доступ к удаленному объекту СОМ.
Открытие и закрытие соединения осуществляется свойством:
property Connected: Boolean;
…или методами:
procedure Open/procedure Close;
…соответственно.
Для организации передачи данных между клиентом и сервером компонент TDCOMConnection предоставляет интерфейс IAppServer:
property AppServer: Variant;
…который также может быть получен методом:
function GetServer: lAppServer; override;
Свойство:
property ObjectBroker: TCustomObjectBroker;
…позволяет использовать экземпляр компонента TsimpleObjectBroker для получения списка доступных серверов по время выполнения (см. ниже).
Методы-обработчики компонента TDCOMConnection представлены в табл. 20.1.
Таблица 20.1. Методы-обработчики событий компонента TDCOMConnection.
Объявление | Описание |
---|---|
property Af terConnect: TNotifyEvent; | Вызывается после установления соединения |
property AfterDisconnect: TNotifyEvent; | Вызывается после разрыва соединения |
property BeforeConnect: TNotifyEvent; | Вызывается перед установлением соединения |
property BeforeDisconnect: TNotifyEvent; | Вызывается перед разрывом соединения |
type TGetUsernameEvent = procedure (Sender: TOb j ect; var Username: string) of object; property OnGetUsername: TGetUsernameEvent; |
Вызывается непосредственно перед появлением диалога удаленной авторизации пользователя. Для этого свойство LoginPrompt должно иметь значение True. Параметр Username может содержать имя пользователя по умолчанию, которое появится в диалоге |
type TLoginEvent = procedure (Sender: TOb j ect; Username, Password: string) of object; property OnLogin: TLoginEvent; |
Вызывается после открытия соединения, если свойство LoginPrompt имеет значение True. Параметры Username и Password содержат имя пользователя и пароль, введенные при авторизации |