2013-01-07 61 views
4

在我当前的公司,我们正在对Azure进行一些研究,将我们的一些旧系统移到云中。我们有以下系统,都安装在客户所在地。在蔚蓝色的web角色中运行多个项目

数据库(SqlServer的) 处理服务器(winform应用程序) 各种客户端(WinForm的应用程序)

我们所希望做的是处理服务器转换成一个ASP.NET Web API,并创建一个新的工作调度程序作为某种长时间运行的过程,它会轮询数据库并将请求发送到处理服务器。

这很好,但我们不确定最好的方法来做到这一点。

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

我们想要做的是为每个大客户安排一个WebRole和调度程序和服务器,以及一个WebRole和多个调度程序和服务器同时运行。

因此,对于这个问题,

这实际上是可能的吗?你可以在Web角色中运行多个项目吗?

回答

3

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

Web角色和工作者角色的不同主要在于IIS的激活。否则,你可以把它们当作等价物。

定义独立角色(网络或工作者)的好处:每个角色都有自己的大小和数量。例如,您可以为您的前端设置一堆Small Web角色实例,也可以为一个或两个Large实例设置一些计算密集型任务。不过,真的,没有什么能阻止你将所有东西装入一个角色。只是现在一切都会以锁步方式进行扩展。

由于安装无法完全自动化,因此SQL Server不适合Web/Worker角色模型。这更适合于虚拟机(允许您构建虚拟机并保存它,随时运行,完全构建)。虚拟机上的更多信息here。如果你走这条路线,你需要直接从你的web角色访问你的数据库。你可以用这个Virtual Network

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

0

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

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

+1

除了激活IIS(可以通过命令行启用/禁用)之外,web和worker角色之间确实没有实际区别。比方说,如果你想运行Tomcat,即使你正在托管一个Web服务器,你也会选择工作者角色。同样,您可以在Web角色实例中轻松运行调度程序任务,甚至可以在端口80/443上删除输入端点(如果需要的话)。 –