2009-01-09 29 views
3

這個問題是與此相關的其他問題,我最近問...cf.net排隊web服務

cf.net exception and other logging

我生成日誌消息使用web服務通過GPRS連接發送到服務器我想在連接服務器不可用的情況下排隊這些消息。後來我可能也想批量節省帶寬。用cf.net做這件事最好(最簡單)。我需要隊列在應用程序重新啓動時以某種方式持續存在,並且最好跨設備重新啓動。

有沒有人有任何建議?或者更好的代碼示例:)

非常感謝。

回答

3

通常我所做的是將數據推送到數據庫表(SQLCE是我典型的路線)。當我需要將某些內容推送到Web服務時,我將它發送給調度程序,然後調度程序將其放入數據庫中。調度程序有一個後臺線程,將數據從數據庫中提取出來,發送,然後在成功發送時刪除數據庫。它還監視連接狀態。

調度程序中的隊列稍微更乾淨,速度更快,但是您希望在應用程序和設備重新啓動時保持持久性存儲,因此數據庫可能是最簡單的機制。

+0

你是一樣的ctacke誰與誰,我昨天就有關自衛隊包裝GetDevicePowerState自衛隊論壇對應的OpenNetCF作品?如果是這樣,嗨! – 2009-01-09 16:33:14

1

我已經使用SQL Compact database做這種事情(還有更多)。我從來沒有遇到任何問題,你可能已經知道所需的所有技能。基本上將消息存儲在數據庫中,並在成功上傳後刪除它們。

如果您熟悉常規MSMQ,使用MSMQ for the Compact Framework是一個不錯的選擇。另外,除了需要時,我們還可以通過切換電話功能來節省Windows Mobile設備的電量,用於GPRS數據傳輸。如果它適合您的情況,這可以大大改善電池壽命(我們的應用程序從未使用過,我們的應用程序中沒有使用它們,它們是使用WM而不是移動電話的掃描儀)。

0

查看客戶端上使用消息隊列來存儲日誌,使用服務輪詢並嘗試以分段間隔發送到服務器,並儘可能進行批處理。成功的發送可以從隊列中刪除日誌。

這裏是一個很好的起點:MSDN