Надеюсь, название выбрано достаточно хорошо, чтобы задать этот вопрос.
Не стесняйтесь редактировать, если нет, и примите мои извинения.
Я сейчас выкладываю приложение, которое взаимодействует с сетью.
Объяснение основного потока программы:
Пользователь вводит идентификатор пользователя в мою программу, который затем используется для доступа к нескольким XML-файлам через Интернет:
http://example.org/user/userid/?xml=1
Этот файл содержит несколько идентификаторов продуктов, которыми владеет пользователь в DRM-системе. Этот список затем используется для доступа к статистике и информации о взаимодействии пользователей с продуктом:
http://example.org/user/appid/stats/?xml=1
Здесь также содержатся ссылки на различные изображения, характерные для данного приложения. И они могут измениться в любое время и должны быть загружены для отображения в приложении.
Вот тут и начинается ужас, по крайней мере для меня: D.
1.) Как сохранить эту информацию на ПК пользователя?
Я думал об использовании каталога для идентификатора пользователя, а затем вложенных папок с appid для кэширования изображений и XML-файлов для их загрузки по требованию. Я также подумал об использовании zipfile при использовании той же структуры.
Или лучше использовать для этого локальную базу данных, подобную sqlite?
Среднее количество приложений может составлять ~ 100-300, а статистика и изображения для приложения в основном составляют 5-700.
2.) Когда мне обновить содержимое?
Плохо то, что веб-сайт, с которого загружаются эти данные, или, точнее, xmls, не содержит отметок времени, когда они обновлялись / изменялись в последний раз. Поэтому мне нужно было бы хэшировать все файлы и сравнивать их в тот момент, когда пользователь обращается к этим данным, что может занимать много времени, поскольку они доступны через Интернет. Хорошо, есть тайм-ауты, но мне нужно будет заблокировать доступ к контенту до тех пор, пока данные не будут либо загружены и обработаны, либо не истечет тайм-аут. В обоих случаях приложение не будет доступно в течение короткого или, может быть, даже долгого времени, и я хочу избежать этого. Я мог бы позволить пользователю выполнить обновление вручную, когда ему это нужно, но потом я надеялся, что для этого есть более эффективные методы.
Особенно с указанным количеством приложений и прочего.
Спасибо за чтение и все такое, и, пожалуйста, не стесняйтесь спрашивать, если я забыл что-то объяснить.