Csharp/C#教程:.NET应用程序是否有最大数量的程序集?分享


.NET应用程序是否有最大数量的程序集?

相当多的应用程序支持插件。

拥有大量插件有什么缺点吗? 是否存在一个可能性能下降的最佳点?

您在应用中看到的最大assembly数量是多少?

我曾经在一个后端框架上工作,该框架具有超过2500个端点的汇编依赖树。 这真令人作呕,花了两个小时才建成。

因此,虽然你可以装载吨和吨,准备让人们指着你扔东西。

我没有具体的信息,但我确信在看到任何退化之前你可以拥有比你需要的更多的组件。

话虽如此,它对诸如组件的“质量”,系统资源等其他几个因素也是主观的。

不,没有甜蜜点。 更多代码需要更多时间来加载和JIT编译。 但是,当发生这种情况时,它不一定是可预测的,它是按需发生的。 max仅受32位计算机上可用虚拟内存空间的限制,x64计算机上的页面文件大小。

我不知道组件数量有任何具体限制。 但由于许多组件而面临性能问题,我可以谈一谈。

由于CLR在加载程序集时执行的各种一致性检查(例如强名称validation)以及需要重新定位的可能性,因此很可能拥有大量程序集会对性能产生重大影响。

但是,如果您的应用程序不需要预先加载所有组件,将它们分成多个组件实际上可能有助于延迟在较长时间内加载组件的成本,而不是预先加载一个大型组件。

如果它们成为问题,你可以采取三件事来改善加载时间:

对于1和2他们几乎齐头并进。 由于强大的名称validation,除非程序集在GAC中,否则NGEN性能提升可能无法完全实现。 CLR可以跳过GAC中程序集的此validation。

这是一篇关于应用程序启动时间的优秀MSDN文章。

一个可见的限制是内存使用。 每个模块都将加载到内存中。 因此,对于32位操作系统,您获得1.3GB,而对于64位操作系统,限制太大,无法达到今天的应用程序。

我不认为使用启用插件会导致assembly计数问题。 你会有一个非常杀手级的应用程序(如Firefox)拥有这么多的插件,但事件然后普通用户将不会加载所有可用的插件。

assembly编号问题通常是由项目本身的过多粒度造成的。 我见过单片应用程序,它包含100个Visual Studio项目,因为架构师说’我们需要低耦合’。 尽量遵守Roy Osherove的规则:每个集会都应该有一个物理 (非逻辑)理由存在。 命名空间而不是程序集可以更好地解决逻辑问题。

希望有所帮助。

上述就是C#学习教程:.NET应用程序是否有最大数量的程序集?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1006504.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