ASP.NET学习之二 性能考虑

来源:互联网 发布:burberry围巾 知乎 编辑:程序博客网 时间:2024/04/30 18:50

性能要求,考虑以下几个方面:

o   如何释放不需要的资源。

o   如何保证链接到数据库的方式最佳。

o   如何使用存储过程提高数据访问性能。

o   如何使用泛型提高集合性能。

o   如何最小化会话状态保证ASP.NET的处理最少。

o   如何调整视图状态减少向web服务器发送和接收的数据量。

1.       对象释放,比如系统文件、图像或数据库,通常在不需要时立即释放。

1)      使用try/catch释放。

Try

{

        //create resource

}

Catch()

{

//Handle exception
}

                       Finally

     {

             //dispose of resource

      }

2)      使用Using释放

Using(resource)

{

//code that uses the resource
}

2.       数据库链接,原则:打开连接尽量晚,获取数据,然后尽量关闭连接,释放连接。

Using(sqlconnection conn = new SqlConnection(“….”))

{

        //code that use the connection

}

3.        储存过程。建立储存计划,更好的使用。

Eg: <aspSqldatasource id= “SqlDataSource1” runat=”server”

            ConnectionString=”<%$ConnectionStrings:WroxUnited%>”

            selectCommand=”select *from product”</asp:SqlDataSource>

转变为使用存储过程,代码如下:

<aspSqldatasource id= “SqlDataSource1” runat=”server”

            ConnectionString=”<%$ConnectionStrings:WroxUnited%>”

            selectCommand=”usp_Products”            

            SelectCommandType=”StoredProcedure</asp:SqlDataSource>

4.       强类型集合,泛型可以提高代码的可读性,减少错误,改进性能。采用泛型避免了数据的装箱和拆箱。

Using System.Collections.Generic;

List<string>myList = new List<string>;

myList.Add(“abc”);

myList.Add(“def”);

string s = myList[0];

5.       会话回占用处理器和内存资源,如果用户不使用会话状态,可以禁用会话。

<sessionSate mode =”Off”/>

如果需要会话状态,但所有页面不更新它。

<pages  enableSessionState=”readOnly”/>

<%@ page enableSessionState=”readOnly”%>

6.       视图状态。可以在页面上禁用可以减少数据量。

<%@page EnableViewState=”false”%>

在页面和代码方面提高性能

o   数据绑定和回发。

o   对象的引用。

o   String builder和字符串连接。

o   选择合适的集合。

arrayList在添加项时动态改变大小,适合储存经常要更改的数据。(插入,删除)

HashTable是数据对的集合,适合于不经常更改的数据。

ListDictionary适合存储少量数据,通常小于10项。

NameValueCollection是键和值的有效集合,最适合已排序的数据。

Queue提供先进先出的数据。

SortedList按序储存键和值,这会减慢数据添加。

Stack提供先进后出

StringCollection强类型的ArrayList用于按任意顺序储存字符串和常常更改的字符串。

StringDictionary强类型的HashTable,用于存储字符串且不经常更新。