乐观 发表于 2015-1-16 14:23:01

NET网页编程之ASP.NET功能优化的经常使用办法(一)

来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!1.数据库会见功能优化
数据库的毗连和封闭

会见数据库资本必要创立毗连、翻开毗连和封闭毗连几个操纵。这些历程必要屡次与数据库互换信息以经由过程身份考证,对照泯灭服务器资本。ASP.NET中供应了毗连池(ConnectionPool)改良翻开和封闭数据库对功能的影响。体系将用户的数据库毗连放在毗连池中,必要时掏出,封闭时发出毗连,守候下一次的毗连哀求。

毗连池的巨细是无限的,假如在毗连池到达最年夜限制后仍请求创立毗连,一定年夜年夜影响功能。因而,在创建数据库毗连后只要在真正必要操纵时才翻开毗连,利用终了后即刻封闭,从而只管削减数据库毗连翻开的工夫,制止呈现超越毗连限定的情形。

利用存储历程

存储历程是存储在服务器上的一组预编译的SQL语句,相似于DOS体系中的批处置文件。存储历程具有对数据库当即会见的功效,信息处置极其敏捷。利用存储历程能够制止对命令的屡次编译,在实行一次后其实行计划就驻留在高速缓存中,今后必要时只需间接挪用缓存中的二进制代码便可。

别的,存储历程在服务器端运转,自力于ASP.NET程序,便于修正,最主要的是它能够削减数据库操纵语句在收集中的传输。

2.字符串操纵功能优化
利用值范例的ToString办法

在毗连字符串时,常常利用"+"号间接将数字增加到字符串中。这类办法固然复杂,也能够失掉准确了局,可是因为触及到分歧的数据范例,数字必要经由过程装箱操纵转化为援用范例才能够增加到字符串中。可是装箱操纵对功能影响较年夜,由于在举行这类处置时,将在托管堆平分配一个新的工具,原本的值复制到新创立的工具中。

利用值范例的ToString办法能够制止装箱操纵,从而进步使用程序功能。

使用StringBuilder类

String类工具是不成改动的,关于String工具的从头赋值在实质上是从头创立了一个String工具并将新值付与该工具,其办法ToString对功能的进步并不是很明显。

在处置字符串时,最好利用StringBuilder类,其.NET定名空间是System.Text。该类并不是创立新的工具,而是经由过程Append,Remove,Insert等办法间接对字符串举行操纵,经由过程ToString办法前往操纵了局。

其界说及操纵语句以下所示:
intnum;
System.Text.StringBuilderstr=newSystem.Text.StringBuilder();//创立字符串
tr.Append(num.ToString());//增加数值num
Response.Write(str.ToString);//显现操纵了局


优化查询语句

ASP.NET中ADO毗连损耗的资本相称年夜,SQL语句运转的工夫越长,占用体系资本的工夫也越长。因而,只管利用优化过的SQL语句以削减实行工夫。好比,不在查询语句中包括子查询语句,充实使用索引等。

3.优化Web服务器盘算机和特定使用程序的设置文件以切合您的特定必要
默许情形下,ASP.NET设置被设置成启用最普遍的功效并只管顺应最多见的计划。因而,使用程序开辟职员能够依据使用程序所利用的功效,优化和变动个中的某些设置,以进步使用程序的功能。上面的列表是您应当思索的一些选项。

仅对必要的使用程序启用身份考证。默许情形下,身份考证形式为Windows,或集成NTLM。年夜多半情形下,关于必要身份考证的使用程序,最幸亏Machine.config文件中禁用身份考证,并在Web.config文件中启用身份考证。

依据得当的哀求和呼应编码设置来设置使用程序。ASP.NET默许编码格局为UTF-8。假如您的使用程序为严厉的ASCII,请设置使用程序利用ASCII以取得稍许的功能进步。

思索对使用程序禁用AutoEventWireup。在Machine.config文件中将AutoEventWireup属性设置为false,意味着页面不将办法名与事务举行婚配和将二者挂钩(比方Page_Load)。假如页面开辟职员要利用这些事务,必要在基类中重写这些办法(比方,必要为页面加载事务重写Page.OnLoad,而不是利用Page_Load办法)。假如禁用AutoEventWireup,页面将经由过程将事务毗连留给页面作者而不是主动实行它,取得稍许的功能提拔。

