2015-02-11 25 views
0

我有一个产品和一个人们可以购买产品的前端网站。购买后,我有一个系统在我的DNS服务器上创建一个指向IP地址的A记录。然后它创建一个具有所需绑定的新IIS网站。处理多个应用程序的部署ASP.NET

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

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

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

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

回答

1

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

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

  1. 避免任何每个客户端的单独组件
  2. 避免静态变量的
  3. 缓存不能是全球性的,而且必须在客户端上下文相关
  4. 要特别注意如何您的客户端文件保存到文件系统

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

+0

我很想转移到一个真正的多租户环境,但每个网站都使用它自己的缓存策略(取决于客户端),使用唯一的SQL Server数据库和整个堆的安装设置。把所有东西都合并为一个真正的多租户环境,不幸的是需要重新写入。也许我可以使用团队城市部署到一个位置,然后有一个自定义应用程序来部署到每个站点......我认为无论我做什么都会是一大堆乐趣! – Paul 2015-02-12 00:55:00

+0

@保罗我确实感到你的痛苦伴侣。我讨厌这样说,但这听起来像是从一开始就做出错误决定的结果。我仍然强烈建议你看看多租户,它不一定涉及完整的重写,只处理客户端数据处理与客户端上下文无关的数据。有一个每客户端缓存策略,它不是一个显示限制器,你可以在运行时使用IoC/DI模式简单地加载一个基于当前上下文的特定缓存组件。有几个第三paty工具在那里为此目的,如温莎城堡IoC – Leo 2015-02-12 01:41:49

+0

感谢您输入狮子座,欣赏它。 – Paul 2015-02-18 00:20:57