如果在某页面中不进行回发,或每次请求页面时总是重新产生控件,那么你应该在页面级禁用可视状态。
结论
我已经向你提供了一些我认为有用的编写高性能 ASP.NET 应用程序的技巧。正如我在本文开头时所讲的那样,这是一些很初级的指南,而不是 ASP.NET 性能方面的最终定论。(更多有关改进 ASP.NET 应用程序性能方面的信息请参见:Improving ASP.NET Performance.)只有通过自己的经验方能找到最佳途径来解决具体的性能问题。不管怎样,在你解决问题的过程中,这些技巧多少会对你有所裨益的。在软件开发过程中,每一个应用都有其独特的一面,没有什么东西是绝对的。
——常见的性能神话
最常见的神话之一是 C# 代码比 Visual Basic 代码快。这样的说法是站不住脚的,虽然在 Visual Basic 中存在一些 C# 没有的性能阻碍行为,比如显式地声明类型。但是如果遵循良好的编程实践,没有理由说明 Visual Basic 和 C# 代码不能以几乎同样的性能执行。简单说来,相同的代码产生相同的结果。
另一个神话是后台代码比内联代码快,这是绝对不成立的。性能与你的 ASP.NET 应用程序代码在哪没有什么关系,无论是后台代码文件还是内联在 ASP.NET 页面。有时我更喜欢使用内联代码,因为变更不会产生后台代码那样的更新成本。例如,使用后台代码必须更新整个后台 DLL,那时一个可能引起惊慌的主张。
第三个神话是组件比页面要快。这在经典的 ASP 中是存在的,因为编译的 COM 服务器要比 VBScript 快得多。但是对于页面和组件都是类的 ASP.NET 来说则不然。不论你的代码是以后台代码形式内联在页面,还是分离的组件,所产生的性能差别不大。只是这种组织形式能更好地从逻辑上对功能进行分组,在性能上没有差别。
我想澄清的最后一个神话是用 Web 服务来实现两个应用程序之间各个功能。Web 服务应该被用于连接异构系统或提供系统功能及行为的远程访问。不应该将它用于两个相同系统的内部连接。虽然使用起来很容易,但有很多其它更好的可选方法。最糟的事情莫过于将 Web 服务用于相同服务器上 ASP 和 ASP.NET 应用程序之间的通讯,我已经不厌其烦地对之进行了说明。
作者简介
Rob Howard 是 Telligent Systems 创建者,擅长于高性能 Web 应用以及知识管理和协作系统。此前 Rob 受雇于微软,协助设计了 ASP.NET 1.0,1.1 和 2.0。你可以通过 rhoward@telligentsystems.com 与 Rob 联系。