二十八个常用艺术使得优化ASP,NET中常用的优化质量的办法

www.ca88.com

运营秘籍:种种艺术加速您的专项使用服务器

假若您的专项使用服务器仅仅是一台Computer,但却不可能满意供给,那个时候你或者并无需改变一台更加好的服务器,你只须要服从上面包车型地铁七个提示,可能就可见让您的服务器越来越快。

 图片 1

1.硬件晋级

那说不定是升格品质最直白的法子,但也是最棒的法子,你只须求为您的服务器扩展RAM或是更加快的硬盘,计算就能够更加快点,当然假诺您可见转移越来越高型号的管理器,那就能够更加快了。当然,那个供给注意繁多事项。

2.禁用不须要的劳务

除了占用宝贵的RAM,有个别服务也许会据有CPU周期,固然在空转。如若您没有供给它们,禁止使用它们。

3.从源代码编写翻译

多少应用程序,假诺您从源代码,而不是应用通用的二进制编写翻译它们实行优化。叁个优化的使用普通比规范设置得更加快。

4.优化Web服务器和数据库服务器

你能够让通过Web服务器和数据库服务器的优化确保您你的Web应用程序的运行速度加速,尽恐怕急速地运作。


图片 2


固然你的专项使用服务器仅仅是一台Computer,但却不可知知足要求,这一年你恐怕并没有供给改动一台…

1. 数据库访问品质优化

1.       数据库访问质量优化
  数据库的连接和停业
  访问数据库能源供给创设连接、张开连接和停业连接多少个操作。那一个经过须求再三与数据库交流新闻以通过身份验证,比较费用服务器财富。ASP.NET中提供了连接池(Connection Pool)改良展开和关闭数据库对品质的熏陶。系统将用户的数据库连接放在连接池中,须要时抽出,关闭时收回连接,等待下一次的连年恳求。
  连接池的轻重缓急是轻便的,假诺在连接池抵达最大限度后仍要求创制连接,必然大大影响属性。因而,在创建数据库连接后唯有在真的要求操作时才张开连接,使用达成后即时关闭,从而尽量收缩数据库连接张开的岁月,幸免出现超过连接限制的情事。 
  使用存款和储蓄进程
  存储进度是积累在服务器上的一组预编写翻译的SQL语句,类似于DOS系统中的批处理文件。存款和储蓄进度具备对数据库及时访问的机能,音讯管理极为急速。使用存储进度能够制止对命令的往往编写翻译,在实行二遍后其施行设计就驻留在高速缓存中,未来供给时只需直接调用缓存中的二进制代码就能够。
  此外,存款和储蓄进度在劳动器端运转,独立于ASP.NET程序,便于修改,最要紧的是它能够削减数据库操作语句在互连网中的传输。
   优化查询语句
      ASP.NET中ADO连接消耗的能源一定大,SQL语句运营的大运越长,占用系统财富的大运也越长。因而,尽量采用优化过的SQL语句以调整和收缩实行时间。譬喻,不在查询语句中包涵子查询语句,丰盛利用索引等。

  数据库的连年和倒闭

2.       字符串操作品质优化
  使用值类型的ToString方法
  在一连字符串时,平时利用”+”号间接将数字拉长到字符串中。这种措施纵然简易,也能够赢得精确结果,但是由于涉及到不一样的数据类型,数字要求经过装箱操作转化为引用类型才足以拉长到字符串中。可是装箱操作对质量影响比较大,因为在进展那类管理时,将要托管堆中分红三个新的对象,原有的值复制到新创造的对象中。
  使用值类型的ToString方法能够制止装箱操作,从而提升应用程序品质。
  运用StringBuilder类
  String类对象是不行更改的,对于String对象的重复赋值在真相上是双重创造了四个String对象并将新值赋予该指标,其方法ToString对质量的巩固并非很领悟。
  在拍卖字符串时,最棒使用StringBuilder类,其.NET 命名空间是System.Text。该类并非成立新的目的,而是通过Append,Remove,Insert等艺术直接对字符串实行操作,通过ToString方法再次来到操作结果。
  其定义及操作语句如下所示:

  访问数据库能源供给成立连接、打开连接和停业连接多少个操作。这么些进程需求一再与数据库调换消息以通过身份验证,比较费用服务器财富。ASP.NET中提供了连接池(Connection
Pool)改正展开和关闭数据库对品质的影响。系统将用户的数据库连接放在连接池中,要求时抽取,关闭时收回连接,等待下二遍的连日须求。连接池的分寸是零星的,倘使在连接池到达最大限度后仍须要成立连接,必然大大影响属性。因而,在确立数据库连接后唯有在真的要求操作时才展开连接,使用实现后即刻关闭,从而尽量减弱数据库连接展开的年月,幸免出现高出连接限制的情事。

int num;
System.Text.StringBuilder str = new System.Text.StringBuilder(); //创建字符串
str.Append(num.ToString()); //添加数值num
Response.Write(str.ToString); //显示操作结果

  使用存款和储蓄进程

3.       优化 Web 服务器Computer和一定应用程序的布署文件以契合您的特定须要
  暗中同意情状下,ASP.NET 配置被设置成启用最遍布的职能并尽量适应最广大的方案。因而,应用程序开辟职员能够依附应用程序所选择的成效,优化和转移内部的有些配置,以巩固应用程序的性质。下边包车型地铁列表是你应该想念的部分精选。
  仅对须要的应用程序启用身份验证。默许情状下,身份验证形式为
Windows,或集成 NTLM。大大多情状下,对于必要身份验证的应用程序,最棒在
Machine.config 文件中禁用身份验证,并在 Web.config
文件中启用身份验证。
  依照适当的乞求和响应编码设置来配置应用程序。ASP.NET
暗中同意编码格式为 UTF-8。如若您的应用程序为严刻的 ASCII,请配置应用程序使用 ASCII 以博得多少的属性进步。
  思量对应用程序禁用AutoEventWireup。在
Machine.config 文件大校Auto伊夫ntWireup 属性设置为
false,意味着页面不将艺术名与事件张开匹配和将两边境海关系(例如Page_Load)。假若页面开荒职员要动用这个事件,须求在基类中重写这一个点子(举例,要求为页面加载事件重写
Page.OnLoad,而不是接纳Page_Load 方法)。假如禁止使用Auto伊夫ntWireup,页面将透过将事件三回九转留给页面小编而不是机关实践它,获得多少的个性升高。
  从呼吁处理管线中移除不用的模块。默许景况下,服务器Computer的
