Azure托管带Windows 8推送通知持久性的工作流活动

我完全不熟悉Windows Azure和Windows Workflow的范围。

但基本上,我试图实现的是将负责向我的Winodws 8应用程序推送磁贴更新/徽章/敬酒通知的云网络应用程序。

运行发送平铺通知等的代码很好,但需要每隔一小时左右执行一次。

我决定最简单的方法是创建一个具有WebAPI的MVC应用程序,该WebAPI将负责接收来自ModernApplication的ChannelURI,并将其发送给它,并存储在SQL Azure上。

然后会有一个类有一个静态方法,它执行收集新数据和生成新的Tile / Badge / Toast的逻辑。

我创建了一个简单的活动工作流程,它具有一个包含DoWhile(true)活动的序列。 在这个DoWhile的主体中,包含一个具有InvokeMethod和Delay的Sequence,InvokeMethod将调用包含静态方法的类。 延迟时间设置为一个小时。

所以这似乎都可以。 然后,我使用以下行通过Global.asax中的Application_Start启动此活动:

    this.ActivityInvoker = new WorkflowInvoker(new NotificationActivity());
    this.ActivityInvoker.InvokeAsync();

所以我只是测试它,它似乎是以设定的时间间隔运行我的自定义静态方法。

这一切都很好,但是现在我有三个与处理它的方式有关的问题:

  • 这是做到这一点的正确/最佳方法吗? 如果不是,我应该考虑哪些其他方法。
  • 如果新实例在Azure上运行,那么我如何确保两个实例的运行Workflow不会互相影响? 即如何确保InvokeMethod不会运行两次,我只希望它每小时运行一次,而不管有多少个实例。
  • 我如何确保如果实例崩溃/降级以维护状态?
  • 任何帮助,指导等,非常感谢。


    我很想回答一些很好的问题,然而在这样的论坛上尝试做一些将会很困难。 但让我们给它一个破解。 至少从头开始。

    1)您的执行计划任务的方法没有任何问题。 我可以想到其他一些方法。 就像使用Do {Thread.Sleep()运行简单的工作者角色一样。 ...}简单但有效。 还有更复杂/更优雅的方法,包括使用外部库和框架来调度Azure中的任务。

    2)你需要在你的工作流/作业处理引擎中实现某种单例类型模式。 例如,您可以在工作开始时获取1Kb blob记录的租约,并且不允许其他实例启动等。

    对于更详细的答案,我建议我们将此线下线并拨打Skype电话,并详细讨论您的要求。 你知道如何通过电子邮件得到我:)期待它。

    链接地址: http://www.djcxy.com/p/61525.html

    上一篇: Azure hosting Workflow Activity with Persistence for Windows8 Push Notification

    下一篇: How can Azure maintain APPLICATION state?