Azure表的SQLDependency解决方案?

时间:2012-06-30 16:03:11

标签: asp.net comet azure-table-storage

我想使用Azure表来存储用户发布的数据。每当用户向其他用户发布内容时,它应该向该用户发出通知。我已经研究了PokeIn的Comet解决方案,看看是否有办法解决它。由于我是这种技术的新手,我想在编写代码之前知道这种方法。

我到目前为止解决这个问题的方法是你可以对服务器进行反向ajax调用。然后在服务器上,如果发生了变化,它将持续检查数据库,并使用while循环。睡眠将被放置,因此它不会使服务器过载。但是,这会对数据库引入许多不必要的检查。我之前问了一个问题here,关于如何进行长时间轮询。并且其中一个答案建议使用SqlDependency。但这是MS SQL特有的。如果可能的话,我想知道如何在Azure表中执行此操作。

非常感谢对一般方法的任何评论或回答。

1 个答案:

答案 0 :(得分:3)

我正在回答这个问题基于你的问题基本上发布了第一段,其中如何使用Windows Azure表(没有任何数据库)来编写这样的解决方案(SO专业人员可能有不同的方法)。 Windows Azure表本质上是键值对数据库,因此没有SQLDependency这样的功能。

作为第一种方法,使用Windows Azure表和Windows Azure队列,您可以创建此类解决方案。当您向Azure Tables写入内容时,您会向Azure Queue发送消息。在一个单独的线程中,您可以继续检查队列状态,一旦有消息,您就可以采取必要的操作。这种方法的缺点是你需要经常窥视队列,并依赖于你在轮询中的攻击性,它会增加交易成本(大约10,000美元为0.001美元),但积极的检查会加快很多。

另一种解决方案是使用Windows Azure表和服务总线。使用服务总线,您不需要使用轮询,而是可以开发一个解决方案,当您的表更新时,您将收到通知,然后休息,您可以小心。

我已经看到用户实现的解决方案和依赖于应用程序可用性的成本变化,编码复杂性也是如此。在选择Windows Azure Queue或Service Bus之前,我建议您阅读下面的文章,了解两者之间的差异,以便做出更好的决策:

Windows Azure Queues and Windows Azure Service Bus Queues - Compared and Contrasted