Machine.config 文件中
<httpModules> 节点的持有效率均保存为激活。依关照用程序所使用的成效,您能够从呼吁管线中移除不用的模块以获取多少的本性提高。检查每种模块及其职能,并按您的须要自定义它。
比方说,倘诺您在应用程序中不使用会话状态和输出缓存,则足以从
<httpModules> 列表中移除它们,以便央求在不进行另外有意义的拍卖时,不必推行种种模块的进去和离开代码。 

  存款和储蓄进程是积累在服务器上的一组预编写翻译的SQL语句,类似于DOS系统中的批处理公事。存款和储蓄进程具备对数据库及时访问的效益,消息管理极为连忙。使用存款和储蓄进程可以避免对命令的屡次编写翻译,在执行一遍后其施行设计就驻留在高速缓存中,以后供给时只需直接调用缓存中的二进制代码就可以。其它,存款和储蓄进程在服务器端运维,独立于ASP.NET程序,便于修改,最要害的是它能够减弱数据库操作语句在网络中的传输。

4.       一定要禁止使用调节和测试情势
  在安顿生产应用程序或进行别的性质度量在此以前,始终牢记禁止使用调节和测试情势。假诺启用了调节和测试形式,应用程序的习性恐怕碰着这一个大的震慑。

  优化查询语句

5.**      对此广大依赖外界能源的应用程序,请记挂在多管理器Computer上启用网络园艺**
  ASP.NET 进程模型扶助启用多管理器Computer上的可缩放性,将专门的职业分发给四个进度(每种CPU 三个),并且每一个进度都将微型Computer关系设置为其
CPU。此手艺称为互联网园艺。假设应用程序使用比较慢的数据库服务器或调用具有外界重视项的
COM 对象(这里只是谈起二种或然性),则为您的应用程序启用网络园艺是便民的。不过,在决定启用网络园艺从前,您应该测试应用程序在网络园中的执市价况。 

  ASP.NET中ADO连接消耗的财富相当的大,SQL语句运行的小时越长,占用系统能源的小时也越长。由此,尽量使用优化过的SQL语句以压缩实践时间。例如,不在查询语句中包括子查询语句,丰盛利用索引等。

 

  2. 字符串操作品质优化

6.**      若果恐怕,就缓存数据和页输出
  ASP.NET 提供了某些总结的编制,它们会在不须求为每一种页央浼动态总括页输出或数量时缓存那个页输出或数量。此外,通过规划要开始展览缓存的页和数据供给(特别是在站点中预期将有一点都不小通信量的区域),能够优化那么些页的习性。与
.NET Framework 的此外 Web 窗体功能相比较,适本地使用缓存能够越来越好的增进站点的属性,临时这种增进是超数量级的。
接纳 ASP.NET 缓存机制有两点须求注意。首先,不要缓存太多项。缓存各样项均有开拓,极其是在内部存储器使用方面。不要缓存轻便重新计算和非常的少使用的项。其次,给缓存的项分配的限制时间不要太短。非常的慢到期的项会导致缓存中不需要的运转,并且时有时变成更加多的代码清除和污源回收专业。若关心此主题材料,请监视与
ASP.NET Applications 品质对象关系的 Cache Total Turnover
Rate 品质计数器。高周转率恐怕注明存在难题,非常是当项在到期前被移除时。那也称作内部存款和储蓄器压力。

7.       选用适合页面或应用程序的数额查看机制**
  依据你选用在 Web 窗体页展现数据的格局,在方便和属性之间平日存在着关键的权衡。举例,DataGrid
Web 服务器控件只怕是一种展现数据的方便神速的办法,但就品质来讲它的支付平常是最大的。在好几轻松的情况下,您通过转移适当的
HTML 自身表现数据只怕很实用,但是自定义和浏览器定向会非常的慢抵销所获取的附加功能。Repeater
Web 服务器控件是便于和总体性的折衷。它高效、可自定义且可编程。

  使用值类型的ToString方法

8.       将 SqlDataReader 类用于快速只进多少游标
  SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法。假如当创设ASP.NET 应用程序时出现允许你使用它的景况,则
SqlDataReader 类提供比 DataSet
类更加高的特性。处境于是这么,是因为
SqlDataReader 使用 SQL Server
的本机网络数据传输格式从数据库连接间接读取数据。此外,SqlDataReader
类达成 IEnumerable 接口,该接口也允许你将数据绑定到服务器控件。有关越多音信,请参见
SqlDataReader 类。有关 ASP.NET
怎么着访问数据的消息,请参见通过
ASP.NET 访问数据。

9.       将 SQL Server 存储进度用于数据访问
  在 .NET Framework 提供的有所数据访问方法中,基于 SQL
Server 的多少访问是生成高品质、可缩放 Web
应用程序的引入选拔。使用托管 SQL
Server 提供程序时,可透过选择编写翻译的蕴藏进度而不是例外查询获得额外的性格提升。
 
10.   防止单线程单元 (STA) COM 组件   暗中认可境况下,ASP.NET 不容许其他 STA COM 组件在页面内运转。若要运转它们,必须在
.aspx 文件内将 ASPCompat=true
属性包涵在 @ Page 指令中。那样就将实施用的线程池切换来STA 线程池,而且使 HttpContext
和其余内置对象可用以 COM 对象。前者也是一种属性优化,因为它幸免了将二十多线程单元
(MTA) 封送到 STA 线程的另向外调拨运输用。
使用 STA COM 组件恐怕大大挫伤质量,应尽量防止。若必须运用
STA COM 组件,如在此外 interop
方案中,则应在试行时期开始展览大气调用并在历次调用时期发送尽只怕多的音讯。此外,小心不要在构造页面期间成立任何
STA COM 组件。举个例子上面包车型客车代码中,在页面构造时将实例化由有个别线程成立的
MySTAComponent,而该线程并不是将运维页面的 STA 线程。那可能对品质有不利影响,因为要结构页面就务须产生MTA 和 STA 线程之间的封送管理。 

  在延续字符串时,日常选拔”+”号直接将数字拉长到字符串中。这种措施纵然简易,也能够获取精确结果,可是由于涉及到不一样的数据类型,数字必要经过装箱操作转化为引用类型技术够拉长到字符串中。不过装箱操作对品质影响相当的大,因为在进展那类处理时,将要托管堆中分红三个新的靶子,原有的值复制到新创造的对象中。使用值类型的ToString方法可防止止装箱操作,从而坚实应用程序质量。

 

  运用StringBuilder类

<%@ Page Language="VB" ASPCompat="true" %>
<script runat=server> 
    Dim myComp as new MySTAComponent() 
    Public Sub Page_Load() 
        myComp.Name = "Bob" 
    End Sub
</script>
<html>
<% 
    Response.Write(myComp.SayHello)
%>
</html>

  String类对象是不行改换的,对于String对象的重复赋值在真相上是双重创建了三个String对象并将新值赋予该指标,其方法ToString对质量的抓牢并非很料定。在拍卖字符串时,最佳使用StringBuilder类,其.NET
命名空间是System.Text。该类并非创造新的对象,而是通过Append,Remove,Insert等方式直接对字符串举行操作,通过ToString方法重回操作结果。

  首要推荐机制是推迟对象的创办,直到未来在
