Блог Александра Божко
Архивы
Рубрики
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Часть #0

Создание клиентского приложения

Поскольку в нашем случае речь идёт о мобильном приложении, клиентской приложение будет создано с помощью FireMonkey.

  • Создаем новое Multi-Device приложение (настройки не критичны);

DataSnapClient000

Я создаю клиентское приложение в группе, что дает возможность параллельно отлаживать и серверное приложение.

DataSnapClient0000

  • Запускаем приложение-сервер.

Во время создания и отладки клиентского приложения сервер должен быть запущенным. Но, запускать его следует без отладки в противном случае мы не сможем отлаживать клиентское приложение.

DataSnapClient00000

  • Создаём DataSnap REST Client Module (File | New | Other | группа DataSnap Rest Client Module).

DataSnapClient01

  • Настройки определяем так как показано ниже.

DataSnapClient02

DataSnapClient03

DataSnapClient04

  • Сохраняем проект.
  • Убеждаемся в том, что DataSnap proxy generator сгенерировал класс TMyServerMethodsClient;

 

  TMyServerMethodsClient = class(TDSAdminRestClient)
  private
    FEchoStringCommand: TDSRestCommand;
    FReverseStringCommand: TDSRestCommand;
    FGetEmployeesCommand: TDSRestCommand;
    FGetEmployeesCommand_Cache: TDSRestCommand;
  public
    constructor Create(ARestConnection: TDSRestConnection); overload;
    constructor Create(ARestConnection: TDSRestConnection; AInstanceOwner: Boolean); overload;
    destructor Destroy; override;
    function EchoString(Value: string; const ARequestFilter: string = ''): string;
    function ReverseString(Value: string; const ARequestFilter: string = ''): string;
    function GetEmployees(const ARequestFilter: string = ''): TFDJSONDataSets;
    function GetEmployees_Cache(const ARequestFilter: string = ''): IDSRestCachedTFDJSONDataSets;
  end;
  • На главной форме проекта помещаем компонент TFDMemeTable, переименовываем его в mtEmployeers;
  • В редакторе полей создаем поля соответствующие полям компонента qEmployees приложения-сервера (для этого проще всего использовать буфер обмена);
  • Помещаем на главой форме компоненты TFDGUIxWaitCursor и TFDPhysMSAccessDriverLink;
  • Помещаем на форме кнопку со следующим кодом в обработчике;

 

procedure TForm3.Button1Click(Sender: TObject);
var
    //Не забудьте подключить модуль: Data.FireDACJSONReflect.
    LDataSetList: TFDJSONDataSets;
begin
    // Удаляем все данные из memory table.
    mtEmployeers.Close;
    // Получаем список, содержащий Employee names
    LDataSetList := ClientModule.MyServerMethodsClient.GetEmployees();
    // Читаем только первый  dataset, с номером 0.
    mtEmployeers.AppendData(
      TFDJSONDataSetsReader.GetListValue(LDataSetList, 0));
 
    // Открываем mtEmployeers
    mtEmployeers.Open;
   // Показываем количество записей в наборе данных
    ShowMessage(IntToStr(mtEmployeers.RecordCount));
   // Заодно показываем имя первого  пользователя
    ShowMessage(mtEmployeersFirstName.AsString);
end;
  • Запускаем приложение; Нажимаем кнопку.

Не сложно догадаться, что данный код заполняет набор данных  mtEmployeers данными из таблицы tblEmplyees, к которой мы выполнили подключения на сервере. Если вы всё сделали верно, то в результате выполнения вышеописанных действий вы должны получить два сообщения: количество записей в таблице tblEmployees и имя первого пользователя.

Запуск клиентского приложения на мобильной платформе

Единственное, что надо сделать для того, что бы запустить это приложение на мобильном устройстве, равно как и удаленном ПК, это изменить значение свойства Host компонента DSRestConnection1. В качестве значения следует указать IP машины, на которой запущен сервер. Это значение мы научились определять в предыдущей части.

 

Таким образом, мы научились передавать данные от серверного приложения клиентскому.

В следующей части мы рассмотрим, пример приложения с осмысленным функционалом.

365

 


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

2 комментария: Создание мобильного DataSnap приложения #1

Ответить на Александр Отмена ответа

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика