嗨,我创建了一个具有工作者角色的新天蓝色项目,并注意到一个类 WorkerRole.cs。我试图研究它的目的是什么,但是我找不到一个直接的答案。
2 回答
WorkerRole.cs 的目标是为您提供一个入口点,以便在 Worker Role 实例启动时执行“某事”。这可以是您正在启动的命令行应用程序、WCF 服务或 MySQL,......任何您想要的东西。
请注意,您需要编写代码来保持实例“活动”。如果您不这样做,它将在 Run 方法完成时重新启动。请查看以下问题以获取更多信息:Using Thread.Sleep or Timer in Azure worker role in .NET?
以下是您可以用来了解 Windows Azure 工作者角色的内容:
- Windows Azure 是平台即服务,您可以在专用虚拟机中运行您的应用程序(超小型实例除外)
Windows Azure 应用程序的应用程序架构支持 3 种不同类型的应用程序,称为 Web Role、Worker Role 和 VM Role,
2.1。Web 角色被认为是一个应用程序,其中预先配置了 IIS 并为您的应用程序做好了准备。在大多数情况下,它是一个基于 Web 的应用程序,但如果您愿意,它可能不是,但 IIS 将始终存在。使用 IIS,您可以运行 ASP.NET 应用程序或 node.js 应用程序,您可以自行决定需要哪种应用程序。
2.2. Worker 角色被认为是不需要 IIS 的应用程序,无论您想在 Worker 角色上运行什么,C#、Java、PHP、Python 或其他任何东西都取决于您。它主要用于开源Web应用程序或作为后端执行操作且不需要Web前端的应用程序。
2.3 VM 角色处于测试阶段,用于在用户部署的自定义 VHD 上运行。我们认为这是在以下解释中。
所有这些角色实际上都是一个库,意味着它们编译为 DLL,当它们在 Windows Azure 上运行时,它们实际上需要一个主机进程来运行。对于 Web Role,宿主进程是 WaWebHost.exe 或 WaWebIIS.exe,对于 WorkerRole,宿主进程是 WaWorkerHost.exe。
当这些宿主进程在 Windows Azure 中启动时,它们会寻找一个名为 E:__entrypoint.txt 的文件,该文件提供了角色 DLL 名称和位置,以便宿主进程找到并加载它。
这些 Web 和 Worker 角色类派生自 RoleEntryPoint 基类,它扩展了 Web 和 Worker 角色在 Windows Azure 环境中运行所需的所有功能
当您使用 Azure SDK 模板创建 Web 或辅助角色时,您将获得这些基本代码文件,其中 Web 和辅助角色类可以实现所需的功能。对于 Worker Role,调用 WorkerRole 在 WorkerRole.cs 中定义,对于 Web Role,它是 WebRole.cs。
如果您决定添加特定于 Windows Azure 运行时的代码,即您将在此处添加的配置或某些设置,因为当角色将通过主机进程启动时,您在 WebRole.cs 或 WorkerRole.cs 中添加的代码将在 Windows Azure 运行时中执行语境。