Перейти к содержанию
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 пользователей онлайн

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