STA 线程下实行上述代码,如下边包车型客车例证所示。  

   其定义及操作语句如下所示:

 

  int num;

 

  System.Text.StringBuilder str = new System.Text.StringBuilder();
//创制字符串

<%@ Page Language="VB" ASPCompat="true" %>
<script runat=server>
Dim myComp
Public Sub Page_Load()
myComp = new MySTAComponent()
myComp.Name = "Bob"
End Sub
</script>
<html>
<%
Response.Write(myComp.SayHello)
%>
</html>

   str.Append(num.ToString()); //增多数值num

  推荐的做法是在急需时如故在
Page_Load 方法中协会任何 COM
组件和表面能源。
  永世不要将别的 STA COM 组件存款和储蓄在能够由组织它的线程以外的其余线程访问的共享能源里。那类财富包蕴像缓存和对话状态那样的财富。尽管STA 线程调用 STA COM 组件,也唯有构造此 STA COM 组件的线程能够实际为该调用劳动,而这须要封送处理对成立者线程的调用。此封送管理大概爆发至关心器重要的属性损失和可伸缩性难点。在这种气象下,请探讨一下使
COM 组件成为 MTA COM 组件的恐怕,或然更加好的章程是迁移代码以使对象产生托管对象。 

  Response.Write(str.ToString); //展现操作结果3. 优化 Web
服务器计算机和一定应用程序的配置文件以符合您的特定必要

 

  私下认可情形下,ASP.NET
配置被设置成启用最分布的功能并尽大概适应最常见的方案。因而,应用程序开采人士能够依据应用程序所采取的遵从,优化和改造内部的一点配置,以拉长应用程序的质量。下边包车型大巴列表是你应该思量的局地抉择。

11.   将调用密集型的 COM 组件迁移到托管代码
  .NET Framework 提供了二个粗略的点子与古板的 COM 组件实行互动。其优点是足以在保留现存投资的同不平时间使用新的阳台。然则在少数情形下,保留旧组件的质量费用使得将零件迁移到托管代码是值得的。每一气象都以分裂的,决定是还是不是供给迁移组件的最棒办法是对
Web 站点运行品质度量。提议您探究一下怎么样将索要多量调用以实行交互的其它COM 组件迁移到托管代码。
  大多情况下不容许将旧式组件迁移到托管代码,特别是在最初迁移
Web 应用程序时。在这种情况下,最大的性质障碍之一是将数据从非托管意况封送到托管境况。因而,在竞相操作中,请在其余一端实行尽只怕多的任务,然后举行三个大调用而不是一多元小调用。举个例子,公共语言运维库中的全体字符串都是Unicode 的,所以应在调用托管代码在此之前将零件中的全数字符串转变到Unicode 格式。
  其余,一管理完其余 COM 对象或本机能源就自由它们。那样,别的乞求就能够使用它们,并且最大限度地缩减了因稍后央浼垃圾回收器释放它们所引起的天性难点。 
 
12.   在 Visual Basic .NET 或 JScript 代码中动用最初绑定
昔日,开采人士喜欢使用 Visual
Basic、VBScript 和 JScript 的因由之一正是它们所谓“无类型”的属性。变量不需求显式类型评释,并可以轻巧地通过选用来创造它们。当从贰个连串到另贰个连串举办分红时,调换将机关实施。但是,这种实惠会大大损害应用程序的属性。
Visual Basic 现在由此选用 Option
Strict 编写翻译器指令来支撑项目安全编制程序。为了向后十一分,暗许景况下,ASP.NET
不启用该选项。可是,为了获得最棒品质,刚烈提出在页中启用该选项。若要启用
Option Strict,请将 Strict 属性包蕴在 @ Page 指令中,或许,对于用户控件,请将该属性包涵在
@ Control 指令中。上面包车型客车亲自过问演示了哪些设置该属性,并张开了四个变量调用以展现应用该属性是什么样变成编写翻译器错误的。 
 

   仅对急需的应用程序启用身份验证。

 

  默许意况下,身份验证方式为 Windows,或集成
NTLM。大多数情况下,对于急需身份验证的应用程序,最佳在 Machine.config
文件中禁止使用身份验证,并在 Web.config
文件中启用身份验证。依据适当的伸手和响应编码设置来布局应用程序。ASP.NET
暗中同意编码格式为 UTF-8。纵然你的应用程序为严厉的 ASCII,请配置应用程序使用
ASCII 以得到多少的本性升高。

<%@ Page Language="VB" Strict="true" %>
<%
Dim B
Dim C As String
‘ This will cause a compiler error.
A = "Hello"
‘ This will cause a compiler error.
B = "World"
‘ This will not cause a compiler error.
C = "!!!!!!"
‘ But this will cause a compiler error.
C = 0
%>

  思索对应用程序禁止使用 Auto伊芙ntWireup。

  JScript .NET 也支撑无类型编制程序,但它不提供强制中期绑定的编写翻译器指令。若发生上边任何一种境况,则变量是前期绑定的:
  被显式注解为 Object。
  是无类型评释的类的字段。
  是无显式类型注明的专项使用函数或艺术成员,并且无法从其选拔猜测出类型。
  最后二个差别比较复杂,因为只要
JScript .NET 编写翻译器能够依据变量的施用处境测算出类型,它就能够进展优化。在底下的身体力行中,变量
A 是开始的一段时代绑定的,但变量 B 是早先时期绑定的。 

  在 Machine.config 文件中校 Auto伊芙ntWireup 属性设置为
false,意味着页面不将艺术名与事件实行匹配和将两方联系

var A;
var B; 
A = "Hello";
B = "World";
B = 0;

(例如
Page_Load)。假如页面开垦人士要动用这么些事件,要求在基类中重写那一个艺术(举个例子,需求为页面加载事件重写
Page.OnLoad,而不是使用 Page_Load 方法)。假诺禁用AutoEventWireup,页面将由此将事件三翻五次留给页面我而不是自动实行它,得到多少的习性进步。

为了得到最好的性质,当注脚JScript .NET 变量时,请为其分配二个项目。举个例子,var A
: String。 
 
13.   使乞求管线内的有着模块尽也许飞快
  乞求管线内的全部模块在每回哀告中皆有机遇被周转。因而,当呼吁进入和离开模块时神速地触发代码至关心重视要,极度是在不行使模块成效的代码路线里。分别在应用及不使用模块和安顿文件时进行吞吐量测试,对分明那个主意的试行进度特别管用。

 

14.   使用 HttpServerUtility.Transfer 方法在一仍其旧应用程序的页面间重定向
  选用 Server.Transfer 语法,在页面中接纳该方法可幸免不要求的客户端重定向。 
 
15.   要求时调解应用程序各个帮助进度的线程数
  ASP.NET 的央浼协会试图在实行须要的线程数和可用能源之间达成一种平衡。已知三个用到丰裕CPU 功率的应用程序,该协会将依照可用于央浼的
