2

我打算在 Azure 中进行一些轻量级的后台处理。我已经运行了一个 webrole,并且想使用相同的角色,这样我就不必为此使用(并支付!)专门的工作角色。

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

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

4

2 回答 2

2

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

e:\approot\bin

而 IIS 指向此文件夹中应用程序的另一个副本:

e:\siteroot\0
于 2011-11-14T23:27:26.433 回答
2

如果您在完全 IIS 模式下运行(可用 1.3 SDK 及更高版本),则 RoleEntryPoint 和 IIS 处于不同的进程中。<Sites>如果您的 ServiceDefinition 中有一个元素,您将知道您正在使用完整的 IIS 模式。

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

于 2011-11-14T21:45:37.203 回答