知识大全 优化ASP.NET应用程序性能研究与探讨

Posted

篇首语:只要学不死,就往死里学。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 优化ASP.NET应用程序性能研究与探讨相关的知识,希望对你有一定的参考价值。

优化ASP.NET应用程序性能研究与探讨  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  网站的性能对于ASP NET程序开发人员来说非常重要 一个优秀的网站虽然有美观的页面设计 完善的服务功能 但是打开网页时有长时间的延迟 用户最终将会无法忍受 尤其对于大型的电子商务网站而言 每秒钟有数万用户同时访问 没有良好的网站性能 根本无法满足庞大的需求     ASP NET作为全新一代的动态网页生成系统 它在平台性能方面与原有的ASP相比已有了一个本质的提高 但要在此基础上开发出专业水准的 符合生产标准的 受用户欢迎的web应用程序 还需要开发人员从编程的角度在页面 数据访问和字符串处理等各方面进行优化处理 以提高网站的总体性能     本文将主要探讨在ASP NET中与此相关的几种进行性能优化的方法及注意问题      页面性能优化   会话状态的恰当选择    HTTP协议是一种无状态的通信协议 无法记录和识别来自不同客户端的请求 但在实际应用中系统却要维护来自客户端的不同请求之间的会话状态信息 ASP NET通过将会话状态信息存储在进程 状态服务器或SQL Server数据库中来解决这个问题     将会话状态信息保存在WEB服务器的内存中具有最佳的性能 速度很快 但是却缺乏会话状态信息跨越多个服务器的能力 若要在多个WEB服务器之间维护会话信息 可以使用状态服务器进行存储 这种方式由于可以将应用程序部署到多台服务器上而提高了系统的伸缩性和可靠性 但是以降低性能为代价 对于极其重要的会话信息 需要使用SQL Server存储方式 从而避免丢失重要的会话信息 但由此产生的工作负载比前两者大得多     若不考虑状态信息的保留和多个服务器共享 应尽量选择保存在服务器的进程中 从而得到最佳的性能     会话状态信息的存储方式选择通过nfig文件     <sessionState  mode= InProc/StateServer/SqlServer //存储方式由此行选择  stateConnectionString= tcpip= :   ……  timeout= />     服务器控件的优化选择     减少不必要的服务器控件    服务器控件带来的方便和功能是控件所不能比拟的 但是每一个服务器控件都需要在服务器端创建相应的对象 是以牺牲服务器端的资源为代价的 过多的使用服务器控件会极大的影响程序性能     很多情况下 简单地使用标记或数据绑定即能够实现所需功能 比如<asp:Label>控件 若使用它来显示静态信息 则完全可用简单的标记来实现 如果控件达不到所要实现的功能 而且在脚本语言如javascript vbscript也不能实现的情况下 才考虑选择服务器控件      禁用不必要的状态视图    服务器控件的状态视图属性能够自动的在页面往返过程中维护服务器控件的状态 减少开发者的工作量 但是需要占用大量的服务器内存资源 因此 在不需要服务器控件状态视图的情况下 应将其EnableViewState属性设置为false 如常用的<asp:Lable>和<asp:Button>控件      Page IsPostBack的运用    Page IsPostBack用于记录页面是否从客户端返回 若为false表示初次运行 否则表示从客户端再次返回该页面 Page IsPostBack的合理应用可以避免页面在往返过程中的一些不必要的操作 在Page_Load函数及一些只需要初始化一次的事件函数中均可以使用该属性来提高应用程序性能     void Page_Load(Object o EventArgs e)    if(! Page IsPostBack)    conn=new SqlConnection( server=localhost;uid=sa;pwd=;database=data );  String sql= select * from student ;  cmd Fill(ds stu );  mydataGrid DataBind();        以上代码将保证只有在首次访问该页面时对数据库进行读取并绑定      合理使用DataGrid控件    DataGrid控件带有最强大的数据显示功能 还内置了对数据的修改 删除 添加 分页等很多功能 如果只需简单的显示数据 DataGrid并非最佳选择 DataGrid控件的分页功能 数据的存储方式(存储在viewstate中)等 虽然让程序开发者使用方便快捷 但由此产生的性能开销不容小视     DataList控件比DataGrid功能少了很多 但自定义性强了很多 特有的多行数据显示还是比较方便的 DataGrid能实现的功能 它基本能实现     Repeater控件功能最少 但自定义性非常强 由于减少了很多功能 对服务器的性能带来消耗最小     因此 在只需简单显示数据列表时 选择Repeater或DataList控件同样可以达到目的 而且减轻了性能上的开销      数据库访问性能优化   数据库的连接和关闭    访问数据库资源需要创建连接 打开连接和关闭连接几个操作 这些过程需要多次与数据库交换信息以通过身份验证 比较耗费服务器资源 ASP NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响 系统将用户的数据库连接放在连接池中 需要时取出 关闭时收回连接 等待下一次的连接请求     连接池的大小是有限的 如果在连接池达到最大限度后仍要求创建连接 必然大大影响性能 因此 在建立数据库连接后只有在真正需要操作时才打开连接 使用完毕后马上关闭 从而尽量减少数据库连接打开的时间 避免出现超出连接限制的情况      使用存储过程    存储过程是存储在服务器上的一组预编译的SQL语句 类似于DOS系统中的批处理文件 存储过程具有对数据库立即访问的功能 信息处理极为迅速 使用存储过程可以避免对命令的多次编译 在执行一次后其执行规划就驻留在高速缓存中 以后需要时只需直接调用缓存中的二进制代码即可     另外 存储过程在服务器端运行 独立于ASP NET程序 便于修改 最重要的是它可以减少数据库操作语句在网络中的传输      优化查询语句    ASP NET中ADO连接消耗的资源相当大 SQL语句运行的时间越长 占用系统资源的时间也越长 因此 尽量使用优化过的SQL语句以减少执行时间 比如 不在查询语句中包含子查询语句 充分利用索引等      字符串操作性能优化   使用值类型的ToString方法    在连接字符串时 经常使用 + 号直接将数字添加到字符串中 这种方法虽然简单 也可以得到正确结果 但是由于涉及到不同的数据类型 数字需要通过装箱操作转化为引用类型才可以添加到字符串中 但是装箱操作对性能影响较大 因为在进行这类处理时 将在托管堆中分配一个新的对象 原有的值复制到新创建的对象中     使用值类型的ToString方法可以避免装箱操作 从而提高应用程序性能      运用StringBuilder类    String类对象是不可改变的 对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象 其方法ToString对性能的提高并非很显著     在处理字符串时 最好使用StringBuilder类 其 NET 命名空间是System Text 该类并非创建新的对象 而是通过Append Remove Insert等方法直接对字符串进行操作 通过ToString方法返回操作结果     其定义及操作语句如下所示     int num;  System Text StringBuilder str=new System Text StringBuilder(); //创建字符串  str Append(num ToString()); //添加数值num  Response Write(str ToString); //显示操作结果    ASP NET应用程序性能测试    在对ASP NET应用程序进行性能测试之前 应确保应用程序没有错误 而且功能正确 具体的性能测试可以采用以下工具进行   Web Application Strees Tool (WAS)是Microsoft发布的一个免费测试工具 可以从上下载 它可以模拟成百上千个用户同时对web应用程序进行访问请求 在服务器上形成流量负载 从而达到测试的目的 可以生成平均TTFB 平均TTLB等性能汇总报告     Application Center Test (ACT) 是一个测试工具 附带于Visual Studio NET的企业版中 是Microsoft正式支持的web应用程序测试工具 它能够直观地生成图表结果 功能比WAS多 但不具备多个客户机同时测试的能力     服务器操作系统 管理工具 中的 性能 计数器 可以对服务器进行监测以了解应用程序性能      结论  对于网站开发人员来说 在编写ASP NET应用程序时注意性能问题 养成良好的习惯 提高应用程序性能 至少可以推迟必需的硬件升级 降低网站的成本 cha138/Article/program/net/201311/13499

