4

在我目前的公司,我们正在对 azure 进行一些研究,以期将我们的一些旧系统迁移到云中。我们有以下系统都安装在客户的位置。

数据库 (SqlServer) 处理服务器 (Winform App) 各种客户端 (Winform Apps)

我们想要做的是将处理服务器转换为 ASP.NET Web API 并创建一个新的 Job Scheduler 作为某种长时间运行的进程,它将轮询数据库并向处理服务器发送请求。

这一切都很好,但我们不确定执行此操作的最佳方法。

我们很高兴为作业调度程序使用服务,为服务器使用 ASP.NET Web API,但我们不知道管理安装的最佳方式。

我们想做的是让每个大客户拥有一个带有调度程序和服务器的 WebRole,以及一个带有多个调度程序和服务器同时运行的 WebRole。

所以对于这个问题,

这真的可能吗?您可以在 Web 角色中运行许多项目吗?

4

2 回答 2

3

Web 角色本质上是一个带有一些代码脚手架的 Windows Server 虚拟机。您可以运行任何可以通过无交互 MSI/xcopy/等安装的东西。您有启动脚本以及从代码安装的能力(在OnStart()事件处理中)。

Web Role 和 Worker Role 的区别主要在于 IIS 的激活。否则,您可以将它们视为等效。

定义不同角色(无论是网络角色还是工作角色)的好处是:每个角色都有自己的大小和数量。例如,这使您可以为前端设置一堆小型 Web 角色实例,并可能设置一个或两个大型实例来执行一些计算密集型任务。但是,实际上,没有什么能阻止您将所有内容加载到一个角色中。只是现在一切都将同步进行。

SQL Server 不适合 web/worker 角色模型,因为安装不能完全自动化。这更适合虚拟机(允许您构建虚拟机并保存它,以便随时运行,完全构建)。更多关于虚拟机的信息在这里。如果你走这条路,你需要从你的网络角色提供对你的数据库的直接访问。您可以为此使用虚拟网络

关于 SQL 的最后一件事:Windows Azure SQL 数据库是数据库即服务,您无需构建任何东西:只需启用它,设置最大大小,然后开始使用它。虽然它不具备 SQL Server 的所有功能,但它涵盖了绝大多数功能,并且每个数据库可扩展到 150GB(并提供分片以超出此范围)。您只需为 Windows Azure SQL 的存储容量付费;运行它的服务器没有成本,也不需要维护数据库服务器。

于 2013-01-07T20:52:42.273 回答
0

您可以将 WebRole 用于您的 API,并将 WorkerRole 用作您的调度程序。如果需要,您可以对两者使用不同的大小和实例计数,并将它们保留在同一个 VisualStudio 解决方案中。

我会避免使用 WebRole 作为调度程序。

于 2013-01-07T16:16:51.003 回答