我计划在 Azure 中进行一些浅色背景处理。我已经运行了一个 webrole,并且想使用相同的角色,这样我就不必为此使用(并付费!)专用的辅助角色。
我读过,我可以简单地重写 WebRole 类中的 Run()
,该类派生自 RoleEntryPoint
,并在那里实现我的“穷人的调度”。它应该定期从队列中获取消息并处理它们。
现在我的问题是:WebRole
是否在自己的进程或线程中运行,或者更重要的是,当应用程序池/应用程序域被回收时,WebRole
会发生什么?
最佳答案
如果您运行的是完整 IIS 模式(1.3 SDK 及以上版本),则 RoleEntryPoint 和 IIS 位于不同的进程中。如果您有 <Sites>
,您就会知道您正在使用完整 IIS 模式。 ServiceDefinition 中的元素。
IIS 实际上在 w3wp.exe 中运行您的网站(就像您通常所期望的那样),因为它有自己的应用程序池。 RoleEntryPoint 代码由完全不同的进程启动并作为父进程,因此它们之间没有联系(例如,崩溃一个进程不会影响另一个进程)。
关于Azure:结合 Web 和辅助角色:应用程序池回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8126325/