我完全不熟悉Windows Azure和Windows Workflow的范围。
但基本上,我正在尝试实施的是云网络应用程序,它将负责将磁贴更新/徽章/ Toast通知推送到我的Winodws 8应用程序。
运行以发送磁贴通知等的代码很好,但需要每小时左右执行一次。
我认为最直接的方法是创建一个具有WebAPI的MVC应用程序,此WebAPI将负责从ModernApplication接收发送给它的ChannelURI,并将存储在SQL Azure上。
然后会有一个具有静态方法的类,该方法用于收集新数据并生成新的Tile / Badge / Toast的逻辑。
我创建了一个简单的Activity工作流,它有一个带有DoWhile(true)活动的Sequence。在DoWhile的主体内部,包含一个具有InvokeMethod和Delay的Sequence,InvokeMethod将调用包含静态方法的类。延迟时间设置为一小时。
所以这似乎一切都好。然后我通过Global.asax中的Application_Start使用以下行启动此活动:
this.ActivityInvoker = new WorkflowInvoker(new NotificationActivity());
this.ActivityInvoker.InvokeAsync();
所以我只是测试了它,它似乎是在设定的时间间隔运行我的自定义静态方法。
这一切都很好,但现在我有三个与这种处理方式有关的问题:
非常感谢任何帮助,指导等。
答案 0 :(得分:-1)
我很乐意回答几个好问题,但是在这样的论坛上尝试做一些很难。但是,让我们给它一个裂缝。至少从一开始。
1)您实施计划任务的方法没有任何问题。我可以想到其他一些方法。就像使用Do {Thread.Sleep();运行一个简单的Worker角色一样......}简单但有效。还有更复杂/更优雅的方式,包括使用外部库和框架来安排Azure中的任务。
2)您需要在工作流/作业处理引擎中实现某种Singleton类型模式。例如,您可以在作业开始时获取1Kb blob记录的租约,而不允许其他实例启动等。
如需更详细的解答,我建议我们离线并拨打Skype电话,详细讨论您的要求。你知道如何通过电子邮件抓住我:)期待它。