CPU 功率,来决定允许同期实践的央浼数。那项手艺称作线程门控。不过在一些规则下,线程门控算法不是很平价。通过利用与
ASP.NET Applications 品质对象关系的 Pipeline Instance Count
品质计数器,能够在 PerfMon 中监视界程门控。 

  从呼吁管理管线中移除不用的模块。

  当页面调用外界财富,如数据库访问或
XML Web services 央浼时,页面乞求经常甘休并释放 CPU。假诺有些央浼正在等候被拍卖,并且线程池中有二个线程是随便的,那么这一个正在等待的必要将起来被拍卖。遗憾的是,有的时候那大概引致
Web 服务器上设有大气同有时候管理的呼吁和好些个正在等候的线程,而它们对服务器品质有不利影响。经常,假设门控因子是外表能源的响应时间,则让过多哀告等待财富,对
Web 服务器的吞吐量并无援助。 
 
  为缓慢解决这种景象,能够通过改变Machine.config 配置文件
<processModel> 节点的
maxWorkerThreads 和 maxIOThreads
属性,手动设置进度中的线程数限制。
 
  注意 协理线程是用来拍卖 ASP.NET 乞请的,而 IO 线程则是用来为来自文件、数据库或 XML
Web services 的数量提供劳务的。
  分配给这么些属性的值是进度中种种 CPU
每类线程的最大数据。对于双管理器Computer,最大数是设置值的两倍。对于四处理器计算机,最大值是设置值的四倍。无论怎样,对于有多个或八个CPU 的Computer,最棒退换暗许值。对于有贰个或五个Computer的微型计算机,暗中同意值就足以,但对此有更加多管理器的微管理器的属性,进度中有一百或两百个线程则弊大于利。 
在意 进程中有太多线程往往会回落服务器的速度,因为额外的上下文沟通导致操作系统将
CPU 周期花在尊崇线程而不是管理诉求上。 

  私下认可情形下,服务器计算机的 Machine.config 文件中
节点的保有机能均保存为激活。遵关照用程序所利用的功能,您能够从呼吁管线中移除不用的模块以获取多少的属性升高。检查各样模块及其职能,并按您的内需自定义它。比方,假设你在应用程序中不使用会话状态和出口缓存,则足以从
列表中移除它们,以便央浼在不实行此外有意义的拍卖时,不必实施各种模块的进去和离开代码。

 

  4. 自然要禁止使用调节和测试情势

16.   适本地行使国有语言运营库的污物回收器和自行内部存款和储蓄器管理
  小心不要给各个诉求分配过多内部存款和储蓄器,因为如此垃圾回收器将必须更频仍地拓展越来越多的办事。其余,不要让不须求的指针指向对象,因为它们将使对象有限支撑活动状态,并且应尽量幸免含
Finalize 方法的靶子,因为它们在末端会促成更加多的工作。极其是在
Finalize 调用中长久不要释放能源,因为财富在被垃圾回收器回收从前也许直接消耗着内部存款和储蓄器。最终这么些主题材料平日会对
Web 服务器情形的属性产生毁灭性的打击,因为在等待
Finalize 运营时,很轻松耗尽某些特定的能源。 

  在布署生产应用程序或实行其余性质测量以前,始终铭记禁止使用调节和测试方式。假若启用了调节和测试格局,应用程序的属性大概碰到那多少个大的震慑。

 

  5.
对于遍布信赖外界能源的应用程序,请思量在多管理器Computer上启用网络园艺

17.   假设有重型 Web 应用程序,可考虑试行预批编写翻译
  每当发生对目录的首先次呼吁时都会执行批编写翻译。假如目录中的页面未有被分析并编写翻译,此成效会成批剖析并编写翻译目录中的全部页面,以便越来越好地接纳磁盘和内部存款和储蓄器。即便那须求非常短日子,则将便捷剖析并编写翻译单个页面,以便必要能被拍卖。此功用带给
ASP.NET 质量上的补益,因为它将广大页面编写翻译为单个程序集。从已加载的程序集访问一页比每页加载新的顺序集要快。
  批编写翻译的毛病在于:即使服务器收到到非常的多对未有编译的页面包车型客车乞求,那么当
Web 服务器分析并编写翻译它们时,质量或者较差。为缓慢解决那一个难点,能够施行预批编写翻译。为此,只需在应用程序激活此前向它诉求一个页面,无论哪页均可。然后,当用户第叁次访问您的站点时,页面及其程序集将已被编写翻译。 
 
  未有简单的体制能够领悟批编写翻译何时爆发。需一贯等到
CPU 空闲或然未有越来越多的编写翻译器进度(举例csc.exe(C# 编译器)或 vbc.exe(Visual Basic 编译器))启动。 
 
  还应尽量制止改造应用程序的
“bin 目录中的程序集。更换页面会导致重新分析和编写翻译该页,而替换
“bin 目录中的程序集则会促成全盘重复批编写翻译该目录。 
 
  在蕴藏众多页面包车型客车布满站点上,更加好的秘技可能是依靠陈设替换页面或程序集的累累程度来设计分裂的目录结构。不经常更换的页面能够积累在一样目录中并在一定的岁月开始展览预批编写翻译。平时转移的页面应在它们本身的目录中(每一个目录最多几百页)以便快速编写翻译。 
 
  Web 应用程序能够涵盖众多子目录。批编写翻译发生在目录级,而不是选择程序级。 
 
18.   不要借助代码中的至极
  因为一点都不小大地降低质量,所以您不该将它们用作决定通常程序流程的章程。假若有希望质量评定到代码中可能导致格外的气象,请施行这种操作。不要在拍卖该境况以前捕获极度本身。常见的方案包涵:检查
null,分配给将深入分析为数字值的
String 一个值,或在使用数学生运动算前检查特定值。下边包车型客车亲自过问演示大概变成十分的代码以及测试是还是不是存在某种景况的代码。两个发生一样的结果。 

  ASP.NET
过程模型支持启用多处理器Computer上的可缩放*,将专门的学问分发给多少个经过(每个CPU二个),并且每一种进度都将计算机关系设置为其
CPU。此技巧称为网络园艺。借使应用程序使用非常慢的数据库服务器或调用具备外界注重项的
COM
对象(这里只是聊到三种大概*),则为你的应用程序启用互联网园艺是有利的。不过,在决定启用网络园艺在此以前,您应该测试应用程序在互连网园中的执市价况。

 

  6. 万一大概,就缓存数据和页输出

try

       result = 100 / num;
}
catch (Exception e)

       result = 0;
}
// …to this.
if (num != 0) 
       result = 100 / num;
else 
       result = 0;

  ASP.NET
