2012-02-07 69 views
0

在此輸入代碼我有一個關於使用Axis2 Web服務和Android KSOAP2客戶端的實現的基本問題。SOAP交易 - 是否同步?

我有一個從表中獲取未查看條目的服務器的API Table:key,cul1..culn,culViewes - bit if是否被查看。

我實現了GetUnViewedAPI爲遵循(在服務):

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

如果連接在中間丟失(與移動客戶端)? 然後,未查看的條目將不會被查看......因爲已被標記爲已查看,但結果未獲得給用戶。

用戶是否應該爲每個ID發送ACK(或對所有的togather進行確認...)? 或...? 它通常如何處理?

Yoav

回答

1

我會分裂它。首先,您將所有未查看的內容都發送給用戶。然後用戶必須積極地做一個全選並按下一個查看按鈕,然後你推回到服務器查看的內容並將其標記爲這樣。

如果你自動這樣做,你不知道用戶是否真的曾經看到過或收到過它。理論上Soap將交易支持作爲ws *標準的一部分,但我懷疑這對您的用例很有用。我也不認爲ksoap2的android支持他們(我是項目的擁有者..)

+0

我看到yout點....我做的 - 是查看標誌 - 實際上是一個標誌,以表明如果條目已被D/L到設備。由於我在設備中存儲這些條目,所以不需要從服務器中查詢所有大量數據。所以,據我所知 - 你建議發送郵件後,我保存在本地數據庫中的每個條目後的服務器?或所有togather ...只有然後將其標記爲在服務器中查看(D/L)...在這種情況下,我將需要檢查何時D/L和插入到DB如果條目存在(如果「mark-view/downloaded」對服務器的請求可能已經丟失(如果連接丟失).. – user1136875 2012-02-08 08:34:08

+0

正確。你基本上是手動創建一個事務。你可以嘗試使用WS-Transaction等,但是可能很難出並實施.. – 2012-02-08 17:44:51