Перейти к содержанию
Fire Monkey от А до Я
  • 0

Связка клиента на Anroid и сервера на Delphi7


Rusland

Вопрос

Вопрос не очень в тему, но все же...

Познакомился с DataSnap REST, из этого видео скомпилировал себе пример... как все просто... столько всего нового и удобного. :)

Но это для новых версий Delphi. Что делать если есть программа (назовем Сервер) написанная на Delphi7 (БД Firebird) и ее нужно связать с программой (назовем Клиент) для Android, написанным на Delphi 10 Seattle FMX? 

Хочется из Клиента через интернет получить данные из таблицы БД через сервер.

Подскажите как это сделать? Через какие компоненты связать?

Изменено пользователем Rusland
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Как вариант - на базе http-протокола делать запросы к серверу и получать ответы в виде xml..

Indy под делфи 7 имеются.. xml сформировать проблем нет.. точно также как на андроиде разобрать..

Ссылка на комментарий
  • 0
  • Модераторы

Как вариант - на базе http-протокола делать запросы к серверу и получать ответы в виде xml..

Indy под делфи 7 имеются.. xml сформировать проблем нет.. точно также как на андроиде разобрать..

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

Ссылка на комментарий
  • 0

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

 

можно.. а на делфи 7 есть библиотеки соответствующие? лично я на делфи 7 очень давно уже не практикую.. года так с 2006-го.. а xml там точно есть..

P.S. у меня на работе как раз описанный вариант реализован был.. делфи 7 на сервере и андроидная программа на эклипсе между собой xml-ками обменивались по http..

Изменено пользователем Nik
Ссылка на комментарий
  • 0
  • Модераторы

 

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

 

можно.. а на делфи 7 есть библиотеки соответствующие? лично я на делфи 7 очень давно уже не практикую.. года так с 2006-го.. а xml там точно есть..

P.S. у меня на работе как раз описанный вариант реализован был.. делфи 7 на сервере и андроидная программа на эклипсе между собой xml-ками обменивались по http..

 

для D7 есть всё :)

Ссылка на комментарий
  • 0

Как вариант - на базе http-протокола делать запросы к серверу и получать ответы в виде xml..

Indy под делфи 7 имеются.. xml сформировать проблем нет.. точно также как на андроиде разобрать..

это конечно вариант, но тогда мы теряем "всю прелесть" RAD, т.е. придется все обработчики (парсинг) http запросов писать вручную. DataSnap нас лишает этих затрат человеко/часов , но берет с нас "мзду" в виде производительности... давно пытаюсь найти простую альтернативу с генерацией "чистого" и форматируемого ответа (в частности JSON)

Ссылка на комментарий
  • 0

то конечно вариант, но тогда мы теряем "всю прелесть" RAD, т.е. придется все обработчики (парсинг) http запросов писать вручную. DataSnap нас лишает этих затрат человеко/часов , но берет с нас "мзду" в виде производительности... давно пытаюсь найти простую альтернативу с генерацией "чистого" и форматируемого ответа (в частности JSON)

 

Честно, я не вижу в этом проблемы.. Если количество видов запросов небольшое, то написать обработчики не является трудоёмкой задачей, а если большое, то написать один раз "обвязку" над запросами по парсингу проблем не составляет.. тем более XML-парсеры прекрасно работают и под windows, и под андроидом.. Вот прикручивать DataSnap там где он совершенно не нужен с его избыточной функциональностью - вот в этом смысла совершенно не вижу..

Для примера - у меня сейчас программа на андроиде одним типом запроса обрабатывает три варианта загрузки данных разного назначения.

1) это автоматическое скачивание обновления apk-файла

2) загрузка документов в формате jpg, pdf с сохранением в заданном каталоге

3) пакетная загрузка картинок с разбором пакета "на лету" и загрузкой в TBitmap (без сохранения на носитель)

Команда при этом вызывается одна, но с разными параметрами.

Парсер результатов выполнения занимает строчек 45-50.. при том, что я begin end и прочее пишу в отдельных строчках.

