我应该使用哪个Azure角色?

时间:2012-05-02 01:05:56

标签: azure azure-worker-roles azure-web-roles

我正在计划一个将移动应用程序作为前端的应用程序(也许是一个执行不同目的的Web前端)。如果您熟悉这些应用程序,可以使用Runkeeper或Runtastic。移动设备是用户交互的主要方法,并且网站具有用户可以在之后查看的统计数据和仪表板。

我希望主应用程序驻留在Windows Azure中。我对如何构建应用程序感到困惑 - 业务逻辑应该驻留在Web角色还是工作者角色?如果主用户界面是移动应用程序,它是否连接到辅助角色以持久存储或检索数据,还是连接到Web角色,还是两者都没有?我理解一个典型的场景,其中Web角色提供了一个用户界面,可以将数据直接保存到存储或将数据传递给工作者角色拾取的队列或表,但是移动应用程序的存在会让我失望。

有任何帮助吗?谢谢!

2 个答案:

答案 0 :(得分:4)

安迪的答案很棒,但让我添加一种不同的味道。 Web角色和辅助角色之间的区别在于Web角色自动启用并配置了IIS。一个好的经验法则是,如果您想要IIS,请使用Web角色。如果您不想使用IIS,请使用辅助角色。

答案 1 :(得分:2)

对于托管移动应用程序连接的服务器组件,我认为最简单的方法是托管ASP.NET Web应用程序的Web角色。 Web应用程序可用于服务以及Web前端(HTML)网站。

ASP.NET MVCWeb API使设置Web服务非常简单,并且可以轻松使用非HTML数据格式,例如JSON或XML。您的移动应用程序可以使用REST JSON API与Web应用程序通信,或者您可以根据需要使用XML / SOAP,或者您想要的任何格式。使用JSON作为传输格式的REST API可能是目前最受欢迎的。考虑Web应用程序的一种方法是,它只是一种从客户端发送和接收数据的方法。如果客户端是Web浏览器,您可以将内容作为HTML页面提供,或者如果您的客户端是移动应用程序,您可以将数据作为JSON提供,并让客户端显示它所需的内容。基本上,您的Web应用程序既可以是您的网站(HTML),也可以是非Web浏览器客户端的“API”。

您可以将工作者角色视为与Windows服务类似。它们主要用于进行后端处理等等。工作者角色可能提供一些托管面向公众的API的功能,但您必须自己管理连接,消息管道,回收以及所有这些;然而,Web角色将为您提供一个Web服务器(IIS)来管理连接等。如果您要介绍消息队列之类的东西,那么让面向公众的API成为Web角色是有意义的,并且消息处理组件是一个辅助角色。 Web应用程序可以通过REST JSON API从客户端接收消息,然后将消息传递到队列,其中worker角色将其拾取。如果您拥有可在后台处理而不会影响客户端的重型服务器端业务逻辑,那么引入队列和工作者角色是有意义的。