为SignalR ASP.NET项目选择正确的项目类型和Windows Azure服务

时间:2013-08-16 13:53:20

标签: azure visual-studio-2012 signalr azure-storage azureservicebus

我正在开发将在Windows Azure上托管的ASP.NET 4.5 C#+ SingnalR Web应用程序。

我刚刚开始并且刚开始使用Windows Azure。我报名参加为期30天的免费试用。我正在Visual Studio 2012中开发我的应用程序。

我的问题是关于在Windows Azure上开发和发布我的特定应用程序时需要选择的可用服务。如果我打算使用带有Windows Azure Service Bus的SignalR构建实时应用程序,我需要使用哪种基础架构?

我知道我需要在负载均衡器后面扩展app + signalr机器。我也知道我需要将SignalR与Windows Azure Service Bus连接

我应该在Visual Studio中创建什么类型的项目我应该从Windows Azure中选择哪种类型的服务。我知道有“网站”,“虚拟机”和“云服务” - 但我不知道哪一个适用于我的特定应用程序。 感谢。

2 个答案:

答案 0 :(得分:3)

关于项目类型:

网站基本上是一个精简的云服务,需要大量的工作 - 基本上你作为开发人员的选择较少,但从更简单的编程模型中获利。您无法使用云服务执行所有操作,但如果您的应用不需要网站无法提供的任何内容,那么您最好选择此选项。

Cloud Service 是经典/默认项目类型。您拥有Azure API的所有功能,但除了网站之外,还必须在较低级别工作。 我会推荐这种类型,,除非你的应用程序“简单”足以与网站相关 - 无论是否是这种情况,只有你可以通过仔细查看功能和限制来回答每个项目类型。

虚拟机就是:云中的虚拟机驱动器。您可以选择除云服务使用之外的操作系统 - 例如Windows XP或一些Linux dist。 - 然后安装您需要的任何服务,例如Apache的。在我看来,如果您需要特定的操作系统或服务,您应该只选择此选项。虚拟机的缺点是您负责更新和维护它们 - 而云服务会自动更新(Windows更新等)。


编辑:有关Cloud Service项目类型的更多信息,以防您决定采用此方式:

云服务支持两种角色:工作者角色和Web角色。您可以通过增加某个角色的数量来扩展您的应用程序 - 例如,您可以创建一个托管SignalR服务的角色,然后在监控不断增加的负载时增加角色实例的数量。 Azure负载均衡器会自动将所有传入请求分发到您定义每个角色的公共端点,因此您不必自行进行负载平衡(您必须尽管使用无状态会话。

从编程角度来看,Worker Role基本上是一个具有OnStart,OnStop和Run方法的类,需要在角色实例停止之前运行。这个角色的作用完全取决于你 - 例如您可以在OnStart方法中启动SignalR服务,并在Run方法中检查请求。

Web角色就像工作者角色,但随ASP.Net一起提供。 OnStart,OnStop和Run方法仍然存在,但您无需使用它们,而是可以使用ASP.Net事件(如应用程序启动)。

如果要为应用程序使用ASP.Net,则应选择Web角色。您仍然可以将所有业务逻辑放在辅助角色中,并让您的Web角色将请求委托给它,例如通过 Azure队列 - 这样您就可以独立扩展两个角色。

您可能还对 OWIN 或更具体的 Katana project 感兴趣。简而言之,Owin是一个抽象层,可以使您的Web项目技术独立 - 例如,您可以使用IIS / ASP.Net,然后根据需要切换到自托管解决方案。 Katana支持SignalR,因此您也可以直接在Worker角色中托管SignalR并完全跳过ASP.Net(通过自己实现JavaScript客户端)。

答案 1 :(得分:1)

查看SignalR Scaleout - 很可能,您希望开发Web应用程序并将Web应用程序部署到Azure云服务。除了将CNAME记录指向Cloud Service之外,Cloud Service在负载均衡器后面运行任意数量的实例,而无需您进行任何配置。对于SignalR部分,为了使其可扩展,您将需要使用Azure服务总线中继作为SignalR实现的背板(再次,负载平衡,而无需花费大量的配置/维护)。引用的示例是一个良好的开端。