【发布时间】:2009-05-27 07:47:05
【问题描述】:
我正在使用 windows azure,我想构建一个云服务器应用程序,用于接收来自许多不同客户端(例如移动和桌面)的消息。 我想构建客户端,以便它们在“离线模式”下工作,即我希望客户端建立一个本地消息队列,一旦它们上线就会发送到 azure 服务器。
是否可以使用 wcf 和/或 azure queing 机制来完成,这样我在编写代码时就不必担心客户端是在线还是离线?
【问题讨论】:
我正在使用 windows azure,我想构建一个云服务器应用程序,用于接收来自许多不同客户端(例如移动和桌面)的消息。 我想构建客户端,以便它们在“离线模式”下工作,即我希望客户端建立一个本地消息队列,一旦它们上线就会发送到 azure 服务器。
是否可以使用 wcf 和/或 azure queing 机制来完成,这样我在编写代码时就不必担心客户端是在线还是离线?
【问题讨论】:
您无需在云端排队即可完成此操作。要使客户端应用程序“启用离线”,您需要在客户端上进行排队。为此,有许多选项,本地数据库、xml 文件等。只要应用程序检测到网络可用性,您就可以将队列上传到 Azure。是的,您可以为此使用 WCF。
对于客户端队列/同步的内容,您可以查看the Sync Framework。
【讨论】:
到目前为止,我还没有发现对队列的巨大需求。也许只是我没有在我的应用程序视图中看到它。也可能是您可以存储在队列中的数据很少。您基本上存储短文本字符串(如记录 ID),然后当您将其从队列中拉出时,您必须对 ID 执行一些操作,例如查找、删除它等等。
正如彼得建议的那样,在我的应用程序中,我根本没有使用队列。我从客户端直接写入表存储(使用 StorageClient 通过它的 REST 接口访问)。如果你想看一个具体的例子,看看http://www.netalerts.mobi/traffic。和你一样,我想学习 Azure,所以我建立了一个小型网站。
有一个每 60 秒唤醒一次的 worker_role。使用一个线程,它从其源中检索任何新数据(屏幕抓取网页)。新条目直接存储在表存储中(不需要队列)。另一个线程删除表存储中早于指定阈值的条目(针对表存储运行多个线程没有问题)。然后我正在研究第三个线程,该线程旨在向手持设备发送通知。
应用程序本身显然是一个 web_role。
【讨论】: