Предложения, необходимые для того, чтобы сделать вызов веб-службы более транзакционным и устранить неполадки в сети во время ответа? - PullRequest
0 голосов
/ 17 декабря 2009

У меня проблемы с клиентским приложением Windows Mobile 5.0, работающим в среде .NET compact, синхронизирующим данные с веб-службой asp.net 2.0.

Вот список шагов, которые выполняются, после чего, по-моему, возникают проблемы:

  1. Клиент собирает локальные данные из своей базы данных SQL Compact Edition, которая еще не имеет первичного ключа на стороне сервера.
  2. Клиент вызывает веб-службу, передавая «новые» данные, а также список других данных, уже сохраненных на устройстве, которые уже имеют первичные ключи (поэтому веб-служба знает, что уже существует!).
  3. Сервер вставляет новые данные в нашу центральную базу данных, которая, в свою очередь, предоставляет записи уникальный первичный ключ на стороне сервера.
  4. Ответ на вызов веб-службы теперь загружен (1) новыми данными, которые были централизованно добавлены на сервер с момента их последней синхронизации, (2) данными, которые изменились с момента последней синхронизации, так что мы может обновлять данные, уже находящиеся на устройстве, и (3) вновь назначенные первичные ключи на стороне сервера для данных, которые были только что загружены.
  5. Клиент сохраняет новые данные с сервера (1), обновляет измененные данные (2) и записывает первичные ключи на стороне сервера для только что загруженных данных (3).

Надеюсь, вышесказанное имеет смысл!

Я обнаружил, что я получаю некоторые дубликаты данных на устройстве, и это происходит из-за сбоя сетевого подключения во время загрузки ответа клиенту. Причина этого заключается в том, что сервер вставляет новые данные, но данные, сообщающие клиенту, каков его первичный ключ на стороне сервера, не возвращаются клиенту. Это приводит к тому, что клиент пытается загрузить новые данные при следующей синхронизации, несмотря на то, что они уже вставлены в нашу центральную базу данных.

Я просто не могу придумать, как мой центральный сервер может определить, правильно ли клиент получил ответ, может кто-нибудь предложить более эффективные способы сделать все это более транзакционным?

1 Ответ

0 голосов
/ 17 декабря 2009

Сервер вставляет данные, а затем возвращает ключи клиенту. Затем клиент обновляет свой набор ключей. Почему бы вам не добавить окончательный вызов метода от клиента, чтобы сообщить серверу, что он успешно обновил свой ключ, что скажет серверу совершить транзакцию?

...