提供了有的大致的建制,它们会在无需为各样页央求动态总括页输出或数额时缓存那么些页输出或数额。其它,通过陈设要拓展缓存的页和数目诉求(极度是在站点中预期将有一点都不小通信量的区域),能够优化那些页的特性。与
.NET Framework 的任何 Web
窗体作用相比较,适本地使用缓存能够越来越好的滋长站点的性质,不常这种拉长是超数量级的。使用
ASP.NET
缓存机制有两点要求小心。首先,不要缓存太多项。缓存种种项均有开拓,特别是在内部存款和储蓄器使用方面。不要缓存轻松重新计算和不多使用的项。其次,给缓存的项分配的限制期限不要太短。极快到期的项会导致缓存中不须要的周转,并且日常导致越多的代码清除和破烂回收职业。若关切此难点,请监视与
ASP.NET Applications 品质对象关联的 Cache Total Turnover Rate
质量计数器。高周转率恐怕表明存在难题,特别是当项在到期前被移除时。那也称作内存压力。

19.   使用 HttpResponse.Write 方法进行字符串串联
  该办法提供十分实用的缓冲和接二连三服务。可是,假诺你正在奉行广泛的连日,请使用四个Response.Write 调用。上边示例中显示的技能比用对
Response.Write 方法的单个调用连接字符串越来越快。 

   **7. 挑选切合页面或应用程序的多少查看机制

 

**

Response.Write("a");
Response.Write(myString);
Response.Write("b");
Response.Write(myObj.ToString());
Response.Write("c");
Response.Write(myString2);
Response.Write("d");

  依照你选择在 Web
窗体页展现数据的方法,在福利和性质之间日常存在珍视大的权衡。举个例子,DataGrid
Web
服务器控件大概是一种展现数据的方便急迅的办法,但就性能来讲它的付出平时是最大的。在少数轻松的场馆下,您通过转换适当的
HTML
自身表现数据或然很管用,然而自定义和浏览器定向会非常快抵销所获得的附加作用。Repeater
Web 服务器控件是有利和属性的迁就。它高效、可自定义且可编制程序。

20.   除非有特异的原故要关门缓冲,不然使其维持开荒
  禁止使用 Web 窗体页的缓冲会促成大气的属性花费。 

  8. 将 SqlData里德r 类用于快捷只进多少游标

 

  SqlDataReader 类提供了一种读取从 SQL Server
数据库检索的只进数据流的章程。借使当创设 ASP.NET
应用程序时出现允许你使用它的景况,则 SqlDataReader 类提供比 DataSet
类更加高的习性。情状于是那样,是因为 SqlDataReader 使用 SQL Server
的本机网络数据传输格式从数据库连接间接读取数据。其它,SqlDataReader
类达成 IEnumerable
接口,该接口也同意你将数据绑定到服务器控件。有关更加的多音信,请参见
SqlDataReader 类。有关 ASP.NET 如何访问数据的音讯,请参见通过 ASP.NET
访问数据。

21.   只在要求时保留服务器控件视图状态
  自动视图状态管理是服务器控件的功用,该意义使服务器控件能够在来往进程上再次填写它们的属性值(您没有须求编写制定任何代码)。可是,因为服务器控件的视图状态在隐蔽的窗体字段中来回于服务器,所以该意义确实会对质量爆发影响。您应该掌握在怎么着情况下视图状态集会场全部帮忙,在什么样景况下它影响页的天性。举例,要是您将服务器控件绑定到各样往返进程上的数目,则将用从数额绑定操作获得的新值替换保存的视图状态。在这种场地下,禁用视图状态能够节省管理时间。
私下认可情状下,为富有服务器控件启用视图状态。若要禁止使用视图状态,请将控件的EnableViewState
属性设置为 false,如上边包车型客车 DataGrid 服务器控件示例所示。 

  9. 将 SQL Server 存储进度用于数据访问

 

  在 .NET Framework 提供的装有数据访问方法中,基于 SQL Server
的数据访问是生成高品质、可缩放 Web 应用程序的推荐选择。使用托管 SQL
Server
提供程序时,可经过应用编写翻译的贮存进程而不是例外查询获得额外的性格升高。

 

 

<asp:datagrid EnableViewState="false" datasource="…" runat="server"/>

  10. 避免单线程单元 (STA) COM 组件

 
  您还足以利用 @ Page 指令禁止使用全数页的视图状态。当您不从页回发到服务器时,那将卓殊实用: 

  私下认可意况下,ASP.NET 不相同意任何 STA COM
组件在页面内运转。若要运转它们,必须在 .aspx 文件内将 ASPCompat=true
属性包括在 @ Page 指令中。那样就将执行用的线程池切换成 STA
线程池,而且使 HttpContext 和其余内置对象可用于 COM
对象。前者也是一种属性优化,因为它幸免了将四线程单元 (MTA) 封送到 STA
线程的任何调用。使用 STA COM
组件也许大大损害品质,应尽量制止。若必须选用 STA COM 组件,如在其余interop
方案中,则应在奉行时期进行多量调用并在每便调用时期发送尽恐怕多的新闻。其余,小心不要在组织页面时期成立任何
STA COM 组件。比如下边包车型客车代码中,在页面构造时将实例化由某些线程创制的
MySTAComponent,而该线程并不是将运维页面包车型大巴 STA
线程。那或然对品质有不利影响,因为要布局页面就非得做到 MTA 和 STA
线程之间的封送管理。

 

  Dim myComp as new MySTAComponent() Public Sub Page_Load()
myComp.Name = “Bob” End Sub

 

  首选机制是推迟对象的创始,直到现在在 STA
线程下实践上述代码,如上面包车型大巴事例所示。

<%@ Page EnableViewState="false" %>

  Dim myComp Public Sub Page_Load() myComp = new MySTAComponent()
myComp.Name = “Bob” End Sub

  注意 @ Control 指令中也支撑 EnableViewState 属性,该指令允许你决定是还是不是为用户控件启用视图状态。
 
  若要分析页上服务器控件使用的视图状态的多少,请(通过将
trace=”true” 属性蕴含在 @ Page
指令中)启用该页的追踪并查阅
Control Hierarchy 表的 Viewstate
列。有关追踪和什么启用它的消息,请参见
ASP.NET 跟踪。 
 
22.   制止到服务器的不须求的过往进程
  即便你很或许希望尽量多地应用
Web 窗体页框架的那个节省时间和代码的效果,但在好几意况下却不宜接纳ASP.NET 服务器控件和回发事件管理。
普通,唯有在追寻或存款和储蓄数据时,您才须要运行到服务器的往来进程。多数数据操作可在这个往返进程间的客户端上海展览中心开。举例,从
HTML 窗体验证用户输入平日可在数据交到到服务器以前在客户端实行。常常,假若没有必要将音信传送到服务器以将其积存在数据库中,那么您不应该编写导致往返进程的代码。
借使你支付自定义服务器控件,请思索让它们为永葆
ECMAScript 的浏览器展现客户端代码。通过以这种方法使用服务器控件,您能够分明地缩减消息被不要求的发送到
Web 服务器的次数。 
 
