Azure:合并web和工作人员角色:应用程序池回收

Azure:合并web和工作人员角色:应用程序池回收,azure,background-process,azure-web-roles,azure-queues,Azure,Background Process,Azure Web Roles,Azure Queues,我计划在Azure中进行一些浅背景处理。我已经有一个webrole正在运行,并且希望使用相同的角色,这样我就不必为此使用(并支付!)一个专门的工作者角色 我已经读过,我可以简单地重写WebRole类中的Run(),该类派生自RoleEntryPoint,并在那里实现我的“穷人调度”。它应该定期从队列中获取消息并进行处理 现在我的问题是:WebRole是否在自己的进程或线程中运行,或者更重要的是,当应用程序池/应用程序域被回收时,WebRole会发生什么情况?如果您在完全IIS模式下运行(从1.3

我计划在Azure中进行一些浅背景处理。我已经有一个webrole正在运行,并且希望使用相同的角色,这样我就不必为此使用(并支付!)一个专门的工作者角色

我已经读过,我可以简单地重写WebRole类中的
Run()
,该类派生自
RoleEntryPoint
,并在那里实现我的“穷人调度”。它应该定期从队列中获取消息并进行处理


现在我的问题是:
WebRole
是否在自己的进程或线程中运行,或者更重要的是,当应用程序池/应用程序域被回收时,
WebRole
会发生什么情况?

如果您在完全IIS模式下运行(从1.3 SDK开始提供),RoleEntryPoint和IIS处于不同的进程中。如果在ServiceDefinition中有
元素,您将知道您正在使用完整的IIS模式


IIS实际上在w3wp.exe中运行您的网站(就像您通常期望的那样),因为它是自己的应用程序池。RoleEntryPoint代码是由一个完全不同的进程启动和创建的,因此它们之间没有联系(例如,破坏一个不会影响另一个)。

添加到@dunnry的答案中;另一个有趣的是,在该文件夹中的程序集副本上调用run:

e:\approot\bin
e:\siteroot\0
鉴于IIS正在指向此文件夹中应用程序的另一个副本:

e:\approot\bin
e:\siteroot\0

嗯,最后一个附加条款不太正确。如果您的RoleEntryPoint崩溃,Windows Azure将重新启动角色实例,从而重新启动您的IIS网站。@smarx-很好。我想的更多的是相反的情况——网站崩溃。此外,对于“当应用程序池/应用程序域被回收时,WebRole会发生什么”的问题,当应用程序池被回收时,WebRole不会发生任何事情。感谢大家的解释!