Обновление клиентского ПО. Unity, C#, JSON

196
20 февраля 2018, 03:39

Доброго дня. Разрабатываем проект на движке Unity3D (версия 5.6.3f1), язык - C#, СУБД - Robomongo. Сам по себе проект связан с обучением, можно сказать огромный сборник тестов и практических задач. Информация хранится в множестве различных справочников (таблиц), в виде JSON файлов. Многие справочники связаны между собой через первичный ключ. Ниже пример простого справочника: [ { "_id": "59630d659fbd0b28e8aa04fa", "Name": "Ответ1", "IsRight": true }, "_id": "59630d659fbd0b28e8aa04fb", "Name": "Ответ2", "IsRight": false }, "_id": "59630d659fbd0b28e8aa04fc", "Name": "Ответ3", "IsRight": false } ] И таких справочников порядка 90, в некоторых более 1000 строк. Сейчас стоит вопрос с обновлением базы этих тестов на стороне пользователя. Допустим, у пользователя уже есть эта программа и база тестов, которая отдается изначально. Потом, когда мы выпускаем обновление, нужно, чтобы те справочники, которые уже были, обновились, либо не изменялись, в зависимости от того, меняли мы их или нет, а те, которых не было, добавились. Пока, кроме объединения всех справочников в один большой справочник и дальнейшего сравнивания его с другим большим справочником, либо сравнения каждого справочника по отдельности, ничего на ум не приходит.

Подскажите пожалуйста, кто уже сталкивался с подобной задачей? Как добавить в клиентское ПО новые данные?

Answer 1

Ну это типичная задача и решение для неё придумано тоже - типичное.

  1. На главном сервере есть файл из двух колонок: в первой колонке имя файла справочника, во второй - контрольная сумма этого файла.
  2. Когда на клиенте запускается программа обновления, она считывает этот индексный файл с сервера.
  3. Сравнивает только что полученный индекс с локальным.
  4. Если локального индекса нет - скачиваются все справочники
  5. Если локальный индекс есть он построчно сравнивается с новым
  6. Если для очередной строки имя файла и контрольная сумма совпадают - строка пропускается
  7. Если имя файла совпадает, а контрольная сумма нет - файл справочника обновляется
  8. Если файла с таким именем нет - справочник скачивается

После завершения цикла по строкам индексного файла, старый индекс заменяется новым.

READ ALSO
Отображение элементов в нокаут

Отображение элементов в нокаут

Можно ли средствами библиотеки Knockout js отобразить массив элементов таким образом, чтобы каждый последующий элемент появлялся на странице...

232
Javascript / Node.js и контекст функций [дубликат]

Javascript / Node.js и контекст функций [дубликат]

На данный вопрос уже ответили:

276
Как функции вернуть ответ на AJAX-запрос?

Как функции вернуть ответ на AJAX-запрос?

Как сделать чтобы getData() возвращала не undefined, а содержимое строки 36?

259
Не могу вывести таблицу из js в html

Не могу вывести таблицу из js в html

Получаю с сервера информацию, заполняю массивы и пытаюсь вывести таблицу в html, но выдаёт ошибку"Cannot set property 'innerHTML' of null"Перемещение скрипта...

475