【问题标题】:Handling multiple deployments of application ASP.NET处理应用程序 ASP.NET 的多个部署
【发布时间】:2015-02-11 06:12:42
【问题描述】:

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

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

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

我研究过使用 TeamCity 构建应用程序,然后手动执行每个网站的 MSDeploy,但这并不是特别理想,因为我需要 a) 购买完整许可证 b) 永远记住将新网站添加到 TeamCity 构建中。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我很想迁移到真正的多租户环境,但每个网站都使用自己的缓存策略(取决于客户端),使用独特的 SQL Server 数据库和一大堆设置对于那个安装。不幸的是,将所有内容组合成一个真正的多租户环境将需要完全重写。也许我可以使用 team city 部署到一个位置,然后有一个自定义应用程序来部署到每个站点......我认为无论我做什么都会很有趣!
    • @Paul 我确实感受到了你的痛苦伴侣。我不想这么说,但这听起来像是从一开始就做出错误决定的结果。我仍然强烈建议您查看多租户,它不一定涉及完全重写,仅解决您处理与客户端上下文无关的客户端数据的位置。拥有每个客户端的缓存策略,它不是一个显示停止器,您可以在运行时使用 IoC/DI 模式根据当前上下文简单地加载特定的缓存组件......为此目的,有一些第 3 种工具,例如 Windsor城堡国际奥委会
    • 感谢您的意见 Leo,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多