2012-02-07 2 views
0

введите код здесь У меня есть основной вопрос относительно реализации с использованием веб-службы Axis2 и клиента Android KSOAP2.SOAP Transaction - синхронизируется ли она?

У меня есть API-сервер, на котором отображаются незарегистрированные записи из таблицы Таблица: key, cul1..culn, culViewes - бит, если был просмотрен или нет.

Я реализовал GetUnViewedAPI, как следует (в эксплуатацию):

public int[] getUnviewed() 
{ 
    ... getting all unviewed ids... 
    ... marking them as viewed... 
    ... return the unviewed ids.. 
} 

Что делать, если соединение потеряно в середине (с мобильного клиента)? Затем незаметные записи не будут просматриваться ... поскольку они были отмечены как просмотренные, но результат не попал к пользователю.

Должен ли пользователь посылать ACK для каждой из идентификаторов (или ack на всех togather ...)? Или ... ???? Как обычно это обрабатывается?

Yoav

ответ

1

Я бы разделил это. Сначала вы получаете все неисследованные для пользователя. Затем пользователь должен активно, например. сделайте выделение все и нажмите кнопку просмотра или так, а затем вы вернетесь к серверу, что было просмотрено, и отметьте его как таковой.

Если вы делаете все это автоматически, вы понятия не имеете, действительно ли пользователи когда-либо видели его или получали его в этом отношении. Теоретически Soap имеет поддержку транзакций как часть одного из стандартов ws *, но я сомневаюсь, что это было бы полезно в вашем случае использования. Я также не думаю, что ksoap2 android поддерживает их (и я являюсь владельцем проекта ..)

+0

Я вижу, что вы ... То, что я делаю - это флаг Viewed, - это фактически флаг, указывающий, была ли запись D/L на устройство. Поскольку я храню в устройстве эти записи, поэтому не нужно запрашивать все время на большом количестве данных с сервера. Итак, я понимаю - вы предлагаете отправлять messsage на сервер после каждой записи, которую я сохраняю в локальной базе данных? или для всех togather ... И только затем отметьте его как просмотренный (D/L) на сервере ... В этом случае мне нужно будет проверить, когда D/L и вставка в DB, ​​если запись существует (в случае, если Запрос «mark-view/loaded» на сервер может быть потерян (если соединение было потеряно). – user1136875

+0

Исправлено. Вы в основном вручную создаете транзакцию. Вы можете попробовать использовать WS-Transaction или так, но может быть труднее определить и реализовать. –