从哀求处置管线中移除不必的模块。默许情形下,服务器盘算机的Machine.config文件中<httpModules>节点的一切功效均保存为激活。依据使用程序所利用的功效,您能够从哀求管线中移除不必的模块以取得稍许的功能提拔。反省每一个模块及其功效,并按您的必要自界说它。

比方,假如您在使用程序中不利用会话形态和输入缓存,则能够从<httpModules>列表中移除它们,以便哀求在不实行其他成心义的处置时,不用实行每一个模块的进进和分开代码。

4.必定要禁用调试形式
在部署临盆使用程序或举行任何功能丈量之前,一直记着禁用调试形式。假如启用了调试形式,使用程序的功能大概遭到十分年夜的影响。

5.关于普遍依附内部资本的使用程序,请思索在多处置器盘算机上启用收集园艺
ASP.NET历程模子匡助启用多处置器盘算机上的可缩放性,将事情分发给多个历程(每一个CPU一个),而且每一个历程都将处置器干系设置为其CPU。此手艺称为收集园艺。假如使用程序利用较慢的数据库服务器或挪用具有内部依附项的COM工具(这里只是说起两种大概性),则为您的使用程序启用收集园艺是无益的。可是,在决意启用收集园艺之前,您应当测试使用程序在收集园中的实行情形。

6.只需大概,就缓存数据和页输入
ASP.NET供应了一些复杂的机制,它们会在不必要为每一个页哀求静态盘算页输入或数据时缓存这些页输入或数据。别的,经由过程计划要举行缓存的页和数据哀求(出格是在站点中预期将有较年夜通信量的地区),能够优化这些页的功能。与.NETFramework的任何Web窗体功效比拟,得当地利用缓存能够更好的进步站点的功能,偶然这类进步是超数目级的。

利用ASP.NET缓存机制有两点必要注重。起首,不要缓存太多项。缓存每一个项均有开支,出格是在内存利用方面。不要缓存简单从头盘算和很少利用的项。其次,给缓存的项分派的无效期不要太短。很快到期的项会招致缓存中不用要的周转,而且常常招致更多的代码扫除和渣滓接纳事情。若体贴此成绩,请监督与ASP.NETApplications功能工具联系关系的CacheTotalTurnoverRate功能计数器。高周转率大概申明存在成绩,出格是当项在到期前被移除时。这也称作内存压力。

7.选择合适页面或使用程序的数据检察机制
依据您选择在Web窗体页显现数据的体例,在便当和功能之间经常存在侧重要的衡量。比方,DataGridWeb服务器控件多是一种显现数据的便利快速的办法,但就功能而言它的开支经常是最年夜的。在某些复杂的情形下,您经由过程天生得当的HTML本人出现数据大概很无效,可是自界说和扫瞄器定向会很快抵销所取得的分外功能。RepeaterWeb服务器控件是便当和功能的折中。它高效、可自界说且可编程。

8.将SqlDataReader类用于疾速只进数据游标
SqlDataReader类供应了一种读取从SQLServer数据库检索的只进数据流的办法。假如当创立ASP.NET使用程序时呈现同意您利用它的情形,则SqlDataReader类供应比DataSet类更高的功能。情形之以是如许,是由于SqlDataReader利用SQLServer的本机收集数据传输格局从数据库毗连间接读取数据。别的,SqlDataReader类完成IEnumerable接口,该接口也同意您将数据绑定到服务器控件。有关更多信息,请拜见SqlDataReader类。有关ASP.NET怎样会见数据的信息,请拜见经由过程ASP.NET会见数据。也不知道,我同学昨天说数据挖掘很好。

深爱那片海 发表于 2015-1-18 13:46:34

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

透明 发表于 2015-1-24 19:01:05

这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。

若天明 发表于 2015-2-2 12:41:26

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

再见西城 发表于 2015-2-7 20:12:05

那么,ASP.Net有哪些改进呢?

小女巫 发表于 2015-2-23 10:16:41

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

乐观 发表于 2015-3-7 08:25:01

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

莫相离 发表于 2015-3-21 14:27:42

asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
页: [1]
查看完整版本: NET网页编程之ASP.NET功能优化的经常使用办法(一)