性能要求,考虑以下几个方面:
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: <asp:Sqldatasource id= “SqlDataSource1” runat=”server”
ConnectionString=”<%$ConnectionStrings:WroxUnited%>”
selectCommand=”select *from product”</asp:SqlDataSource>
转变为使用存储过程,代码如下:
<asp:Sqldatasource 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,用于存储字符串且不经常更新。