行使 Page.IsPostBack 制止对过往进程实践不必要的拍卖 

  推荐的做法是在需求时大概在 Page_Load 方法中结构任何 COM
组件和表面能源。永久不要将其余 STA COM
组件存储在能够由组织它的线程以外的别的线程访问的共享能源里。那类财富包蕴像缓存和对话状态那样的财富。纵然STA 线程调用 STA COM 组件,也唯有构造此 STA COM
组件的线程能够实际为该调用服务,而那需求封送管理对创立者线程的调用。此封送管理只怕爆发举足轻重的属性损失和可伸缩性难点。在这种景色下,请探讨一下使
COM 组件成为 MTA COM
组件的或者*,恐怕更加好的章程是迁移代码以使对象产生托管对象。

  固然你编写管理服务器控件回发管理的代码,一时可能必要在第三遍呼吁页时实施其它代码,而不是当用户发送包蕴在该页中的
HTML 窗体时实行的代码。依照该页是还是不是是响应服务器控件事件生成的,使用
Page.IsPostBack 属性有规则地施行代码。比如,下边包车型大巴代码演示如何成立数据库连接和下令,该命令在第二回呼吁该页时将数据绑定到
DataGrid 服务器控件。

   11. 将调用密集型的 COM 组件迁移到托管代码

 

  .NET Framework 提供了三个简约的秘技与古板的 COM
组件进行互动。其亮点是足以在保留现成投资的还要使用新的阳台。但是在少数境况下,保留旧组件的性质费用使得将零件迁移到托管代码是值得的。每一情状都是分化的,决定是还是不是必要迁移组件的最佳办法是对
Web
站点运维质量衡量。提出您商讨一下怎么着将供给大量调用以进行交互的其余COM
组件迁移到托管代码。多数地方下不恐怕将旧式组件迁移到托管代码,极度是在最初迁移
Web
应用程序时。在这种情状下,最大的属自闭症之一是将数据从非托管遭受封送到托管情形。因而,在相互操作中,请在其余一端实践尽恐怕多的天职,然后实行叁个大调用而不是一层层小调用。举个例子,公共语言运转库中的全数字符串都以Unicode 的,所以应在调用托管代码以前将零件中的全数字符串转变到 Unicode
格式。其它,一管理完其余 COM
对象或本机财富就自由它们。那样,别的诉求就可见利用它们,并且最大限度地压缩了因稍后央求垃圾回收器释放它们所引起的属性难点。

 

  12. 在 Visual Basic .NET 或 JScript. 代码中选择最初绑定

void Page_Load(Object sender, EventArgs e)


       // Set up a connection and command here. 
       if (!Page.IsPostBack) 
       { 
              String query = "select * from Authors where FirstName like ‘%JUSTIN%’"; 
              myCommand.Fill(ds, "Authors"); 
              myDataGrid.DataBind(); 
       }
}

  今后,开辟职员喜欢使用 Visual Basic、VBScript. 和 JScript.
的缘故之一正是它们所谓“无类型”的特性。变量没有须求显式类型注脚,并能够轻巧地由此使用来创制它们。当从多少个种类到另叁个类别实行分配时,转换将电动实行。然则,这种便利会大大挫伤应用程序的本性。Visual
Basic 以后因此选拔 Option Strict
编译器指令来援救项目安全编制程序。为了向后非常,默许情况下,ASP.NET
不启用该选项。不过,为了赢得最棒质量,生硬提议在页中启用该选项。若要启用
Option Strict,请将 Strict 属性包含在 @ Page
指令中,也许,对于用户控件,请将该属性蕴含在 @ Control
指令中。上面包车型大巴言传身教演示了如何设置该属*,并开始展览了三个变量调用以展现应用该属性是怎么着酿成编写翻译器错误的。

 
  由于每一回央求时都实行Page_Load 事件,上述代码检查
IsPostBack 属性是否设置为
false。如果是,则进行代码。假使该属性设置为
true,则不推行代码。 
 
  注意 假如不运营这种检讨,回发页的作为将不改动。Page_Load
事件的代码在实行服务器控件事件此前施行,但只有服务器控件事件的结果才或然在出口页上显现。如果不运维该检查,仍将为
Page_Load 事件和该页上的任何服务器控件事件施行拍卖。

 

23.   当不利用会话状态时禁止使用它
  并不是有着的应用程序或页都必要针对于现实用户的对话状态,您应该对别的无需会话状态的应用程序或页禁止使用会话状态。 
  若要禁用页的对话状态,请将 @
Page 指令中的 EnableSessionState
属性设置为 false。举例,<%@ Page
EnableSessionState=”false” %>。 
  注意 若是页供给拜访会话变量,但不希图创设或修改它们,则将
@ Page 指令中的
EnableSessionState 属性设置为
ReadOnly。
  还足以禁止使用 XML Web services
方法的对话状态。有关更多消息,请参见使用
ASP.NET 和 XML Web services 客户端创立的 XML Web services。 
  若要禁止使用应用程序的对话状态,请在应用程序
Web.config 文件的 sessionstate
配置节中将 mode 属性设置为 off。举例,<sessionstate mode=”off”
/>。 
 
24.   仔细选取对话状态提供程序
  ASP.NET 为存款和储蓄应用程序的对话数据提供了二种不一样的主意:进度内会话状态、作为
Windows 服务的历程外会话状态和
SQL Server 数据库中的进度外会话状态。每一种格局都有和好的助益,但进程内会话状态是于今速度最快的解决方案。纵然只在对话状态中储存少些易失数据,则提出您使用进度内提供程序。进程外化解方案首要用于跨多少个计算机或七个Computer缩放应用程序,或然用于服务器或进度重新运行时不可能丢失数据的情事。有关越来越多音讯,请参见
ASP.NET 状态管理。

  JScript. .NET
也支持无类型编制程序,但它不提供强制前期绑定的编写翻译器指令。若产生上边任何一种情形,则变量是前期绑定的:被显式注明为
Object,是无类型申明的类的字段,是无显式类型申明的专项使用函数或情势成员,并且一点都不大概从其选择推测出类型。
  最终一个异样相比较复杂,因为若是 JScript. .NET
编写翻译器能够依据变量的应用情形测算出类型,它就能够开始展览优化。在上边包车型大巴言传身教中,变量
A 是最初绑定的,但变量 B 是中期绑定的。

25.   不利用不供给的Server Control
  ASP.net中,大量的服务器端控件方便了先后开辟,但也说不定带来品质的损失,因为用户每操作一回服务器端控件,就发生壹次与服务器端的往来进程。由此,非供给,应当少使用Server
Control。 
 
26.   ASP.NET应用程序质量测试
  在对ASP.NET应用程序举行质量测试以前,应保障应用程序没错误,而且效能精确。具体的习性测试能够应用以下工具实行:
