在Azure中生成并执行Worker进程

时间:2012-04-24 13:51:24

标签: c# .net asp.net-mvc azure azure-worker-roles

谷歌在这个问题上确实让我失望了。我是Azure的新手,我只是.NET的中间人

我有一个Azure解决方案,我已经在一个运行良好的Web角色中编写了一些代码。我现在要做的是将一些代码移动到Azure Worker中,该工作线将由Web角色中的控制器函数初始化

我需要做些什么来实现本地化?我在SLN中创建了Worker项目。我只需要知道如何启动并运行它。

我认为我的一部分问题是我假设这些工人的行为像Heroku工人......是这样的吗?因为我需要的是像队列系统(一大队中的一堆“工作任务”)。

我在教程中找到的很多链接似乎都是关于如何从Web角色实际初始化流程的。“

3 个答案:

答案 0 :(得分:4)

Windows Azure中的工作人员不是任务;他们是整个虚拟机。为了让您的生活更轻松,请记住这个小细节:Web角色实例是运行IIS的Windows Server 2008,而工作者角色是相同的,但禁用了IIS。

当您将该辅助角色添加到项目中时,实际上现在有一组新的虚拟机在运行(至少有一个,具体取决于您设置的实例数)。这些虚拟机有自己的OnStart()和Run()方法,您可以将代码放入,以便进行自举。

如果你抓住Windows Azure training kit,你会看到一些实验,展示如何在各种角色实例之间进行通信(一种常见的模式是使用Windows Azure队列)。使用Guestbook动手实验室(第一个实验室)有一个很好的后台流程示例。

答案 1 :(得分:1)

关于此的更多信息,因为我现在已经开始了......

如果您来自Heroku背景,那么Azure Worker或多或少是Rails中您实际使用队列执行的功能。与Heroku排队操作不同,Azure Worker只是无休止地运行并继续轮询新事物......因此Run()函数中的模板化睡眠(10000)。

我发现让Web和Worker互相交谈的最常规方式是通过Azure ServiceBus的队列消息,目前尚未模拟,这意味着您需要一个功能正常的Azure帐户才能使其工作,并且它将起作用即使你在本地跑步。你只需要上网。

ServiceBus消息可以将整个对象传递给Worker(只要Worker proj中有正确的依赖项),所以这很好。

答案 2 :(得分:-1)

我认为您在启动azure仿真器以及您的工作人员/ Web角色时遇到了麻烦吗?只需将azure配置项目设置为启动项目并运行即可。它将启动模拟器以及您的所有角色。