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