问题背景 :(简化,但同样的想法)可扩展的网络服务,可添加两个数字并返回结果。没有国家得救。客户端发送HTTP POST,其中要添加的2个数字是正文的一部分。服务器添加数字并使用HTTP响应正文中的求和进行响应。
问题:我想在Azure上部署该服务。 我应该创建一个web角色还是一个worker-role?对于上述问题,哪个会更有效?
我尝试使用worker-role创建一个原型,并且有一些部分(比如在http-post中处理application / xml mime类型),这似乎很难在worker角色中完成。默认情况下,GlobalConfiguration类不可用。
答案 0 :(得分:2)
问题:我想在Azure上部署该服务。我应该创建一个 网络角色还是工人角色?哪个更适合 上述问题?
在Web Role
和Worker Role
之间,答案为Web Role
。原因是IIS预先安装在Web角色中,而您需要在工作者角色中安装IIS(或其他一些Web服务器)来处理HTTP请求。工作者角色更适合执行不需要用户交互的后台任务(将其视为在本地计算机上运行的服务)。
性能方面,我相信它们都是一样的,因为在这两种情况下你都会得到相同的VM。
话虽如此,在托管您的Web服务时还有其他可供选择的方法。您可以使用Web Apps
来提供非常简单的部署模型(与云服务相比)。如果您的应用程序仅为API,则只能使用Azure API Apps
。另一种选择是使用Azure API Management Service
。在决定使用Cloud Service(Web / Worker角色)之前,您可能还想查看这些服务。
答案 1 :(得分:2)
根据Web服务的实现情况,典型的优先级是仅在必要时承担基础架构中图层的职责。例如。 Apps Services为您提供的责任最小,但如果您在ASP.NET,node.js,php等中实现Web服务,则是一个不错的选择。 Web角色使您可以更好地控制IIS部分,并仍然支持ASP.NET,PHP等。工作者角色通常用于Web服务的OWIN实现 - 即您不依赖于IIS。
/的Mikkel