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

Handling multiple deployments of application ASP.NET

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

这一切都很好,但我现在正在考虑发展业务,为此我需要处理应用程序的升级。

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

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

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

首先,可以在 TeamCity 中有一个构建配置,用于构建和部署到特定位置...无论是本地路径还是网络驱动器。我不记得具体是怎么回事了,但我在珀斯工作过的一家公司有完全相同的环境。这假定所有网站都指向文件系统中的相同物理路径。

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

  1. 避免任何基于客户端的单例组件
  2. 避免静态变量
  3. 缓存不能是全局的并且必须关联一个客户端上下文
  4. 请特别注意您如何将客户端文件保存到文件系统

等等。如果您需要有关在当前环境中设置 TeamCity 的更多详细信息,请告诉我。我可能会找到一些有用的信息