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