2012-07-20 90 views
1

我们正在将Web应用程序移至Azure,并希望对我们的策略提供一些反馈意见。 Azure对我们来说是新的,所以我们要确保我们正在走向正确的道路。请注意,我们正在使用VS 2010.将Web应用程序移植到Azure的策略

我们目前的应用程序有两个部分:1)用户界面的标准Web应用程序和2)在服务器上运行的Windows应用程序。 Windows应用程序每2分钟唤醒一次,查找SQL表中的任何新记录,处理它们然后睡觉。 Windows应用程序还告诉我们处理的记录数量,处理时间等,以便我们可以看到系统的总体健康状况。这两个应用程序读取/写入服务器上存储的文件。 (是的,这应该可能是一项服务,但我们希望接口能够快速看到整体健康状况,我们有一个服务来检查接口是否正常运行,如果发生故障,请重新启动它。)

移植Web应用程序到Azure非常简单,我们在VS中对它进行了一些测试,没有任何问题。我们需要关于Windows应用程序的一些建议并设置/访问这些文件。

这是我们的战略。所有的建议表示赞赏。

1 - 为Windows应用程序创建一个辅助角色。 2 - 将此工作角色设置为启动项目。 3 - 辅助角色将创建Azure云驱动器(用于文件访问)并将驱动器盘符传递给Web应用程序。我们将在onstart内建立连接。 4 - 确保工作人员角色是持久性的,以便我们不会丢失云驱动器。

另外两个问题:

1 - 看来,工人的角色可以有一个用户界面,但也许我们误解的东西。如果我们尝试将Windows应用程序添加到解决方案中,我们会收到大量错误。我们也尝试创建一个工作者角色并将其设置为Windows窗体应用程序,但是立即产生了一个关于他们不是“主要”方法的错误,这是对我们的警告标志,我们不应该这样做。我们在这里错过了什么?

2 - 如果worker角色设置为启动项目,是否需要启动web应用程序,或者一旦worker角色完成其启动处理,它将自动启动?

+0

工作角色具有一个界面,但不具有用户界面。 – Paparazzi 2012-07-20 11:39:37

+0

提供了答案,但我不知道你的意思是让工作者角色持久。 – 2012-07-20 12:30:18

回答

2

Web和Worker角色基本上是Windows Server 2008 SP2/R2 VM,Web角色具有IIS配置并正在运行。您拥有的实际的webrole.cs和workerrole.cs代码只是在Web角色/辅助角色实例启动时运行的脚手架。您还拥有可以处理提升特权任务的启动脚本(例如修改注册表和安装软件)。

关于您的策略:您不需要必须为为您的Windows服务创建一个辅助角色,但如果您觉得会出现性能问题,则应该考虑它。你可以选择在你的web角色中运行它 - 只需从OnStart()或Run()中启动线程即可。您需要确保只有一个调度程序正在运行。有许多关于在Windows Azure中运行调度程序的SO问题,例如this one,以及一些讨论使用quartz.net的问题,例如this

关于正在共享的云端驱动器:一个角色无法与另一个角色共享驱动器号。对于云端硬盘,只能有一名作者。实际上,每个角色实例都需要自己的云驱动器。这是一个您可能想要考虑用于普通文件存储的blob存储的领域。

根据您提到的没有UI的工作角色:虽然Visual Studio不便于将Web应用程序添加到工作角色,但您可以使用可以这样做。更重要的是:由于worker角色只是一个Windows Server虚拟机,因此没有任何东西阻止您运行任何数量的替代Web服务器(如tomcat,jetty和jboss)。您只需要通过启动脚本或从OnStart()启动流程来运行这些流程。您还需要根据需要创建输入端点(例如http端口80,https 443)。您可以轻松地以Web角色运行这些服务器(并运行任何其他类型的支持tcp,udp,http或https的端口服务器)。

关于启动项目:您的云计划将成为启动项目。 Web和辅助角色实例并行启动。

相关问题