Web Application Strees Tool (WAS)是Microsoft发表的贰个无偿测试工具,可以从 
  Application Center Test (ACT)
是二个测试工具,附带于Visual
Studio.NET的商家版中,是Microsoft正式匡助的web应用程序测试工具。它亦可直观地生成图表结果,效率比WAS多,但不辜负有八个客户机同期测试的技术。 
 
  服务器操作系统”管理工具”中的”质量”计数器,能够对服务器进行监测以精通应用程序质量。 

  var A;

结论
  对于网址开拓职员来讲,在编写制定ASP.NET应用程序时留意质量难题,养成非凡的习于旧贯,进步应用程序品质,至少能够推迟必需的硬件晋级,降低网址的资本。

  var B;

  A = “Hello”;

  B = “World”;

  B = 0; 为了获得最棒的质量,当注明 JScript. .NET
变量时,请为其分配一个品种。比如,var A : String。

  13. 使须要管线内的有着模块尽大概快捷

  恳求管线内的具备模块在历次诉求中都有空子被周转。因而,当呼吁进入和距离模块时急迅地触发代码至关心珍视要,极其是在不接纳模块功效的代码路线里。分别在利用及不使用模块和布局文件时实行吞吐量测试,对鲜明那些点子的实践进程特别管用。

  

  14. 行使 HttpServerUtility.Transfer
方法在一样应用程序的页面间重定向

  选拔 Server.Transfer
语法,在页面中选择该方法可制止不须要的客户端重定向。

  15. 要求时调解应用程序种种协理进程的线程数

  ASP.NET
的央浼组织试图在实践央求的线程数和可用财富之间达到一种平衡。已知一个使用充分CPU 功率的应用程序,该组织将依照可用来央浼的 CPU
功率,来决定允许同一时候执行的乞请数。那项手艺称作线程门控。不过在少数规范下,线程门控算法不是相当的低价。通过应用与
ASP.NET Applications 品质对象关系的 Pipeline Instance Count
品质计数器,能够在 PerfMon
中监视界程门控。当页面调用外界能源,如数据库访问或 XML Web services
诉求时,页面诉求常常甘休并释放
CPU。假设有些央浼正在守候被管理,并且线程池中有三个线程是大肆的,那么这么些正在等待的伸手将启幕被管理。遗憾的是,有时那只怕造成Web
服务器上存在大气而且处理的伏乞和广大正值等候的线程,而它们对服务器质量有不利影响。经常,要是门控因子是外界财富的响应时间,则让过多央浼等待能源,对
Web 服务器的吞吐量并无协理。为缓慢解决这种气象,能够透过改造 Machine.config
配置文件节点的 maxWorkerThreads 和 maxIOThreads
属*,手动设置进度中的线程数限制。

  注意:协助线程是用来拍卖 ASP.NET 诉求的,而 IO
线程则是用认为来自文件、数据库或 XML Web services
的数量提供服务的。分配给那个属性的值是进程中每一个 CPU
每类线程的最大数据。对于双处理器计算机,最大数是设置值的两倍。对于各管理器计算机,最大值是设置值的四倍。无论怎么着,对于有八个或多个CPU
的Computer,最佳退换暗中同意值。对于有三个或多个计算机的Computer,私下认可值就足以,但对此有越多管理器的微型Computer的性子,进度中有一百或两百个线程则弊大于利。注意进程中有太二十十二线程往往会减低服务器的速度,因为额外的上下文沟通导致操作系统将
CPU 周期花在爱慕线程而不是拍卖供给上。

  16. 适用地选拔公共语言运维库的废料回收器和活动内部存款和储蓄器管理

  小心不要给种种乞求分配过多内部存储器,因为这么垃圾回收器将必须更频仍地伸开越多的办事。其余,不要让不必要的指针指向对象,因为它们将使对象保证活动状态,并且应尽量防止含
Finalize 方法的靶子,因为它们在后头会促成越多的工作。极其是在 Finalize
调用中永世不要释放能源,因为能源在被垃圾回收器回收从前大概直接消耗着内部存款和储蓄器。最终这几个主题材料常常会对
Web 服务器情况的习性产生毁灭性的打击,因为在等候 Finalize
运营时,很轻巧耗尽某些特定的财富。

      17. 万一有重型 Web 应用程序,可怀想实践预批编写翻译

  每当发生对目录的首次呼吁时都会实践批编写翻译。假使目录中的页面未有被解析并编写翻译,此意义会成批剖判并编写翻译目录中的全数页面,以便更加好地行使磁盘和内存。假设这亟需十分长日子,则将高速分析并编译单个页面,以便央求能被处理。此意义带给
