Задать вопрос
ProKiLL
@ProKiLL
Системный администратор

Как обеспечить автономность программы от сервера?

Дано:
  • WCF сервер приложения
  • Приложение

Принцип работы приложения:
  • Приложение отправляет информацию на сервер
  • Сервер заносить необходимую информацию в БД
  • В случаи необходимости возвращает некие вычисления

Вопрос как правильно организовать автономную работу приложения, допустим если сервер
находится вне сети (офлайн)?

Идеи:
К приложению добавить SQLite базу и писать всю информацию в нее и после появления сервера в сети сливать всю информацию на сервер. Тогда отсюда вытекает вопрос: при работе с одним и тем же функционалом на разных ПК могут возникнуть дублирующие данные (пример: регистрация договоров, 2 разных пользователя могут зарегистрировать за одним номером и датой разные договоры) как можно избавиться от этого? Выделять интервал номеров под каждого пользователя не вариант.

Update:
Номера договоров должны идти по порядку в цифровом виде
Например: №25 от 01.01.2015, №26 от 01.01.2015, №27 от 02.01.2017 и т.д.
  • Вопрос задан
  • 233 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 7
tsarevfs
@tsarevfs
C++ developer
В оффлайне сохранять черновик договора без номера и даты. Регистрировать их при синхронизации с сервером.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
генерировать уникальный номер договора, который включает нечто уникальное для каждого инстанса программы.

Номер договора не фиксированное число и может содержать все, что вам нужно (желательно конечно обойтись обычными символами).
Ответ написан
Decadal
@Decadal
Ответ написан
Комментировать
petermzg
@petermzg
Самый лучший программист
Хотите номера договоров по порядку, запретите offline.
Можно делать сначала черновой договор, без номера, но затем обязательно регистрировать на сервере и получать номер.

Для всего остального, что добавляется получает ID больше 10 млн. (для примера), и при синхронизации отсылаются все записи, что имеют ID > 10 млн. и в ответ приходят новые ID. Старые меняются на новые.
Ответ написан
Комментировать
@kttotto
пофиг на чем писать
Если хотят учесть такие случаи, обычно используют очереди, готовые или самописные. Прежде чем отдать на сервер, документ в очередь, есть конект - очередь двигается, нет - очередь растет. Не в курсе предметной области, но если важен порядок нумерации, то может стоит нумерацию перенести на сервер? Сервер получил и сам пронумеровал исходя из каких то метаданных, которые придут с документом.
Ответ написан
Комментировать
@aynur_safin
Если по условиям задачи сервер иногда оффлайн, а клиент всегда онлайн, то нужно просто перенести генерацию номеров на сервис с хорошим SLA.
Если же клиент оффлайн и нет моб. интернета, но есть моб. связь , т.е. не совсем в тайге, то можно по дубовому: сделать смс сервис, шлем смс на номер, сервис в ответ шлёт сгенерированный номер, вбиваем ручками.
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
По-сути получится небольшой сервер внутри приложения, что автоматически приведет к варианту взаимодействия приложение - прокси(внутренний) сервер - настоящий сервер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы