基于ASP.NET应用系统性能研究与探讨

2009-03-02 09:33周建鲲
新媒体研究 2009年2期
关键词:性能优化

[摘要]主要介绍基于ASP.NET应用系统性能优化方面问题的解决方案。用于提高web应用程序的应用效果。

[关键词]ASP.NET应用系统 性能优化

中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120077-01

一个系统的性能是否良好,已经成为系统是否成功的标志之一。下面对基于ASP.NET应用系统性能从四个方面进行探讨。

一、编码级别

编码级别的优化主要注意的问题包括以下几个方面:

1.数据连接。操作数据库最常用的操作就是创建数据库连接,这一系列操作非常耗费资源。在操作过程中应注意:数据库连接尽量晚打开早关闭;尽量使用优化过的SQL语句以减少执行时间,比如,不在查询语句中包含子查询语句、充分利用索引等。

2.数据查询。在数据操作中,数据查询是非常普通的操作。提高数据查询操作的性能将对提高应用程序性能有很大的帮助。在数据查询中应注意的事项如下:

(1)Select记录的时候,只返回需要的字段,不要把所有字段都返回。(2)一般情况下,读取大量数据,对返回数据不做大量处理用SqlDataReader,对返回数据大量处理用dataset比较合适。(3)执行多条SQL语句进行查询时,尽量使用存储过程来实现,避免多次向服务器传送数据。(4)后台数据库采用SQL Server服务器时,多使用带有参数的SQL命令,SQL Server只对命令编译一次,对于不同的参数重复使用,节省了服务器应用效能。

3.字符串操作。字符串操作是应用程序中经常使用的功能,如果能够提高字符串操作的性能,就可以实现提高Web应用程序的性能。

(1)进行字符串连接时,要直接使用“+”将数字添加到字符串中。(2)大量拼接字符串最好使用StringBuilder来完成操作,耗时会更短。(3)使用值类型的ToString方法可以避免装箱拆箱操作,避免系统消耗,极大提高性能。(4)如果需要把字符串向客户端输出,选择直接输出会比拼接后再输出效果好。

4.释放资源。对于实现了Dispose模式的类型都可以使用using来确保它能被释放。对于数据库连接、文件连接和网络连接等非常重要的资源,我们都可以使用using来确保资源能释放。

5.异常处理。应通过预先判断来避免异常的发生,而不是明知道异常可能会发生利用捕获异常来屏蔽可能的错误。

6.使用泛型集合来代替普通集合能够避免装箱拆箱操作,提高性能。

二、页面级别

对于Web系统来说,页面是很重要的一个部分,客户端和服务器端就是通过静态的HTML、JS等代码进行交互的。

1.对于需要经常更新的数据,可以使用页面缓存在一段时间内缓存页面。

2.在使用服务器控件时要避免使用服务器控件视图状态来提高性能。虽然视图状态能够自动在页面往返过程中维护服务器控件的状态,减少开发者的工作量,但却使性能降低。因此,在不需要维护控件状态的情况下,应该将服务器控件的EnableViewState属性设置为false。

3.应用中,我们可以使用DataList控件或Repeater控件来替代DataGrid控件来创建类似Excel的列表,可以减少性能上的开销。

4.尽可能把几个图片合成一个图片来减少向Web服务器请求的次数。

5.不要把整个页面放到一个大表格中,使用表格来定义整个页面。如果这样做的话,那么页面只有等到整个页面全部加载完毕后才会呈现。

6.尽量把CSS分离到单独的文件中,而不要在每个页面的顶部都生成一段CSS代码,CSS文件能被客户端缓存,使用独立的CSS文件能够减少页面的数据量。

7.可以通过Page.IsPostBack判断是否首次加载页面来避免重复执行一些不必要的代码。

三、架构级别

系统架构对整个系统性能的影响较大,对分布式系统的性能影响尤其大。

1.数据缓存。ASP.NET提供了一些简单的机制,它们会在不需要为每个页请求动态计算页输出或数据时缓存这些页输出或数据。另外,通过设计要进行缓存的页和数据请求(特别是在站点中预期将有较大通讯量的区域),可以优化这些页的性能。

(1)不要缓存太多项。缓存每个项均有开销,特别是在内存使用方面。(2)不要缓存容易重新计算和很少使用的项。(3)给缓存的项分配的有效期不要太短。很快到期的项会导致缓存中不必要的周转,并且经常导致更多的代码清除和垃圾回收工作。

2.分布式程序。对于分布式程序来说,各个组件之间的通信决定了整个系统的性能。因此需要通过改善通信方式来尽量减少在网络上传递的数据的量。(1)跨网段式使用Web服务通信。(2)同一个子网内使用REMOTING TCP通道进行通信。(3)同一个机器内使用REMOTING IPC通道进行通信。

3.分布静态资源。对于大型系统,我们可以单独把系统内的所有静态资源分布到独立的服务器上,然后把对这些资源的URL连接通过直接指向这个服务器。

四、配置与部署

IIS(Internet信息服务)的设置决定了整个系统的性能好坏。

1.在部署生产应用程序或进行任何性能测量之前,一定记住禁用调试模式。如果启用了调试模式,应用程序的性能可能受到非常大的影响。所以发布前要把Web.config中compilation节点的debug设置为false来禁用调试。

2.必要时调整应用程序每个辅助进程的线程数。进程中有太多线程往往会降低服务器的速度,因为额外的上下文交换导致操作系统将CPU周期花在维护线程而不是处理请求上。

3.不要将日志文件与Web页存储在同一个硬盘上。这将阻止硬盘日志记录线程干预检索Web页的线程。

4.在IIS中配置HTTP压缩可以减少页面加载时间。

五、结束语

ASP.NET作为全新一代的动态网页生成系统,它在平台性能方面与原有的ASP相比已有了一个本质的提高。但要在此基础上开发出专业水准的、符合生产标准的、受用户欢迎的web应用程序,还需要开发人员在编码、页面、架构和配置部署等各方面进行优化处理,以提高应用系统的总体性能。

参考文献:

[1]冯方方,ASP.NET基础教程[M].北京:清华大学出版社,2005.

[2]赛奎春、王国辉,ASP工程应用与项目实践[M].北京:机械工业出版社,2005.

[3]Dino Esposito,ASP.NET 2.0技术内幕[M].北京:清华大学出版社,2006.

作者简介:

周建鲲,男,山东省青岛市,中国海洋大学信息科学与工程学院研究生,研究方向:ASP.NET应用系统开发。

猜你喜欢
性能优化
SQL Server数据库性能优化的几点分析
Web应用的前端性能优化
WEB网站缓存性能优化
Oracle数据库性能调整与优化分析