ASP.NET
质量上的益处,因为它将洋洋页面编写翻译为单个程序集。从已加载的次第集访问一页比每页加载新的程序集要快。批编写翻译的通病在于:假使服务器收到到众多对未有编写翻译的页面包车型地铁乞请,那么当
Web
服务器剖判并编写翻译它们时,品质大概较差。为焚薮而田这几个主题素材,能够实施预批编写翻译。为此,只需在应用程序激活在此以前向它诉求一个页面,无论哪页均可。然后,当用户第壹回访问您的站点时,页面及其程序集将已被编译。未有轻松的建制得以领略批编写翻译曾几何时发生。需一贯等到
CPU 空闲或然尚未更加的多的编写翻译器进度(举个例子 csc.exe(C# 编译器)或
vbc.exe(Visual Basic 编写翻译器))运维。还应尽量防止改动应用程序的 \bin
目录中的程序集。改造页面会形成重新分析和编写翻译该页,而替换 \bin
目录中的程序集则会产生全盘重复批编写翻译该目录。在包括众多页面包车型客车布满站点上,越来越好的方法也许是依据安顿替换页面或程序集的往往程度来设计分歧的目录结构。不经常改动的页面能够储存在一样目录中并在特定的光阴开始展览预批编写翻译。日常转移的页面应在它们自身的目录中(各样目录最多几百页)以便急速编写翻译。Web
应用程序能够包罗众多子目录。批编写翻译发生在目录级,而不是行使程序级。

  18. 绝不借助代码中的万分

  因为非常的大大地下落品质,所以你不应有将它们用作决定寻常程序流程的格局。假诺有非常大可能率检查评定到代码中也许引致卓殊的情形,请实施这种操作。不要在拍卖该情形从前捕获格外自身。常见的方案包括:检查
null,分配给将分析为数字值的 String
两个值,或在选择数学生运动算前检查特定值。上边的示范演示恐怕导致极度的代码以及测试是或不是留存某种境况的代码。两个爆发一样的结果。

  try   {   result = 100 / num;   }   catch (Exception e)
  {   result = 0;   }   // …to this.   if (num != 0)
  result = 100 / num;   else   result = 0;

  19. 选用 HttpResponse.Write 方法开始展览字符串串联

  该形式提供丰裕有效的缓冲和连接服务。可是,假诺你正在实行遍布的连天,请使用五个Response.Write 调用。上面示例中展现的技巧比用对 Response.Write
方法的单个调用连接字符串更快。

  Response.Write(“a”);   Response.Write(myString);
  Response.Write(“b”);   Response.Write(myObj.ToString());
  Response.Write(“c”);   Response.Write(myString2);
  Response.Write(“d”); 20.
唯有有破例的因由要关闭缓冲,不然使其保持开荒

  禁止使用 Web 窗体页的缓冲会导致多量的习性开支。

  

  21. 只在供给时保留服务器控件视图状态

  自动视图状态管理是服务器控件的意义,该意义使服务器控件能够在来回进度上再一次填写它们的属性值(您无需编写制定任何代码)。不过,因为服务器控件的视图状态在隐身的窗体字段中来回于服务器,所以该意义确实会对质量发生潜移默化。您应该了然在怎么处境下视图状态会具备帮忙,在如何情状下它影响页的习性。譬喻,要是您将服务器控件绑定到各种往返进程上的多寡,则将用从数据绑定操作得到的新值替换保存的视图状态。在这种景色下,禁用视图状态能够节约管理时间。暗中同意情状下,为保有服务器控件启用视图状态。若要禁止使用视图状态,请将控件的EnableViewState
属性设置为 false,如上面包车型大巴 DataGrid 服务器控件示例所示。

  您还足以应用 @ Page
指令禁止使用全体页的视图状态。当你不从页回发到服务器时,那将十二分使得:

 

  注意:@ Control 指令中也辅助 EnableViewState
属*,该指令允许你决定是不是为用户控件启用视图状态。若要剖析页上服务器控件使用的视图状态的数据,请(通过将
trace=”true” 属性包含在 @ Page 指令中)启用该页的追踪并查阅 Control
Hierarchy 表的 Viewstate 列。有关追踪和怎么着启用它的音信,请参见 ASP.NET
追踪。

  22. 幸免到服务器的不供给的来往进度

  固然你很可能希望尽也许多地行使 Web
窗体页框架的这几个节省时间和代码的法力,但在好几意况下却不宜选择 ASP.NET
服务器控件和回发事件管理。平时,只有在寻觅或存款和储蓄数据时,您才必要运维到服务器的往返进程。多数数额操作可在这个往返进程间的客户端上开始展览。比方,从
HTML
窗体验证用户输入平常可在多少提交到服务器从前在客户端进行。平常,要是无需将消息传送到服务器以将其积存在数据库中,那么你不应有编写导致往返进程的代码。假使您支付自定义服务器控件,请思考让它们为支撑
ECMAScript.
的浏览器显示客户端代码。通过以这种方式利用服务器控件,您能够明显地裁减消息被不须要的发送到
Web 服务器的次数。

  使用 Page.IsPostBack 幸免对过往进度实施不供给的拍卖

  假若你编写管理服务器控件回发处理的代码,一时恐怕必要在第三次呼吁页时实践其余代码,而不是当用户发送包括在该页中的
HTML 窗体时实行的代码。根据该页是不是是响应服务器控件事件生成的。

  使用 Page.IsPostBack 属性有规范化地实施代码

  举个例子,上面包车型客车代码演示怎么着成立数据库连接和下令,该命令在第贰遍呼吁该页时将数据绑定到
DataGrid 服务器控件。

  void Page_Load(Object sender, EventArgs e)   {   // Set up a
connection and command here.   if (!Page.IsPostBack)   {   String
query = “select * from Authors where FirstName like ‘%JUSTIN%'”;
  myCommand.Fill(ds, “Authors”);   myDataGrid.DataBind();   }
  }

  由于每便乞请时都实践 Page_Load 事件,上述代码检查 IsPostBack
属性是还是不是设置为 false。假设是,则实践代码。假若该属性设置为
true,则不推行代码。注意
假若不运维这种检讨,回发页的一言一动将不退换。Page_Load
事件的代码在推行服务器控件事件在此以前奉行,但唯有服务器控件事件的结果才可能在出口页上海展览中心现。即使不运营该检查,仍将为
Page_Load 事件和该页上的别样服务器控件事件实行拍卖。

  

  23. 当不使用会话状态时禁止使用它

  并不是颇具的应用程序或页都亟待针对于具体用户的对话状态,您应该对任何没有要求会话状态的应用程序或页禁止使用会话状态。
  若要禁止使用页的对话状态,请将 @ Page 指令中的 EnableSessionState
属性设置为 false。比方:

  注意:假若页供给拜访会话变量,但不希图创立或改造它们,则将@ Page
指令中的 EnableSessionState 属性设置为ReadOnly。还足以禁止使用 XML Web
services 方法的对话状态。有关越多消息,请参见使用 ASP.NET 和 XML Web
services 客户端成立的 XML Web
services。若要禁止使用应用程序的对话状态,请在应用程序 Web.config 文件的
sessionstate 配置节上校 mode 属性设置为 off。比如:

  24. 细密挑选对话状态提供程序

  ASP.NET
为存储应用程序的对话数据提供了二种不一样的法子:进度内会话状态、作为
Windows 服务的经过外会话状态和 SQL Server
数据库中的进度外会话状态。每个格局都有和睦的亮点,但进程内会话状态是从那之后速度最快的解决方案。即便只在对话状态中蕴藏一些些易失数据,则提议你使用进度内提供程序。进度外化解方案首要用来跨四个计算机或七个Computer缩放应用程序,或许用于服务器或进度重新运转时不能够丢失数据的意况。有关越多音讯,请参见
ASP.NET 状态管理。

  25. 不采用不须要的Server Control

  ASP.net中,多量的劳务器端控件方便了先后开采,但也也许带来品质的损失,因为用户每操作叁次服务器端控件,就生出二回与劳务器端的过往进程。因而,非须求,应当少使用Server
Control。

  26. ASP.NET应用程序性能测试

  在对ASP.NET应用程序进行质量测试在此以前,应确认保证应用程序未有不当,而且意义精确。具体的质量测试能够运用以下工具实行:Web
Application Strees Tool
(WAS)是Microsoft公布的三个免费测试工具,能够从
Center Test (ACT) 是二个测试工具,附带于Visual
Studio.NET的厂家版中,是Microsoft正式帮忙的web应用程序测试工具。它亦可直观地生成图表结果,作用比WAS多,但不有所多少个客户机同期测试的力量。服务器操作系统”管理工科具”中的”质量”计数器,能够对服务器举办监测以询问应用程序质量。

  结论:

  对于网址开垦人士来讲,在编写制定ASP.NET应用程序时注意品质难点,养成非凡的习于旧贯,升高应用程序品质,至少能够推迟必需的硬件晋级,下降网站的资本。

走访数据库能源须求创设连接、张开连接和倒闭连接多少个操作。那么些进程必要反复与数据库沟通新闻以通过身份验证,相比开支服务器能源。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图