cf.net排队等候webservice

时间:2009-01-09 16:17:22

标签: .net compact-framework

这个问题与我最近提出的另一个问题有关......

cf.net exception and other logging

我正在使用GPRS连接上的web服务生成要发送到服务器的日志消息,我想在与服务器的连接不可用的情况下简单地将这些消息排队。后来我可能还想批量它们以节省带宽。使用cf.net做这件事的最好(最简单)方法是什么。我需要队列在应用程序重新启动时保持不变,最好是跨设备重启。

有没有人有任何建议?或者更好的代码示例:)

非常感谢。

3 个答案:

答案 0 :(得分:3)

通常我所做的就是将数据推送到数据库表中(SQLCE是我的典型路线)。当我需要将某些内容推送到Web服务时,我将其发送给调度程序,然后调度程序将其放入数据库中。调度程序有一个后台线程,它将数据从数据库中提取出来,然后发送,然后在成功发送后删除数据库。它还监视连接状态。

调度程序中的队列更清晰,更快,但是您希望在应用程序和设备重新启动时保持持久存储需要持久存储,因此数据库可能是最简单的机制。

答案 1 :(得分:1)

我使用SQL Compact database来做这类事情(还有更多)。我从来没有遇到任何问题,你可能已经知道所需的所有技能。基本上将消息存储在数据库中,并在成功上载后删除它们。

如果您熟悉常规MSMQ,使用MSMQ for the Compact Framework是一个不错的选择。

另外,我们通过在不需要的时候关闭手机功能来节省Windows Mobile设备的功能,即。用于GPRS数据传输。如果它适用于您的情况,这可以大大提高电池寿命(我们的应用程序从不使用它们,它们是带有WM的扫描仪而不是手机)。

答案 2 :(得分:0)

请查看在客户端上使用消息队列来存储日志,并使用服务进行轮询并尝试以定期间隔发送到服务器,并在可能的情况下进行批处理。成功发送可以从队列中删除日志。

这是一个很好的起点:MSDN