Azure:我什么时候应该使用启动任务?

时间:2012-07-27 10:36:43

标签: azure startup

我知道启动任务用于设置系统。例如,如果您的代码是用Python编写的,则可以添加启动任务来安装Python。但是这也不能在ProgramEntryPoint批处理脚本中完成吗?有什么区别?

3 个答案:

答案 0 :(得分:5)

如果使用ProgramEntryPoint,似乎没有理由使用启动任务。您确实可以在同一个批处理文件中包含所有逻辑。

使用.NET WebRoles / WorkerRoles时,启动任务会变得更有用。在那里,您只能选择编写代码(您可以再次调用单个批处理文件调用其他批处理文件)和/或使用启动任务。

但是如果你从维护的角度来看它,那么使用启动任务来完成与实例的配置和安装有关的所有事情就会更加清晰。您在配置/安装和实际应用程序之间划清界限 - 您实际上可以将其视为关注点的分离(这将很容易被项目中的其他/新开发人员理解)。

除此之外,您必须知道,当您使用任务时,您可以在不同的上下文(受限/提升)中执行任务,这从安全角度来看可能很重要。并且任务存在于不同的类型(简单,背景,前景)中,可以在许多不同的场景中使用(例如,经常ping你的站点的后台应用程序)。如果您不使用任务,您可能需要自己处理所有这些。

这是一篇很好的博客文章,内容涵盖启动任务的详细信息:Using Startup Task in Windows Azure detailed summary

答案 1 :(得分:0)

桑德里诺的好回答。简而言之 - 如果您希望在角色启动之前执行(或开始执行)某些代码,则可以使用启动任务。如果这不是约束,则可以始终从角色的OnStart方法执行任何进程(包括批处理脚本)。我过去使用过启动任务的一个案例是安装NewRelic监控代理。我希望在实际的应用程序启动之前运行以配置我的应用程序。

答案 2 :(得分:0)

您可能无法从ProgramEntryPoint安装Python,因为安装可能需要提升(" admin")特权。

角色(网络/工作人员)通常没有提升权限(这可能是可能的,但出于明显的安全原因,这是一种不好的做法)。因此,ProgramEntryPoint中的代码没有提升权限。

另一方面,启动任务可以具有提升的特权。 IMO,这可能是使用启动任务带来的最大(单一?)好处。