【发布时间】:2012-08-14 02:52:37
【问题描述】:
我对 Windows Azure 和 Windows 工作流范围完全陌生。
但基本上,我要实现的是云网络应用程序,它将负责将磁贴更新/徽章/toast 通知推送到我的 Winodws 8 应用程序。
运行以发送磁贴通知等的代码很好,但需要每隔一小时左右执行一次。
我决定最直接的方法是制作一个具有 WebAPI 的 MVC 应用程序,该 WebAPI 将负责从发送它的 ModernApplication 接收 ChannelURI,并将其存储在 SQL Azure 上。
然后会有一个具有静态方法的类,该方法执行收集新数据和生成新 Tile/Badge/Toast 的逻辑。
我创建了一个简单的 Activity 工作流,它有一个带有 DoWhile(true) 活动的序列。在这个 DoWhile 的主体内部,包含一个具有 InvokeMethod 和 Delay 的序列,InvokeMethod 将调用我的包含静态方法的类。延迟设置为一小时。
所以这似乎没问题。然后我通过 Global.asax 中的 Application_Start 使用以下行启动此 Activity:
this.ActivityInvoker = new WorkflowInvoker(new NotificationActivity());
this.ActivityInvoker.InvokeAsync();
所以我只是用它测试了它,它似乎在设定的时间间隔运行我的自定义静态方法。
这很好,但是现在我有三个关于这种处理方式的问题:
- 这是执行此操作的正确/最佳方法吗?如果没有,我应该研究哪些其他方法。
- 如果在 Azure 上启动了一个新实例,如何确保两个实例的运行工作流不会相互影响?即如何确保 InvokeMethod 不会运行两次,我只希望它每小时运行一次,而不管有多少实例。
- 如何确保在实例崩溃/停机时保持其状态?
非常感谢任何帮助、指导等。
【问题讨论】:
标签: azure windows-8 workflow-foundation-4