关于项目类型:
网站基本上是一种精简的云服务,可以让您摆脱大量工作——基本上,作为开发人员,您的选择较少,但可以从更简单的编程模型中获益。您无法使用云服务完成所有可以做的事情,但如果您的应用程序不需要网站无法提供的任何内容,那么选择此服务可能会更好。
云服务是经典/默认项目类型。您拥有 Azure API 的所有功能,但除了网站之外,还必须在较低级别上工作。我会推荐这种类型,除非您的应用程序“简单”到足以应付网站——无论是否如此,只有您可以通过仔细查看每种项目类型的功能和限制来回答。
虚拟机就是这样:云中的虚拟机驱动器。您可以选择云服务使用以外的操作系统 - 例如 Windows XP 或某些 Linux 发行版。- 然后安装您需要的任何服务,例如 Apache。我认为,只有在需要特定操作系统或服务时才应选择此选项。虚拟机的缺点是您负责更新和维护它们——而云服务会为您自动更新(Windows 更新等)。
编辑:有关云服务项目类型的更多信息,以防您决定这样做:
云服务支持 2 种角色:工作者角色和 Web 角色。您可以通过增加某个角色的数量来扩展您的应用程序——例如,您可以创建一个角色来托管您的 SignalR 服务,然后如果您监控不断增加的负载,则增加角色实例的数量。Azure 负载均衡器会自动将所有传入请求分发到您为每个角色定义的公共终结点,因此您不必自己进行负载均衡(但您必须使用无状态会话)。
从编程的角度来看,Worker Role 基本上是一个具有 OnStart、OnStop 和 Run 方法的类,需要一直运行到角色实例停止为止。角色的作用完全取决于您——例如,您可以在 OnStart 方法中启动 SignalR 服务并在 Run 方法中检查请求。
Web Role 与 Worker Role 类似,但随 ASP.Net 提供。OnStart、OnStop 和 Run 方法仍然存在,但您不需要使用它们,而是可以使用 ASP.Net 事件(如应用程序启动)。
如果您想为您的应用程序使用 ASP.Net,您应该选择一个 Web 角色。您仍然可以将所有业务逻辑放在 Worker 角色中,并让您的 Web 角色将请求委托给它,例如通过Azure 队列——这样您就可以独立地扩展这两个角色。
您可能还对OWIN或更具体地说是Katana 项目感兴趣。简而言之,Owin 是一个抽象层,它使您的 Web 项目技术独立 - 例如,您可以使用 IIS / ASP.Net,然后根据需要切换到自托管解决方案。Katana 支持 SignalR,因此您也可以直接在 Worker Role 中托管 SignalR,并完全跳过 ASP.Net(通过自己实现 JavaScript 客户端)。