Разработка обновления приложения Delphi

Статус
В этой теме нельзя размещать новые ответы.

RALF

черный рыцарь
Регистрация
1 Май 2006
Сообщения
114
Реакции
26
Добрый всем вечер!

Тут работаю над одним проектиком. Есть два приложения, одно приложение на Delphi – справочник предприятий их реквизиты и т.д. Т.е. приложение само по себе служит только для поиска и отображения информации. Есть веб-приложение, аналог по функциям этого приложения, но с одним условием. Данное веб-приложение написано на php и имеет панель администратора, через которую добавляются новые записи.

Это было предисловие. А теперь вопрос:
Как мне сделать обновление? Т.е. человек скачивает приложение написанное на Delphi и через некоторое время хочет обновить БД. Ему не нужно скачивать опять полный дистрибутив с БД, он просто может нажать кнопку «обновить» и всё. Вот по повод этой кнопки как раз-таки вопрос:

Как сделать правильно обновление? Через что отправлять данные? Если можно подойдет всё ссылки на информацию об этом, да и просто ответы. Хотелось бы обсудить с программистами J))
 
Т.е. есть живая БД на серваке и устаревающая на клиенте? И можно править код серверного приложения?
Вариантов полно - самый IMHO правильный:
- В базе на серваке хранить дату последнего обновления/изменения каждой записи.
- Из Delphi шлется запрос о получении обновления с указанием даты/времени последнего обновления. Ему возвращается список измененных записей - имеющих время изменения позже запрошенного. Все записи передаются с ID.
- Потом напр. построчно - если такой ID уже есть в клиентской базе - заменить эту запись новым вариантом. Если нет - просто добавить.
Если нужно отслеживать удаления - можно также передавать список удаленных ID-ов (на сервере хранить историю удаления с датой)
- Изменяется дата последнего обновленя на стороне Delphi
Список можно отдавать с сервака зазипованным CVS - трафик юзеру экономить.
Или спрашиваешь, как даунлоад делать?
Например, дельфийская прилада лезет на Для просмотра ссылки Войди или Зарегистрируйся - а сервак ему - текстовик к примеру. Забирать такое хоть сокетом можно.
----
можно еще проверку делать: спрашиваешь у сервака Для просмотра ссылки Войди или Зарегистрируйся - а он тебе yes или no возвращает
 
Да живая БД на серваке в инете, а устаревшая на компе. Ты правильно понял! Код серверного приложения можно править!

Я имею ввиду как передать массив данных через https ... Через закрытое соединение? И чтобы особо сильно долго не обновлялось? Если брать html страницу, чтобы скрипт формировал страницу и передавала ее delphi приложению!

Про id понял. С датой нужно поиграться!
Я тебя правильно понял, ты предлагаешь получать данные (id, данные, дата)?
Соотвественно по ID вставляем даты.

Как сделать именно отслежку удаления?
 
Как сделать именно отслежку удаления?

храни в базе удаленные ID c датой удаления
при обновлении проверяй список удаленных ID с момента
последнего удаления и удаляй их собственно из локальной базы =)
 
Я тебя правильно понял, ты предлагаешь получать данные (id, данные, дата)?
нет, дата не нужна. Она нужна, чтоб отдающий скрипт отличил новые записи от старых. А именно, в запросе на выборку из таблицы организаций для отдачи нужно поставить просто
SELECT ....
WHERE lasteditdate > 'XXXXXX'", где XXXXX - дата, переданная клиентом при запросе к серваку
--------------
Можно сделать так: не удалять физически организации на серваке, а просто помечать их, как удаленные в специальном поле "deleted" к примеру - 0 - не удалено, 1 - удалено. (не забывая изменить дату изменения). Правда придется поправить запросы в приложении на сервере - поставить везде условие "WHERE deleted=0".
Отдающий скрипт (который будет отдавать список клиенту) если встречает удаленную запись - передает только ее код - принимающий софт может интерпретировать это как удаление - и удалять в локальной базе соотв. запись с этим ID. (Так - потому что лишние данные не передаются)
Если отдаваемые данные не паковать (а можно паковать между прочим - отдельную тему лучше создавай) то экономичнее всего отдавать не html страницу, а CVS - в каждой строке по порядку перечисляются значения полей записи через символ-разделитель (напр. "|"). Да и парсить (делать синтаксический разбор) такого очень просто. Если в строке тока ID - значит удаляем, и т.д.
А HTTPS - чеб не те не качали? Ну, вариантов много... Можно например проходить http авторизацию логином и паролем, связанным с серийным номером - заодно статистику скачек на серваке можно вести (пускать только зарегистрированные серийники). Видишь, что с одного серийника чет слишком часто апдейтят? Банишь серийник, предъявляешь покупателю.
 
А не легче дамп базы забирать своим приложением?
 
Ну, во-первых, на стороне клиента не мускул. Во-вторых - база большая, а нужно от нее кусочек
 
А не легче дамп базы забирать своим приложением?

ну-ну... И как ты думаешь это реализовать?

garcia Прав!!!
1. У клиента не мускул!
2. Пользователи просто закидают меня камнями за такую хиромантию...
Давай возьмем пример, ты бы каждый раз обновлял программу, бд которой весит 5-10 метров? Это каждый раз нужно закачивать эту бд с 2*x обновишимися сроками! :mad:
 
а почему б не использовать XML?
и Delphi и PHP великолепно с ним работают.
 
XML будет хавать немного больше трафика - надо теги передавать. А в CSV тупо меньше букаф, не надо парсер подключать к клиенту (и так парсится элементарно)
Тут XML IMHO незачем - передается 1 таблица
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху