繁体   English   中英

将dll注册到GAC或从ASP.NET中的bin文件夹引用它们会更好

[英]is it better to register dll's to GAC or reference them from bin folder in ASP.NET

如果答案是“它取决于”,你能提供一个简短的解释原因吗?

冒着贬值的风险,我会面对流行的观点而飞,并说GAC应该只作为最后的手段使用(我能想到的一个例子就是当你使用biztalk而不给你的时候)每个应用程序的bin文件夹)。

GAC最初似乎是在多个应用程序之间共享文件的好方法。 但是当您想要更新其中一个应用程序时会发生什么? 您要么必须冒险破坏服务器上使用它的所有应用程序,要么最终在GAC中使用多个版本。 GAC中的多个版本并不比包含在各个应用程序中的不同版本更好,实际上我会说它更令人困惑。

当您运行Web场时,每个服务器最终只有一个GAC,因此如果使用GAC,则将应用程序部署到添加到服务器场的新服务器会变得更加复杂。 您还失去了在服务器上使用程序集的单个副本的优势。

但是现在忘记了多个服务器的问题,假设你有一个包含10个应用程序的服务器都在使用相同的程序集。 您确定此程序集的问题仅影响其中两个应用程序。 你是否更新了所有10个程序集,这意味着你必须测试所有10个,你可能会破坏其他几个工作的应用程序? 或者您只是为损坏的应用程序更新程序集,并在下一个开发周期中为其他应用程序更新它? 如果您更喜欢后一种方法,那么我会说应该避免使用GAC。

GAC旨在包含跨多个应用程序共享的程序集 如果是这种情况,您应该强化程序集并将其注册到GAC。
如果没有,请将程序集保存为专用程序集,并将其作为项目/ dll引用引用。

PS:没有真正从你的问题的bin文件夹中获取引用 - 这个bin文件夹是什么?

值得记住的是,默认情况下,.Net将从本地app文件夹中加载一个来自GAC的匹配程序集。

此外,如果程序集是强名称签名,那么从GAC加载它会更高效。 这是因为为了首先进入GAC,检查了强名称,这意味着您的应用程序在加载时不需要再次执行此操作。 如果从本地文件夹加载一个强大的命名程序集,那么每次都会检查它的强名称(不会花费很长时间,但它会加起来)。 您只能将强名称签名程序集安装到GAC中,并且您需要具有管理员权限才能执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM