Главная » Delphi » Клиент DataSnap

0

Завершив построение сервера, можно  приступить к созданию клиента, который будет использовать службы, предоставляемые сервером. Рассмотрим параметры, дос тупные при построение клиента DataSnap.

Выбор соединения

Иерархия классов  Delphi  для соединения клиента с сервером начинается с класса TDispatchConnection. Этот базовый объект является родительским для всех типов соединений, которые будут рассмотрены ниже.  В случае, если  тип соединения не иг рает  существенной роли, то  речь  будет идти  просто об объекте класса  TDispatch- Connection..

Класс TDCOMConnection обеспечивает базовую защиту и аутентификацию, исполь

зуя стандартную реализацию соответствующих служб в Windows.  Этот  тип  соединенияособенно полезен при  использовании приложений в intranet и extranet (когда  его при меняют пользователи в пределах одного  домена). В рамках  технологии DCOM  можно использовать раннее связывание, а также  обратные вызовы и  компоненты Connec- tionPoints (обратные вызовы можно  применять и при  использовании сокетов, одна ко в этом случае придется ограничиться поздним связыванием). К недостаткам исполь зования такого типа соединения можно отнести следующие.

•  Во многих  случаях усложняется настройка.

•  Этот тип соединения плохо согласуется с концепцией брандмауэров.

•  Для компьютеров под управлением Windows 95 требуется установка  поддержки

DCOM95.

Гораздо проще настроить соединение, предоставляемое компонентом TSocket- Connection.  Кроме   того,   оно   использует  лишь   один   порт   для  всего   трафика DataSnap, поэтому  настроить  брандмауэр администратору  будут существенно про ще,  чем  при  работе с DCOM.  Для  поддержки такой  схемы  работы потребуется за пустить  ScktSrvr (находящуюся в каталоге <Delphi>\BIN), т.е. для работы соедине ния  на сервере потребуется лишь один  дополнительный файл.  В Delphi 4 также  тре бовалось наличие пакета  WinSock2,  что для пользователей Windows  9x означает установку дополнительного программного обеспечения. Однако, если приложение работает в Delphi 6, причем обратные вызовы не используются, то можно  установить значение свойства TSocketConnection.SupportCallbacks равным False. В этом случае на клиентских машинах достаточно использовать пакет WinSock1.

Начиная с версии Delphi 4 стало  возможным использование компонента TCORBA- Connection. Это  эквивалент DCOM  в рамках  открытого стандарта, включающего в себя множество функциональных возможностей для осуществления в создаваемом приложении автоматического поиска, обеспечения отказоустойчивой архитектуры и автоматической балансировки загрузки.  Применение CORBA окажется неизбежным при  создании независимых ни от платформы, ни от языка  приложений DataSnap, ис пользующих соединения.

Впоследствии появился компонент TWebConnection. Этот  компонент соедине ния  позволяет поддерживать взаимодействие составных частей приложения на ос нове  протокола HTTP  или  HTTPS.  На  использование такого  типа  соединения на кладываются следующие  ограничения.

•  Не поддерживаются обратные вызовы любого типа.

•  На машине клиента должна быть установлена библиотека WININET.DLL.

•  На серверной машине  должен  быть установлен сервер Internet. Либо служба MS Internet Information Server (IIS) версии 4.0, либо сервер Netscape версии не ни же 3.6.

Но  эти  ограничения  являются оправданными, если  приложение работает через

Internet или должно проходить брандмауэр, которым вы не можете управлять.

В Delphi  6 появился новый тип соединения: TSOAPConnection. Его поведение ана логично TWebConnection, но применяется для соединения с Web службой  DataSnap. В отличие от применения других компонентов соединения DataSnap, здесь нельзя ис пользовать свойство TSoapConnection.AppServer для вызова  тех методов интерфей са сервера приложения, которые не являются методами IAppServer. Тут, вместо под ключения с помощью интерфейса приложения к модулю данных  SOAP, используется отдельный объект THTTPRIO.

Помните, что использование всех этих транспортных компонентов подразумевает

корректную установку в системе протокола TCP/IP.  Существует  лишь одно  исключе ние,   когда   посредством  DCOM   связываются  два   компьютера  под   управлением Windows NT.  В этом  случае  для  определения типа  используемого протокола DCOM нужно запустить утилиту DCOMCNFG, а затем  переместить требуемый протокол в верхнюю  часть   списка,   расположенного  во  вкладке   Default  Protocols.  DCOM   для Windows 9x поддерживает лишь протокол TCP/IP.

Подключение компонентов

Из  рис. 21.3 видно,  что  составные части  приложения  DataSnap взаимодействуют через границы уровней. В настоящем разделе рассматриваются основные свойства и компоненты, благодаря которым клиент может взаимодействовать с сервером.

Для  обеспечения взаимодействия клиента с сервером необходимо использовать один  из потомков класса  TDispatchConnection, рассмотренных в предыдущем раз деле. У каждого  компонента имеются свойства, присущие только  данному типу соеди нения, однако   все  они  позволяют определить,  где  найти серверное  приложение. Класс  TDispatchConnection представляет  собой   аналог   компонента  TDatabase при  использовании в приложениях клиент/сервер, поскольку  он  определяет канал связи  с внешней системой и работает как трубопровод для всех остальных компонен тов при их взаимодействии с элементами этой системы.

Установив соединение с сервером, необходимо выбрать способ  использования служб, предоставляемых сервером. Для этого  в клиентскую часть приложения следует поместить компонент TСlientDataSet и связать  его с компонентом TDispatchCon- nection. После  этого  в списке  свойства ProviderNames можно  будет просматривать перечень всех экспортируемых сервером провайдеров. Таким  образом, в приложени ях  DataSnap компонент  TСlientDataSet функционально  аналогичен  компоненту TТable в приложениях клиент/сервер.

С помощью свойства TDispatchConnection.AppServer можно  также  вызывать

пользовательские методы, существующие  на сервере. Например, в следующей  строке

кода на сервере вызывается функция Login, которой передаются два строковых па

раметра, а возвращаемое значение имеет тип Boolean:

LoginSucceeded := DCOMConnection1.AppServer.Login(UserName, Password);

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии