Azure 工作者角色还是 Web 应用程序?

Azure Worker Role or Web App?

问题背景:(简化,但相同的想法)一个可扩展的网络服务,将两个数字和 returns 结果相加。没有状态被保存。客户端发送 HTTP POST,其中要添加的 2 个数字是正文的一部分。服务器添加数字并在 HTTP 响应正文中响应总和。

问题:我想在 Azure 上部署服务。 我应该创建网络角色还是工作者角色?对于上述问题,哪个性能更好?

我尝试使用 worker-role 创建原型,但有些部分(例如处理 http-post 中的 application/xml mime 类型)似乎很难在 worker 角色中完成。默认情况下,诸如 GlobalConfiguration 类 之类的东西是不可用的。

Question: I want to deploy the service on Azure. Should I create a web-role or a worker-role? Which would be more performant for the above stated problem?

Web RoleWorker Role 之间,答案是 Web Role。原因是 IIS 预安装在 Web 角色中,而您需要在辅助角色中安装 IIS(或其他一些 Web 服务器)才能处理 HTTP 请求。工作者角色更适合执行不需要用户交互的后台任务(将它们视为本地计算机上的服务 运行)。

在性能方面,我相信它们都是一样的,因为在这两种情况下你得到的是相同的虚拟机。

话虽如此,在托管 Web 服务时,您还有其他选择。您可以使用 Web Apps which provides a very simple deployment model (as compared to Cloud Services). If your application is going to be an API only, you could use Azure API Apps only. Yet another alternative would be to use Azure API Management Service。在决定云服务(Web/Worker 角色)之前,您可能还想查看这些服务。

根据 web-service 的实施,典型的优先级是仅在必要时承担基础架构中某个层的责任。例如。 Apps Services 给你的责任最少,但如果你在 ASP.NET、node.js、php 等中实现 web-service,这是一个不错的选择。 Web 角色让您可以更好地控制 IIS 部分,并且仍然支持 ASP.NET、php 等。工作者角色通常用于 web-service 的 OWIN 实现 - 即您不依赖 IIS。

/米克尔