我打算在Azure中进行一些简单的后台处理。我已经运行了一个webrole,并希望使用相同的角色,以便我不必使用(并支付!)一个专门的工作者角色。
我已经读过我可以简单地覆盖WebRole类中的Run()
,它来自RoleEntryPoint
,并在那里实现我的“穷人的调度”。它应定期从队列中获取消息并进行处理。
现在我的问题是:WebRole
是在自己的流程或主题中运行,还是更重要的是,当应用程序池/应用程序域被回收时,WebRole
会发生什么?
答案 0 :(得分:2)
如果您使用完全IIS模式运行(可从1.3 SDK开始),则RoleEntryPoint和IIS处于不同的进程中。如果ServiceDefinition中有<Sites>
元素,您将知道您正在使用完整IIS模式。
IIS实际上在w3wp.exe中运行您的网站(就像您通常所期望的那样),因为它是自己的appPool。 RoleEntryPoint代码是由完全不同的进程启动和进行的,因此它们之间没有关系(例如,崩溃一个不会影响另一个)。
答案 1 :(得分:2)
添加@dunnry的答案;同样有趣的是,在此文件夹中的程序集副本上调用run:
e:\approot\bin
IIS指向此文件夹中应用程序的另一个副本:
e:\siteroot\0