Я только что реализовал аналогичный процесс синхронизации между настольным приложением и веб-сервером.
Я использую уникальные временные первичные ключи при создании записей в настольном приложении. Поэтому, когда я загружаю данные, сервер ищет первичный ключ, и если он не существует, он создает новую запись, заменяя временный первичный ключ на реальный. Затем сервер возвращает реальный первичный ключ для каждой записи.
Я использую XML для загрузки всех новых записей с рабочего стола и загрузки всех записей с сервера в одной транзакции HTTP.
Важно выполнить весь процесс синхронизации за одну транзакцию, поэтому в случае сбоя вы можете выполнить откат.
Кроме того, наши пользователи должны ввести имя пользователя и пароль для синхронизации, поэтому эти параметры также отправляются в POST.
Обязательно отфильтруйте и проверьте все данные, полученные от клиента, прежде чем вставлять их в базу данных.