减少ASP.NET运行时的工作

      在底层,.NET和ASP.NET基础结构为了让开发的工作更轻松,做了大量的基础工作。虽然这个体系结构作为一个黑盒很不错,但有时了解一切如故无缝地运行的实现细节也是很有益的,可以有效地使用运行时获得性能上的优势。

      1、视图状态的优化

      可以从不同的粒度控制网站的视图状态:在web.config设置EnableViewState为false禁用所有页面的ViewState,Page的EnableViewState属性继承web.config的设置,如果要在单独的页面可以设置EnableViewState。另外可以单独设置控件的EnableViewState。

     web.config:  <pages enableViewState="false"/>
     page:<%@ Page Language="C#" CodeBehind="Default.aspx.cs" Inherits="Default" EnableViewState="false"%>
     控件:<asp:Label ID="lbInfo" runat="server" EnableViewState="false" />

     2、尽量减少服务器控件的数量

     页面上服务器端的控件应该保持最低的数量上,服务器端的控件不仅生成视图状态,它们也需要额外的运行时处理来绑定到成员变量,呈现,然后卸载。能不用服务器控件的尽量不用。

     3、会话状态的考虑

      在创建一个Web应用程序是一个重大的问题就是页面请求直接维护状态,因为http请求时无状态的。例如,知道客户在购物车中放置了什么产品。有很多机制可以配合使用以取得状态的持久性:cookies,视图状态、QueryString,Session。

      ASP.NET提供三种不同的会话状态提供者(In-Proc、状态服务器、数据库),极大地提高了会话功能。进程间会话状态提供者是这三者中最快的,状态服务器虽然不如进程间的快,但可以在多个服务器器直接共享会话状态。数据库存储时最健壮的但最慢。

      无论使用哪种会话状态提供者,都不要滥用会话功能,存储大量的数据或对象,“大量”的定义将取决于需要支持的用户的数量和应用程序的硬件。如果在有些页面不使用Session可以禁用页面的Session,设置EnableSessionState为False,也可以稍稍减少页面出来的开销。

     4、把异常减到最少

     异常是通知程序执行期间发生的错误的一个非常有用的机制。和返回代码不同,程序不能忽略异常——它们将会改变程序的执行流。在性能和内存都很关键的应用程序中经常避开以免额外的开销。在.NET运行时的托管环境中,用try和catch设置异常处理代码只对性能有可以忽略不计的影响,但如果有抛出异常性能的损失就比较大。

     5、使用早期绑定

     前期绑定是在编译的时候就确定了要绑定的数据,前期绑定如果失败,会在编译时报编译错误,可以避免在运行时编译错误。而后期绑定是在运行的时候才填充数据,后期绑定失败只有在运行时的时候才发生。

标签: ASP.NET
posted @ 2010-05-05 01:34 Asharp 阅读(2699) 评论(11) 编辑 收藏

 回复 引用 查看   
#1楼2010-05-05 09:15 | planet-es      
纯属扯蛋

 回复 引用 查看   
#2楼2010-05-05 09:38 | 深邃的背影      
从哪Copy的啊?
 回复 引用 查看   
#3楼2010-05-05 09:39 | 老Q      
除非是门户,否则很少需要做这样的优化
用dotnet做门户的还不多吧

企业级的开发效率是关键,要的是可维护性,运行效率兼顾考虑即可。

 回复 引用 查看   
#4楼2010-05-05 09:44 | 彦斌      
5、使用早期绑定
这个有点不明白。可否再提示一二? 谢谢!

 回复 引用 查看   
#5楼2010-05-05 09:55 | 贺臣      
使用早期绑定

你的这个是不是考虑在反射啊 ?????

 回复 引用 查看   
#6楼2010-05-05 10:50 | ITniao      
php的还是方便些..
 回复 引用 查看   
#7楼2010-05-05 10:53 | 杀死鼻儿      
引用老Q:
除非是门户,否则很少需要做这样的优化
用dotnet做门户的还不多吧

企业级的开发效率是关键,要的是可维护性,运行效率兼顾考虑即可。



怎么说你好呢,QQ哥,用多勒特做门户的不多,你以为都跟你一样,台大毕业的啊。

 回复 引用 查看   
#8楼2010-05-05 10:58 | 老Q      
@杀死鼻儿
饿,台大是什么
我总觉得 高可维护性比性能重要
性能不行就集群,服务器现在值几个钱

程序难以维护就麻烦了,在说了咱是程序员,要的是工作轻松,维护轻松。
ps:我是做企业erp项目,没做过什么web2.0,公共网络之类的应用,哈哈

 回复 引用 查看   
#9楼2010-05-05 12:33 | 玄魂      
@老Q
性能的问题不是集群就能解决的,
很多事不是钱能解决的,变成也一样

 回复 引用 查看   
#10楼2010-05-05 21:44 | johngeng      
WebForm迟早会被淘汰掉。。。。
还是用MVC吧

 回复 引用 查看   
#11楼2010-05-05 23:09 | 不若相忘于江湖      
 抱着很大期望进来。 可看到的却是。。。 唉!