Im planning to use workerprocess in azure for long running task. But im coonfused whether to use Task parallel library or Threading.
-Mahender
TPL 通过特殊的TaskCreationOptions枚举成员支持长时间运行的任务:LongRunning
指定任务将是长时间运行的粗粒度操作。它向 TaskScheduler 提供了一个提示,表明可能需要超额订阅。
TPL 使您可以更轻松地使用 CPU 的多个内核。在 Windows Azure 中,您可以根据您选择的实例大小拥有多个 CPU 内核:
与简单地使用线程相反,任务 (TPL) 允许您使用实例中可用的大部分 CPU 内核。
我们在 Azure 中使用 TPL 并取得了一些成功,我会推荐它。在不了解您的项目的情况下,我会说您应该很好地继续使用 TPL。
长时间运行的任务需要多长时间?
如果任务需要等待外部输入或持续很长时间,Workflow Foundation 是一个不错的选择,因为您可以将任务状态序列化到数据库。该数据库可以在 Windows Azure SQL 数据库中创建。
http://msdn.microsoft.com/en-us/library/vstudio/ms735967(v=vs.90).aspx
可以在云服务中启用任务调度程序(有一些黑客攻击),这为您提供了另一种选择。
并行任务库是短期计算密集型工作负载的不错选择。创建线程需要一些计算和内存开销,因此 TPL 通过维护线程池来帮助您执行任务。但是如果你需要长时间阻塞,或者你想同时运行很多线程,这可能不是最好的选择,你应该考虑自己管理线程。
您的要求的更多细节将使我们提出更好的建议。
由于工作人员角色(或 Web 角色)正在构建在 Windows Server 虚拟机中运行的代码,因此我认为该决定基于您的应用程序和相关架构,而不是基于 Windows Azure。如果部署到 Windows Server,我会选择您要使用的那个。请记住正确捕获Run()
方法中的任何错误/异常,因为如果您退出Run()
,实例将通过其关闭顺序并被回收。