Процедура чтения пакета картинок "на лету" занимает порядка 70-80 строк..

Но тут передача идёт через TStream...

 

Если говорить про XML и JSON - честно скажу, что до JSON руки у меня не доходили, а первоначальный вариант программы мне достался с использованием XML. Этим и объясняется его использование в настоящий момент. А в своё время разработчику так было проще тестировать серверную часть проекта - XML-ки браузером легко читаются и отображаются. По этой же причине был выбран протокол http - так проще было тестировать серверную часть. Клиентская под андроид была написана значительно позже.

Использование тех или иных технологий при разработке какого-либо проекта зависит от условий, которые накладываются в проекта на производительность, сетевой трафик, простоту сопровождения, стандартизацию подходов.

В крупных компаниях (при корпоративной разработке) DataSnap и другие технологии зачастую используют из-за стандартизации подходов - так проще заменить разработчика на любого другого знакомого с данным стандартом.

Про само использование JSON в делфи, кроме уменьшения трафика - других преимуществ я на данный момент не вижу. Но полноценно я его не использовал - возможно у меня сейчас просто мало опыта по работе с этим форматом.

Ссылка на комментарий
  • 0

Nik, советую почитать про JSON удобная штука, тем более если использовать xSuperObject

Я читал твои впечатления.. В принципе согласен с твоими теми выводами, но в моём конкретном случае количество данных небольшое и по структуре они очень простые.. Цеплять к программе дополнительную библиотеку по обработка JSON, чтобы прочитать 2-5 полей у одной записи - это слишком накладно по моему мнению. Но в целом с JSON надо будет познакомить для общего развития )

Ссылка на комментарий
  • 0

там библиотека 2 pas-файла ))

но для старых версий надо брать не X-SuperObject а оригинальный SuperObject

у меня исходники проекта занимают 288 209 байт, а ты предлагаешь мне дополнительно добавить всего-то два файла весом 142 718 байт. Думаешь оно того стоит? ))

Ссылка на комментарий
  • 0

Ух елки...

А исходники FMX вообще мегабайты занимают. Давайте не использовать FMX! :D

Не, мне FMX больше VCL нравится )) Но всё же нужно задумываться о целесообразности применения того или иного инструмента, а не забивать гвозди микроскопом..

Ссылка на комментарий
  • 0

Сделал SOAP-сервер. Подключаюсь клиентом через HTTPRIO.

Если сервер не запущен, то клиент пытается подключится ну ооочень долго.

Настройки не помогают:

HTTPRIO1.HTTPWebNode.ConnectTimeout:=10000; 
HTTPRIO1.HTTPWebNode.SendTimeout   :=10000; 
HTTPRIO1.HTTPWebNode.ReceiveTimeout:=10000; 

Как уменьшить таймаут?

 

PS. Как выяснилось "ооочень долго" - это по умолчанию 5 минут. 

 

 

Вот полный код в клиенте:

procedure TForm1.Button1Click(Sender: TObject);
var
  LA: String;
Begin       
  TThread.Synchronize(nil, procedure
  begin
    try
      Log.Lines.Add('Start: '+DateTimeToStr(Now));
      Application.ProcessMessages;
      HTTPRIO1.HTTPWebNode.ConnectTimeout:=10000;
      HTTPRIO1.HTTPWebNode.SendTimeout   :=10000;
      HTTPRIO1.HTTPWebNode.ReceiveTimeout:=10000;
      HTTPRIO1.URL:=cbxHost.Items.Strings[cbxHost.ItemIndex];
      SGS:=HTTPRIO1 as IISoapGS;
      SGS.SendMsg(1,edMsg.Text,LA);
      Log.Lines.Add('Msg: '+LA);
      Log.Lines.Add('End: '+DateTimeToStr(Now));
    except On E:EIdException do
      Log.Lines.Add('Error: '+E.Message+' '+DateTimeToStr(Now));
    end;
  end);
end;

Вопрос все еще в силе :)

Изменено пользователем Rusland
Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...