为这个问题的冗长性质道歉。TL;DR:跳到最后一段。
一段时间以来,我一直在为此摸不着头脑,想不出一种方法来测试我的理论,即同一 DLL 的多个副本会引入性能开销。我们的其中一台服务器有 20-30 件内部分析软件,这些软件引用处理业务逻辑和对我们中央数据库的数据访问的单片内核。每个应用程序的/bin目录中存储了这个约 5MB DLL 的本地副本,大概*在每个应用程序第一次运行时被加载到内存中。现在可能没什么大不了的,但是当我们以这种方式运行 100 多个(计划中的)代理时,我开始听到警钟。
我已经在线阅读了几篇文章(例如: http: //www.codeproject.com/Articles/4352/Demystifying-the-NET-Global-Assembly-Cache),其中讨论了在.NET GAC,但没有涉及性能主题,这是唯一能引起高层管理人员兴趣的可靠主题。
我想知道的是,当项目中引用全局程序集时,它是否与其他消费者应用程序共享相同的库实例,或者应用程序是否只是在运行时将它需要的所有内容加载到自己的单独区域中?