处理应用程序ASP.NET的多个部署

时间:2015-02-11 06:12:43

标签: c# asp.net sql-server deployment

我有一个产品和一个人们可以购买产品的前端网站。购买后,我有一个系统,在我的DNS服务器中创建一个指向IP地址的A记录。然后,它会创建一个新的IIS网站,其中包含所需的绑定。

所有这些都运作良好,但我现在正在寻求发展业务,并且我需要处理应用程序的升级。

目前,我的应用程序运行着40个网站。它是完全相同的代码库,每个网站都使用它自己的SQL Server数据库。每个网站都在一个单独的应用程序池中运行,并完全独立运行。

我已经看过使用TeamCity构建应用程序,然后有一个手动步骤为每个网站运行MSDeploy但这不是特别理想,因为我需要a)购买完整许可证和b)永远记住将新网站添加到TeamCity构建中。

如何处理运行许多不同网站和单独SQL Server数据库的相同代码库的升级和部署?

1 个答案:

答案 0 :(得分:1)

首先,可以在TeamCity中使用构建配置来构建和部署到特定位置......无论是本地路径还是网络驱动器。我不记得究竟如何,但我在珀斯工作的公司之一有完全相同的环境。这假设所有网站都指向文件系统中的相同物理路径。

现在,提出建议,我不知道你是如何设置它的,但如果这个A记录只是创建一个子域,我会将我的方法转移到一个真正的多租户环境。也就是说,一个网站,一个用于所有客户的应用程序池以及与特定子域关联的多个绑定。这种方法更具可扩展性,并且使用更少的内存资源......过去我做过一些基准测试分析,每个进程(apppool)消耗的内存量大量浪费资源。虽然有一个问题,但您需要为多租户架构准备应用程序以避免任何类型的出血,例如

  1. 避免任何每个客户端的单例组件
  2. 避免使用静态变量
  3. 缓存不能是全局的,必须与客户端上下文关联
  4. 特别注意保存客户端文件到文件系统的方式
  5. 其他的东西。如果您需要有关在当前环境中设置TeamCity的更多详细信息,请与我们联系。我可能会找到一些有用的信息