ASP.NET中的错误处理和程序优化

错误的类型
 A。分析程序错误:
  1。语法错误:语法有问题
  2。逻辑错误:除0错误、类型不匹配、不正确输出、使用不正确的对象、处理无效的数据
 B。编译错误:
  使用了不能被语言编译器识别,但ASP.NET能识别的关键字或语句时发生的借误。(生成成功但编译出错)
 C。运行时错误(如if...else...考虑不全)
 D。配置错误:Web.Config文件出错

错误的处理
 A。使用验证控件
 B。编程处理:
  1。校验语句(使用checked括住要检查的语句)
  2。try...catch...finally
  3。Page_Error
  4。Application_Error
 C。在应用程序配置文件中,为应用程序执行的声明性错误处理(customErrors节点,设定报错页)

提高数据访问性能

 bool CheckIDExisit(string strFileID,string strID)  //加载XML后判断节点是否存在
 可以改成:
 bool CheckIDExisitByXml(string strXml,string strID) //利用已读出的XML字符串直接查找,不用每次都加载XML文件
 A。逻辑设计建议采用3层。
 B。使用最佳的Data Provider(SqlClient,OracleClient,OleDb,Odbc;在访问MSDE/SQL时始终使用SqlClient;在访问Oracle时绐终使用OracleClient)。
 C。DataReader和DataSet。只读时用DataReader(通常比DataSet快16%)。
 D。ExcuteNonQuery和ExecuteScalar。只更新数据时用ExecuteNonQuery,单个值查询用ExecuteScalar。
 E。数据绑定。把页面中的<%# DataBinder.Eval(Container.DataItem,"ColumnName" %>换成<@% ((DataRowView)Container.DataItem)["ColumnName"] %>
 F。连接池。及时关闭,完成后显式地关闭连接
 G。使用存储过程。有助防止SQL注入攻击;消除应用与数据库反复调用的成本(事务处理)
 
服务器控件
 A。注意ViewState和控件数量。
 B。如果不使用PostBack功能,请在页面级屏蔽ViewState。
 C。使用<%@ Page Trace="true" %>跟踪ViewState的大小。

缓存技术
 经常被访问并变化不大的数据(不要缓存新闻、购物车等;不要缓存个人信息,以防止别人盗用)。
 A。输出缓存:配置页的OutPutCache属性
 B。数据缓存:
  Cache["userName"] = "Terry";
  Response.Write(Cache["userName"]); //不能用下标访问,如Cache[0]
  Cache.Remove("userName");
 C。缓存变量的添加
  Cache.Add(...)和Cache.Insert(...)功能相同,但Insert更灵活。
 
提高性能的实用技巧
 A。不要使用不必要的Session
 B。不要使用不必要的Server Control
 C。不要使用不必要的ViewState
 D。不要用Exception控制程序流程
 E。使用存储过程完成数据访问
 F。只读数据不要使用DataSet
 G。关闭ASP.NET的Debug模式
 H。使用ASP.NET Output Cache缓冲数据
 I。尽量使用高效的SQL返回需要的DataSet,不要对DataSet进行二次加工。特别不要对DataSet过行大量删除(不如复制部分数据)
 J。尽量把查询数据库的次数压缩到最少,尽量控制为1-2次。
 K。注意优化数据库查询操作(查询条件;只查询所需要的字段)
 L。数据库连接仅在需要时打开,一旦操作完成要显式关闭
 M。在关闭连接时记得删除删除临时对象,并确保关闭任何用户定义事务
 N。用DataReader代替DataSet。
 O。注意共享那些经过复杂处理或漫长查询才能得到的数据
 P。在页面跳转时记得终止当前页面的处理
 Q。有大量连接的字符串操作时使用StringBuilder

posted @ 2009-08-26 18:34  DaCHun  阅读(253)  评论(0编辑  收藏  举报