Asp.net mvc 3 从Azure中的工作者角色部署Web角色

Asp.net mvc 3 从Azure中的工作者角色部署Web角色,asp.net-mvc-3,azure,azure-worker-roles,azure-web-roles,Asp.net Mvc 3,Azure,Azure Worker Roles,Azure Web Roles,我正在研究一些WindowsAzure的东西,以便决定是否移动到Azure 基本信息 要回答这个问题,你需要对我的应用程序有一些基本的了解 该应用程序是一个连接到SQL Server数据库的ASP.NET MVC 3应用程序 它是一个单实例应用程序,这意味着每个客户最终都有自己的应用程序实例在我们的服务器上运行,并作为网站部署到IIS 7 我有一个SQL Server,每个实例都有自己的数据库 我还有一套Windows服务来做一些后台处理。这应该是直截了当的,因为我将重写它们以在Windows

我正在研究一些WindowsAzure的东西,以便决定是否移动到Azure

基本信息
要回答这个问题,你需要对我的应用程序有一些基本的了解

该应用程序是一个连接到SQL Server数据库的ASP.NET MVC 3应用程序

它是一个单实例应用程序,这意味着每个客户最终都有自己的应用程序实例在我们的服务器上运行,并作为网站部署到IIS 7

我有一个SQL Server,每个实例都有自己的数据库

我还有一套Windows服务来做一些后台处理。这应该是直截了当的,因为我将重写它们以在Windows Azure中使用辅助角色-无论如何,服务中的大多数逻辑都位于它们自己的类(库)中,因此服务本身只调用一个类中的一个或多个方法

现在进入问题
每当有人注册免费试用时,我都会将一条记录添加到我拥有的管理数据库中

然后我有一个Windows服务,它将ASP.NET MVC 3应用程序的新实例部署到IIS,授予几个文件夹的权限,运行数据库部署脚本并更新记录以反映它现在已经部署,最后向潜在客户发送一封电子邮件,告知他们的免费试用版已经创建—下面是访问它的方式

那么,如何从工作角色在Windows Azure中部署新实例?最好是,我只需向现有Azure实例添加一个新网站,并为该特定网站创建一个新的SQLAzure数据库即可使用


这需要大量的工作来设置吗?甚至可能吗?

我认为你想要实现的大部分事情都是可能的

它肯定需要一些工作来设置

有关如何实现所需功能的一些想法,请看一看MS SaaS示例——专门为将现有应用程序移植到Azure上的SaaS而设计。在这个应用程序中,他们有一个“入职流程”——这个流程包括建立新的SQL连接和新的门户


关于这一点,有很多很好的博客(观看视频)

基于两条引语,我建议将其称为多租户应用程序:

它是一个单实例应用程序,这意味着每个客户最终都有自己的应用程序实例在我们的服务器上运行

而且

将ASP.NET MVC 3应用程序的新实例部署到IIS的Windows服务授予对几个文件夹的权限

如果我理解正确的话,有“一个”IIS服务器(在WindowsAzure中,它是一个Web角色,可扩展到多个实例),对于每个新的“租户”,您可以设置一些新的东西来支持该租户

如果真的是这样,你完全可以从一个工人的角色上做到这一点——只要看看内特·托顿的帖子和相关代码就可以了。看看实际操作IIS的webdeploy代码

进一步:看一看,我的几个队友与Fullscale180一起发布了一个项目。这是一个多租户应用程序,演示如何在一次部署中管理多个客户,以及监控和扩展

最后:如果您需要实际创建全新的服务主机和存储帐户,则最新的更新将支持此操作。
我希望这有点帮助…

+1-Fabrikam Shipping是一款支持商业的SaaS应用程序的优秀演示。技术方面应该不会太难设置多租户web角色。您需要注意的是数据库结构—在常规SQL server上,空数据库不使用任何资源,因此基本上是免费的。使用SQL Azure,它被视为一个完整的1GB数据库,每月的成本为10美元。它确实是多租户的。事实证明,Azure Toolkit将多个网站部署到同一实例的方法与我今天在Windows服务的专用服务器上所做的几乎完全相同。我的想法是在Azure软件包中安装一个简单的MVC Web应用程序,然后作为启动任务部署我的Windows服务。然后,该服务将使实例“自我感知”,并完全部署这些应用程序。它负责的实例。当扩展到多个实例时,同一个服务只需添加网站并引用正确的SQL数据库。