我是Microsoft Azure的新手,我还没有真正理解云服务中的工作者角色。Web角色很容易掌握:它们是vm运行的IIS,所以我不必自己管理它,所以当我部署到Web角色时,我将部署一些在IIS中运行的东西。
现在,worker角色每个人都说"它就像windows服务,它在后台运行",我真的不知道什么时候和为什么我需要。直到今天,我从来没有需要开发一个windows服务,所以也许正因为如此,我没有得到工人角色的重点。此外,我似乎有人在工作者角色上部署WebAPI应用程序,但WebAPI是我在IIS上运行的东西,所以它看起来更像是web角色而不是工作者角色。
无论如何,azure worker角色的实际用例是什么?我们什么时候应该使用它,为什么?它的常用用法有哪些?
正如@Thiago所说,有很多用途。
以YouTube为例。你现在会怎么实施呢?当用户观看和上传视频时,你可能会设置一个前端。
一旦视频上传,你需要在上面执行一些任务。将其转换为特定格式,查找版权材料,拍摄快照……不管是什么
你肯定不希望在你这样做的时候阻止用户,你也不希望在你这样做的时候让用户打开浏览器。这就是工人角色发挥作用的时候。不需要UI,它不依赖于用户的任何东西,你只需要在那里运行你需要的进程,并在视频准备好时通知用户。他还在吗?给他看个徽章什么的,他关闭浏览器了吗?给他发封电子邮件。
这只是一个帮助我理解工人角色的例子…希望它对你也有帮助
工人角色有很多用途。
你可以用它来发送电子邮件,从azure服务总线队列中取出队列项目并处理它,你可以自托管一个webapi(你不需要IIS)。
简而言之,
- Web角色-如果您计划在Azure中运行IIS
- Worker Role -如果你想在没有IIS的情况下运行中间层应用
- VM角色—如果您想在Azure中执行的操作超出了Web或Worker角色的范围
Startup任务只在Web或Worker角色中可用;虚拟机角色不能管理启动任务。这是您使用work角色的原因之一。
基本上,web角色必须能够提供HTTP内容;但是,在worker角色中没有这样的限制。
azure worker角色的实际用例是什么?
- 您可以运行启动任务,如控制台应用程序或批处理文件,可以启动一个或多个Windows PowerShell脚本。
- 你可以安排很多维护进程在后台运行,比如
- 通过对数据库运行查询来检查孤立数据
- 索引数据库
- 从web角色发送的队列中提取消息
理想情况下,您希望web角色尽可能响应,通过将工作项插入队列来延迟所有昂贵的事务/工作,并让它们在worker角色中执行。
WebAPI可以在没有IIS的情况下使用OWIN自托管。如果你只想托管WebAPI本身而不需要文档,你可以通过在Worker角色中组合任务来节省资金。此外,我似乎有人在工人角色上部署WebAPI应用程序,但是WebAPI是我在IIS上运行的东西,所以它看起来更多更像web角色,而不是worker角色。