|
|
|||||||||||||||||||||||||||||
|
Учебный пример: Многозвенная архитектура DataSnap XE для баз данныхИсточник: embarcadero Vsevolod Leonov
В этой статье рассматривается создание простейшего многозвенного приложения для баз данных с использованием DataSnap XE. Этот пошаговый учебный пример очень прост, поэтому даже начинающие программисты Delphi смогут его воспроизвести. Целью этого учебного примера является знакомство с процессом создания клиентов и серверов DataSnap. Наш пример "многозвенное приложение для баз данных" подразумевает клиентское и серверное приложение. Обе программы - Delphi VCL Forms Win32, а для связи используется протокол TCP/IP. Надеемся, вам понравится! ВведениеВ ходе данного учебного примера мы узнаем, как создавать просты многозвенные решения для баз данных, состоящих из сервера и клиентского приложения. Для данного примера подойдет любая база данных; однако здесь рассмотрен Embarcadero InterBase XE RDBMS в качестве сервера баз данных. InterBase XE поставляется с демонстрационной базой данных "EMPLOYEE" которая и будет использоваться в дальнейшем. Сначала нам необходимо сконфигурировать Delphi Data Explorer для связи с этой базой данных "EMPLOYEE". Конфигурирование подключения к базе данных в Data ExplorerВ панели Data Explorer кликните правой кнопкой мыши на узле "INTERBASE", выберите "Add New Connection" и задайте имя "IBEMPLOYEE". Кликните правой кнопкой на созданном узле "IBEMPLOYEE" в панели Data Explorer и выберите "Modify Connection" для конфигурирования соединения с базой данных. По-умолчанию InterBase XE устанавливается и размещает демонстрационную базу данных "EMPLOYEE" в папку "c:\Embarcadero\InterBase\examples\database\employee.gdb". По-умолчанию параметр username установлен в значение "sysdba", а пароль "masterkey". Кликните на "Test Connection" для проверки правильности конфигурирования подключения к базе данных. Теперь мы готовы к тому, чтобы создать серверное и клиентское приложение для многозвенной системы на основе базы данных. Создание сервера DataSnap Server для многозвенной системыНа данном первом шаге мы создадим новый сервер DataSnap с использованием мастера "DataSnap Server". Выберите "File -> New -> Other", а в диалоге "New Items" кликните два раза на иконке "DataSnap Server" в категории "Delphi Projects -> DataSnap Server". На первой странице оставьте опцию "Project type" как "VCL Forms Application". На второй странице также оставим опции по-умолчанию. На третьей страниц оставьте значение "211" для номера порта TCP/IP. Желательно всегда проверять доступность порта нажатием на кнопку "Test Port". На последней странице выберите "TDSServerModule" в качестве базового для класса серверных методов. Кликните на кнопке "Finish", а мастер сгенерирует новый проект, состоящий из трех модулей. Кликните на "File -> Save All". Создайте новую папку для всех файлов данного примера - например, "C:\DataSnapLabs\MultiTier\". Сохраните главную форму приложения как "FormServerUnit" и согласитесь с именами по-умолчанию для всех остальных файлов - обычно, "ServerContainerUnit1" и "ServerMethodsUnit1" - и сохраните сам проект как "MultiTierServer". Реализация подключения к базе данных в простом сервере DataSnap вообще не требует кодирования! Задача состоит лишь в добавлении нескольких компонентов к "ServerMethodsUnit1". В ходе выполнения данного примера мы собираемся обеспечить к одной таблице CUSTOMER базы данных EMPLOYEE. Клиентское приложение будет обладать функциональностью, связанной с отображением и изменением данной таблицы. Целью следующего шага является добавление компонентов "TSQLConnection", "TSQLDataSet" и "TDataSetProvider" в разрешенную для размещения область "ServerMethodsUnit1" и их связывание. Самый простой способ сделать это - воспользоваться возможностью взаимодействия Data Explorer и дизайнера VCL Forms. Просто выберите нужную таблицу в Data Explorer и перетащите ее на "ServerMethodsUnit1" для автоматического создания и конфигурирования этих двух компонентов. Обратите внимание, что компоненты TSQLConnection и TSQLDataSet "переползли" на модуль серверных методов, но они также получили правильные имена и нужные свойства. Последним шагом является размещение компонента "TDataSetProvider" (закладка Data Access в палитре компонентов) на модуле данных и установка его свойства "DataSet" в значение "CUSTOMER". Желательно всегда задавать имя провайдеру данных с каким-либо смыслом, например, "dspCustomer". Мы полностью реализовали наш демонстрационный сервер. Это было легко, и нам не потребовалось вводить ни одной строчки кода! Для того чтобы создать клиентское приложение, сервер должен быть запущен. Выберем Select "Run -> Run Without Debugging" (запуск без отладчика) для запуска сервера, а затем минимизируем его окно. Оставим сервер запущенным до окончания выполнения данного учебного примера. Создания клиента DataSnap Client для многозвенного решения для БДКликните правой кнопкой мыши на проектной группе (project group) и выберите "Add New Project". В диалоге "New Items" выберите "VCL Forms Application" в категории "Delphi Projects". Кликните "OK". К существующей проектной группе добавится новый проект. Кликните на "File -> Save All". Выберите папку, в которой был сохранен серверный проект, и сохраните туда модуль главной формы клиентского приложения как "FormClientUnit", новый проект как "MultiTierClient" и новую проектную группу как "MultiTierGrp". Поместите компонент "TSQLConnection" на клиентской форме и задайте свойство "Driver" в значение "DataSnap". Снимите "галочку" на свойстве "LoginPrompt", теперь данное свойство имеет значение "False". Поместите компонент "TDSProviderConnection" (раздел DataSnap Client палитры компонентов) на форму и установите его свойство "SQLConnection" из выпадающего списка так, чтобы оно указывало на компонент "SQLConnection1", который уже находится на форме. Введите "TServerMethods1" в качестве значения свойства "DSProviderConnection1.ServerClassName". Добавьте компонент "TClientDataSet" на форму. Поставьте значение свойства "RemoteServer" в "DSProviderConnection1". В выпадающем списке свойства "ProviderName" выберите "dspCUSTOMER". Добавьте на форму компонент "TDataSource" и установите свойство "DataSet" в значение "ClientDataSet1". Добавьте компонент "TDBGrid" на форму и установите его свойство "DataSource" в значение "DataSource1". Добавьте компонент "TDBNavigator" на форму и установите его свойство "DataSource" в значение "DataSource1". Добавьте компонент "TCheckBox" на форму. Измените его свойство "Caption" на "Active". Кликните два раза на компоненте "CheckBox1" и введите следующий код для события "OnClick":
Добавьте компонент "TButton" на форму. Кликните два раза на нем и введите следующий код для события "OnClick":
На данной стадии проекта клиентское приложение выглядит так: Теперь настало время увидеть работающего клиента в действии! Запустите приложение, кликните на компоненте check-box с надписью "Active". На экране должна отобразиться информация в таблице! Сделайте некоторые изменения в данных, кликните на кнопке "Post" компонента DBNavigator для фиксации изменений в памяти компонента ClientDataSet1, а затем кликните на кнопке "Apply Updates" для отсылки изменений серверу. Закройте и заново запустите клиентское приложение для проверки, были ли внесены изменения в базу данных. Я реорганизовал визуальные компоненты, поэтому мою окончательно клиентское приложение выглядит следующим образом: Так оно выглядит лучше! Мы только что создали демонстрационное многозвенное решение для базы данных на основе технологии DataSnap при помощи мастеров, небольшого количества компонентов и пары строчек кода! Это-то и называется "Быстрая разработка приложений" (Rapid Application Development) или сокращенно "RAD". ИтогВ этом учебном примере мы использовали Delphi XE и InterBase XE для построения простого многозвенного приложения, состоящего из Win32-сервера и Win32-клиента, которые взаимодействуют между собой на основе протокола TCP/IP. Ссылки по теме
|
|