【发布时间】:2011-05-18 20:44:21
【问题描述】:
我们计划迁移一个使用企业库 4.1 的遗留应用程序,该应用程序在 .Net 4.0 Web 应用程序中使用 .Net 3.5。
我们想知道这会导致任何性能问题吗? .net 3.5 代码会以不同的方式运行吗 应用程序池?
【问题讨论】:
标签: .net performance web-applications enterprise-library
我们计划迁移一个使用企业库 4.1 的遗留应用程序,该应用程序在 .Net 4.0 Web 应用程序中使用 .Net 3.5。
我们想知道这会导致任何性能问题吗? .net 3.5 代码会以不同的方式运行吗 应用程序池?
【问题讨论】:
标签: .net performance web-applications enterprise-library
我终于找到了答案。我之前提到我的团队发现的性能问题是由于其他原因造成的。不在 .NET 4.0 应用程序域上加载 .NET 3.5。
阅读这篇文章: http://msdn.microsoft.com/en-us/magazine/ee819091.aspx
In-Proc SxS 不能解决 面临的兼容性问题 图书馆开发商。任何库 直接加载 应用程序——无论是通过直接 引用或 Assembly.Load--will 继续直接加载到 运行时和 AppDomain 的 应用程序加载它。这表示 如果重新编译应用程序 针对 .NET Framework 4 运行 运行时并且仍然有依赖 针对 .NET 2.0 构建的程序集, 这些家属将加载到 .NET 4 运行时也是如此。因此,我们仍然 建议测试您的库 针对所有版本的 您希望支持的框架。这是 我们继续的原因之一 保持我们的高水平落后 兼容性。
因此,将 .NET 3.5 程序集直接加载到 .NET 4.0 应用程序中没有问题,而无需将它们重新编译到 .NET 4.0 中。
【讨论】:
4.0 是 3.5 的超集,所以应该没有挑战。你们所有的 3.5 代码都将像使用 VS 2008 构建时一样工作。您需要先遵循这一点
有一个MSDN链接What's New in the .NET Framework 4
Migration Guide to the .NET Framework 4
.NET Framework 4 RTM Application Compatibility Walkthrough
如果您进行 Google 搜索,您会发现许多标题为“2010 年的新变化”之类的文章。你不会找到诸如“有什么不同”之类的东西
除了这个来自 MSDN 的小花絮:
.NET Framework 4 高度 与应用程序兼容 使用早期的 .NET Framework 构建 版本,除了一些更改 旨在提高安全性, 标准合规性、正确性、 可靠性和性能。
.NET Framework 4 没有 自动使用它的版本 要运行的公共语言运行时 构建的应用程序 .NET 的早期版本 框架。运行较旧的应用程序 使用 .NET Framework 4,您必须 编译你的应用程序 目标 .NET Framework 版本 在您的属性中指定 Visual Studio 中的项目,或者您可以 指定支持的运行时 应用程序中的元素 配置文件。
【讨论】:
您质疑是否会有性能问题通常无法回答,因为这取决于您的代码在做什么。您很可能不会看到任何问题。
尽管 Microsoft 为保持与先前版本的运行时向后兼容做了很多工作,但您应该知道有几个重大更改。您将在此处的 MSDN 中找到它们的文档:
.NET Framework 4 Migration Issues(包括关于 ASP.NET、.NET Core、Data/ADO.NET、WCF、WPF 和 XML 的文档)
Microsoft 还提供了进一步的迁移计划任务的指南和链接:
因为您应该为任何问题做好准备,所以不要忘记安排一些时间进行额外的测试。
【讨论】:
计划进行自己的性能测试。如需指导,请参阅模式和实践中的this。
我不知道您正在使用哪些块,但您应该考虑迁移到 EntLib v5.0,因为日志记录应用程序块的性能得到了重大改进,并且对底层基础架构进行了重构/清理。查看Migration Guide for Enterprise Library 5.0。
【讨论】:
嗯,它不应该有任何性能问题。但是,一个主要区别是 .Net 4.0 带有不同的运行时,这可能会引入一些差异。
【讨论】:
.NET 3.5 DLL 加载在与 .NET 4 不同的应用程序域中。因此,从 .NET 4 对 .NET 3.5 DLL 的所有调用都将跨应用程序域进行。这意味着相当多的开销。除非您可以在 .net 4 中重建 3.5 源代码,否则我不建议您使用它。我的一个团队尝试过,然后他们发现性能很差,所以他们回到了 .NET 3.5。在我们获得所有 .net 3.5 DLL 的源代码或供应商发布 .net 4 DLL 之前,我们不会将我们的代码库升级到 net 4。
【讨论】: