visual-studio-2010 - 将 Web 应用程序移植到 Azure 的策略

标签 visual-studio-2010 azure azure-configuration

我们正在将一个 Web 应用程序迁移到 Azure,并希望获得一些有关我们策略的反馈。 Azure 对我们来说是新事物,因此我们希望确保我们走在正确的道路上。请注意,我们使用的是 VS 2010。

我们当前的应用程序有两部分:1) 用于用户界面的标准 Web 应用程序和 2) 在服务器上运行的 Windows 应用程序。 Windows 应用程序每 2 分钟唤醒一次,在 SQL 表中查找任何新记录,处理它们,然后休眠。 Windows 应用程序还告诉我们处理的记录数、处理时间等,以便我们可以了解系统的总体运行状况。这两个应用程序都读取/写入服务器上存储的文件。 (是的,这可能应该是一项服务,但我们需要界面,以便我们可以快速查看整体运行状况。我们有一项服务可以检查以确保界面正在运行,并在出现故障时重新启动它。)

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

这是我们的策略。感谢所有建议。

1 - 为 Windows 应用程序创建辅助角色。 2 - 将此辅助角色设置为启动项目。 3 - 辅助角色将创建 Azure 云驱动器(用于文件访问)并将驱动器号传递给 Web 应用程序。我们将在 onstart 中建立连接。 4 - 确保辅助角色是持久的,这样我们就不会丢失云驱动器。

另外两个问题:

1 - 看起来辅助角色可以有一个用户界面,但也许我们误读了一些东西。如果我们尝试将 Windows 应用程序添加到解决方案中,我们会收到许多错误。我们还尝试创建一个辅助角色并将其设置为 Windows 窗体应用程序,但这立即产生了一个错误,表明它们不是“Main”方法,这对我们来说是一个警告标志,表明我们不应该这样做。我们在这里缺少什么?

2 - 如果辅助角色设置为启动项目,是否需要启动 Web 应用程序,还是会在辅助角色完成启动处理后自动启动?

最佳答案

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

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

关于共享云驱动器:一个角色不能与另一角色共享驱动器盘符。而使用云驱动器时,只能有一名写入者。事实上,每个角色实例都需要自己的云驱动器。您可能需要考虑将 blob 存储用于公共(public)文件存储。

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

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

关于visual-studio-2010 - 将 Web 应用程序移植到 Azure 的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11575144/

相关文章:

c# - Azure KeyVault GetSecretAsync.Result.Value 错误处理

asp.net-mvc - ASP.NET MVC Azure Web 角色和临时文件夹大小

c# - Xml 文档中用于 cref 的 Visual Studio Intellisense

c# - VS 2010 代码可读性提示/插件

visual-studio-2010 - VisualHG 图标未出现在 VS2010 解决方案资源管理器中

MongoLab 上的 Node.js 和 MongoDB : "Sockets Closed" On Every Insert

azure - 如何在本地测试在运行时更改 Azure 服务配置设置?

azure - 微软Azure : API Access error DisallowedOperation

c# - Azure 无法访问存储在应用服务配置中的连接字符串

c++ - xxxxx 处的未处理异常无法写入位置。它不会在 getline 之外执行......在 visual studio 2010 中