相关参考

知识大全 asp.net编程程序优化要注意的问题

  一SqlDataRead和Dataset的选择  Sqldataread优点读取数据非常快如果对返回的数据不需做大量处理的情况下建议使用SqlDataReader其性能要比datset好很多缺点直

知识大全 .Net课堂:ASP.NET常用的优化性能方法

.Net课堂:ASP.NET常用的优化性能方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数

知识大全 ASP.NET如何进行性能优化问题

ASP.NET如何进行性能优化问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一SqlDat

知识大全 ASP.NET如何进行性能优化问题[2]

ASP.NET如何进行性能优化问题[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  二查询语

知识大全 ASP.NET如何进行性能优化问题[3]

ASP.NET如何进行性能优化问题[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  四控件的

知识大全 ASP.NET如何进行性能优化问题[1]

ASP.NET如何进行性能优化问题[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一Sql

知识大全 ASP.NET26个常用性能优化方

ASP.NET26个常用性能优化方  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  访问数据库资源

知识大全 ASP.NET十个有效性能优化的方法

ASP.NET十个有效性能优化的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库访问性

知识大全 总结的ASP.NET26个常用性能优化方法

总结的ASP.NET26个常用性能优化方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库

知识大全 10个常用方法有效优化ASP.NET的性能

10个常用方法有效优化ASP.NET的性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数据库访问