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

DataSnap

Часть #0

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

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

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

DataSnapClient000

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

Читать далее

Некоторое время назад я писал о своих экспериментах с DataSnap. Сейчас, в рамках всё того же проекта, у меня появилась  несколько модифицированная задача, где использование данной технологии будет более чем уместно. Вкратце опишу задачу.

Итак, имеется настольное приложение, работающее с БД MS Access (это не мой выбор и мы условились не обсуждать его здесь). Функционал приложения довольно обширный, но некоторая его часть связана с учетом рабочего времени. На ПК запускается таймер, по окончанию его работы в БД заносятся данные об отработанном времени, выполняемом проекте и т.д. Идея заключается в том, что бы этот таймер можно было запускать на мобильном устройстве, а информация с него попадала в базу на ПК.

Задачу я реализую с помощью FireDAC. И поскольку обилия русскоязычных руководств по данной теме не наблюдается, я решил в блоге описать всю процедуру пошагово. Естественно, в несколько упрощенном виде.

Создание сервера

Создаем новый проект.

  • Выбираем  File > New > Other из главного меню;
  • В ветке DataSnap Server выбираем DataSnap REST Application;

DataSnap00

Читать далее

Некоторое время назад я уже писал о DataSnap и своих экспериментах связанных с этой технологией. Интересно, что тогда я немного затронул набор компонентов доступа к БД AnyDAC. Сейчас, похоже, появилась необходимость более плотно обратиться к данной теме, а в базовом арсенале Delphi разработчиков появился FireDAC. Вкратце обрисую задачу.

Имеется некоторое Windows приложение, работающее с СУБД MS Access (опционально с MS SQL). Необходимо создать для данного приложения клиентскую часть, работающую под Android и частично реализующую функционал основного приложения. При этом данные должны храниться автономно, но по запросу пользователя синхронизироваться. Здесь сразу оговорю два момента. Во-первых задача абсолютно реальная и решать ее мне так или иначе придется. Во-вторых, сама по себе задача, без учета специфики конкретных СУБД, довольно типичная, в той или иной интерпретации, встречающаяся часто. Поэтому, допускаю, что подробное  описание подобного примера будет интересно читателям.

Здесь можно выделить три условные функциональные задачи:

  • обеспечение доступа к базам данных (внутренней, для автономной работы мобильного приложения и внешней, с которой работает основное приложение);
  • обеспечение репликации данных;
  • непосредственно, функциональная часть мобильного приложения.

Естественно, что локально на Android устройстве данные целесообразно хранить в SQLite базе. Более интересен вопрос синхронизации разных баз. Если бы базовое приложение использовало в качестве СУБД Inrebase, Oracle  или MySQL, то можно было бы подключиться к базе напрямую. При этом, в первом случае для доступа к БД мы могли бы воспользоваться FireDAC, а в случае с Oracle или MySQLUniDAC, или специальными компонентами доступа от DevART (ODAC и MyDAC, соответственно). Однако, в данном случае использовать прямое подключение к базе данных MS Access с мобильного устройства в принципе не возможно. Поэтому в данном случае проще использовать многозвенную архитектуру, а именно DataSnap.

купить UniDACкупить ODAC

И здесь опять возникает вопрос выбора компонентов доступа к БД. Вариантов здесь три. DBExpress, FireDAC и UniDAC. В очередной раз распишусь в своей нелюбви к DBExpress, хотя, возможно, это и субъективно. При использовании FireDAC в “классической” схеме DataSnap никаких дополнительных телодвижений использовать не придется. UniDAC использовать “в лоб” не получится, однако, этот набор компонентов так же работает с DataSnap и внятные описания имеются. Коммерческую составляющую, которая может отразится на выборе, я оставлю “за бортом”, поскольку в моем случае она не имеет значения.

купить RAD Studioкупить Delphi

Что касается репликации данных, то здесь мне повезло. Имеющийся функционал Windows приложения предполагает возможность синхронизации данных из разных баз. Соответственно, структура базы оптимизирована для репликации. Для каждой из значимых таблиц имеются уникальные идентификаторы. Так же реализованы алгоритмы синхронизации.

Если оценивать уровень сложности субъективно, то в принципе, на уровне технологии приложение должно получиться не особо сложным. Естественно, многое зависит от логики самого приложения и сложности структуры БД.

На текущий момент я сделал небольшой тестовый пример подключения к мобильного Android приложения с БД MS Access с помощью FireDAC. Так же, думаю, будет целесообразно разобраться с тем как работает с DataSnap UniDAC. Эти примеры я планирую опубликовать в следующих постах. И, естественно, для полноты картины собираюсь сделать небольшой пример репликации данных.

Интересно узнать у читателей блога, приходилось ли им решать подобную задачу и какой подход вы при этом избрали.

Клиент Delphi Prism

Шаг 3.1 Настройка подключения

  1. Запускаем Delphi Prism; Закрываем все проекты;
  2. Запускаем приложение – сервер;
  3. Открываем Server Explorer (Alt+Ctrl+S)
  4. Из контекстного меню DataConnection выбираем пункт Add Connection…
  5. Data Source меняем на DataSnap (DataSnap Provider) (если такого пункта нет, возможно у вас не полная версия Prism);
  6. Настраиваем соединение. Если вы все делали по умолчанию и запускаете Prism и сервер на одной машине, то настройки следующие:

Что бы как-то сгладить сумбур предыдущего поста, я, как и обещал, опишу все последовательность действий по созданию простого приложения DataSnap с нативным клиентом и .Net клиентом.

Инструментарий.

Для работы мы будем использовать БД MS Access (предположим, что она уже создана), Delphi 2010 Architect, а так же Delphi Prism 2010 и MS Visual Studio 2010. В принципе, версия .Net средств разработки не так уж и важна.

В качестве компонентов доступа к БД – AnyDAC.

В качестве путеводителя по возможностям DataSnap - руководство от Боба Сварта, откуда я иногда и буду дергать цитаты. Читать далее

imageup.ru - хостинг для изображенийВ прошлой части рассказа, я описал суть проблемы. Напомню вкратце, что необходимо создать трехзвенку, с MS Access в качестве СУБД и сервером приложений, написанном на Delphi. При этом клиенты должны разрабатываться и в Delphi (descktop client) и в .Net среде (ASP .Net application).

Все оказалось не совсем замечательно. Все официальные источники утверждают, что Delphi Prism может работать с DataSnap серверами. И это так. Но есть некоторые ограничения.

Как выяснилось, .Net приложения могут использовать только методы DataSnap. Вот, как описывает создание клиента в Delphi с помощью метода Боб Сварт:

Читать далее

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



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