我的公司有大量的客户,我们目前能够在每台服务器上处理有限数量的客户。但是,每个客户端都使用相同的核心 Web 应用程序。目前,某些内容存储在每个站点的本地,因此我们不能让它们使用相同的站点/应用程序池;虽然我们确实有一个多租户转换项目。
我们对所有程序集进行了强烈签名,我认为看看我们是否可以让它们在 ASP.NET 中加载域中立是一个有趣的想法。这样做的好处是显着降低我们的内存成本,这是我们目前最高的成本/限制因素之一。此外,我们似乎能够简化当前 [编译] IO/CPU 绑定的部署过程,并且经常花费我们大约 6 个小时。
此任务意味着我想将程序集从加载应用程序池的应用程序域移动到共享域。
我对域中性加载要求的理解是:
- 程序集必须经过严格签名并在 GAC 中。
- 绑定闭包中的依赖项必须在 GAC 中 [并经过强签名]。
我试图让它工作,但我不能让它为一个小的示例应用程序工作。我首先尝试将 Newstonsoft.Json 放入 GAC,令我兴奋的是,它在回收后翻转到了共享域。但是,即使在对所有其他人进行 GAC 之后,我也无法让其他任何人切换到共享域:
我的目标是让我的主应用程序 DLL 被加载域中立。我如何调试/继续找出为什么剩余的程序集没有被加载为域中立?
此外,我对 NGEN 代码页共享与共享域加载程序集的关联或对比感到有些困惑。