ASP.NET编程中的十大技巧第1/2页

在本篇文件中,我们将讨论编程人员在使用ASP.NET开发应用程序时需要注意的10个技巧,这些技巧涉及从缺省的控件、表单名的改变到StringBuilder类的使用,有助于编程人员能够尽快地适应.NET环境。

1、在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字。

.NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或WordPad等任意的文本编辑器进行编辑。如果不愿意,我们并非一定要使用Visual Studio .NET作为集成开发环境。但使用了Visual Studio .NET,我们可以在Windows文件管理器中看到文件,或在Visual Studio .NET之外从文本编辑器中浏览文件的内容。 
使用Visual Studio .NET作为集成开发环境有许多好处,其中最显著的好处是它极大地提高了生产效率。使用Visual Studio. NET,我们能够在付出较小代价的情况下更快地开发软件。作为集成开发环境一部分的IntelliSense提供自动的代码完成、在输入方法或函数时提供动态帮助、语法错误的实时提示,以及其他能够提高生产效率的功能。 
象其他复杂的工具那样,在学会如何充分发挥它的作用和掌握其“习性”前,Visual Studio .NET也会使我们产生一种挫折感。有时,它象一个难以了解的黑盒子,会生成大量的文件和许多无用的代码。 
Visual Studio .NET的一个功能是,无论是类、控件或表单中的对象,它都能够为新对象提供缺省名字。例如,如果我们创建了一个新的ASP.NET Web Application,其缺省的名字将是WebApplication1。我们可以在“新工程”对话框中方便地改变该应用的名字,但同时改变的只是该应用程序的名字空间的名字及其所在的虚拟目录,源代码文件的缺省名字仍然是WebForm1.aspx和WebForm1.aspx.cs(C#工程)或WebForm1.aspx.vb(VB.NET工程)。

我们可以在方案浏览器中改变ASPX和代码使用的文件名字,但Web页类的名字仍然将是WebForm1。如果在该Web表单上生成一个按钮,其缺省的名字将是Button1。事实上,所有控件的名字都是由控件的类型和数字组成的。 
我们能够,也应该将应用程序中所有的表单和控件的名字都修改成有意义的名字。对于较小的演示性程序而言,缺省的名字还能够胜任,但如果应用程序由多个表单,每个表单上有许多按钮和标签时,象frmStartup、frmDataEntry和frmReports这样的表单名就比Form1、Form2和Form3这样的名字更易于理解和维护。 
如果表单上控件要在代码的其他地方引用,使它有一个有意义的名字就更重要了。btnOK、btnCancel和btnPrint这样的名字使看代码的人更容易理解,因而,也比名字为Button1、Button2、Button3这样的控件更容易维护。 
修改一个工程中所有文件中出现的一个名字的一个好方法是,在Visual Studio .NET菜单中依次选择“编辑”->“发现和替换”->“替换”命令。 
在看二周前编写的代码时,我们经常就象第一次见到这些代码一样,因此使它们有一个有助于我们理解其含义的名字是十分有必要的。

2、即使不使用Visual Studio .NET进行编程,使用代码支持文件也有利于提高应用程序的性能

在Web应用程序、Web服务或Web控件等所有的ASP.NET Web工程中,Visual Studio .NET都使用代码支持文件。代码支持文件使工程具有更好的组织、模块性,更适合多人组成的开发团队。另外,它还会带来性能的提高。 
代码支持文件的内容被编译成一个组合文件中的类,一般是一个DLL文件,有时也可以是EXE文件。该文件驻留在应用程序的组合体高速缓冲区中,在应用程序启动时,可以立即得到它。 
如果代码是包含在<script>标记中或ASPX文件代码中,它仍然会被编译成一个Web页类。在这种情况下,每当该网页在应用程序对话中第一次加载时,都需要重新进行编译,被编译的类就会驻留在内存中。每当计算机启动、IIS停止、重新启动或者源代码、配置文件改变时,该文件必须重新编译。尽管不大,但这样引起的性能损耗也是相当可观的。

3、尽量减少表单回送

每当点击Web网页上的Button、LinkButton或ImageButton控件时,表单就会被发送到服务器上。如果控件的AutoPostBack属性被设置为true,如果CheckBox、CheckBoxList等控件的状态被改变后,也会使表单会发送回服务器。 
每次当表单被发送回服务器,就会被重新加载,启动Page_Load事件,执行Page_Load事件处理程序中的所有代码。把网页的初始化代码放在这里是最合适不过的了。我们经常会希望在每次加载网页时执行一些代码,而希望只有在网页第一次加载时执行另一些代码,甚至希望一些代码在除首次加载外的每次加载时执行。 
可以利用IsPostBack特性来完成这一功能。在网页第一次加载时,该属性的值是false。如果网页因回送而被重新加载,IsPostBack属性的值就会被设置为true。通过测试,可以在任意时候执行指定的代码。下面是相关的C#代码: 
protected void Page_Load(Object sender, EventArgs e) 

// 网页每次加载时,执行的一些操作 
if (!IsPostBack) 

// 网页第一次加载时执行的操作 

else 

// 回送时执行的操作 
}

// 网页每次加载时执行的操作 

我们希望尽量不引起回送(每次回送都会要求服务器进行一系列的操作),即使引起回送后。也希望能够执行尽量少的操作。大规模、浪费时间的操作(例如数据库查找)尤其应当避免,因为它们能够延长应用程序的响应时间。

4、使用StringBuilder类

字符串在.NET框架中是不可变的,这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝,这意味着性能还有提高的空间。当进行大量的字符串操作时,使用StringBuilder类就是一种比较好的选择了。 
下面的C#代码测试用二种方式从10000个子字符串中生成字符串所需要的时间。第一次使用了一个简单的字符串串联操作;第二次使用了StringBuilder类。要想查看结果字符串,可以去掉下面的代码中注解行的注解符号:

<%@ Page Language="C#" %>

<script runat="server"> 
void Page_Load(Object Source, EventArgs E) 

int intLimit = 10000; 
DateTime startTime; 
DateTime endTime; 
TimeSpan elapsedTime; 
string strSub; 
string strWhole = "";

// 首先执行字符串连接操作 
startTime = DateTime.Now; 
for (int i=0; i < intLimit; i++) 

strSub = i.ToString(); 
strWhole = strWhole + " " + strSub; 

endTime = DateTime.Now; 
elapsedTime = endTime - startTime; 
lblConcat.Text = elapsedTime.ToString(); 
// lblConcatString.Text = strWhole;

// 使用stringBuilder类进行同样的操作 
startTime = DateTime.Now; 
StringBuilder sb = new StringBuilder(); 
for (int i=0; i < intLimit; i++) 

strSub = i.ToString(); 
sb.Append(" "); 
sb.Append(strSub); 

endTime = DateTime.Now; 
elapsedTime = endTime - startTime; 
lblBuild.Text = elapsedTime.ToString(); 
// lblBuildString.Text = sb.ToString(); 
}

</script>

<html> 
<body> 
<form runat="server">

<h1>String Concatenation Benchmark</h1>

Concatenation: 
<asp:Label 
id="lblConcat" 
runat="server"/>

<br/>

<asp:Label 
id="lblConcatString" 
runat="server"/>

<br/> 
<br/>

StringBuilder: 
<asp:Label 
id="lblBuild" 
runat="server"/>

<br/>

<asp:Label 
id="lblBuildString" 
runat="server"/>

</form> 
</body> 
</html> 
二种方式的差别是相当大的:使用StringBuilder类的Append方法的速度比使用字符串连接的速度快近200倍。比较的结果如下所示: 
(图:picture01)

当前1/2页 12下一页阅读全文

(0)

相关推荐

  • ASP.NET编程中的十大技巧第1/2页

    在本篇文件中,我们将讨论编程人员在使用ASP.NET开发应用程序时需要注意的10个技巧,这些技巧涉及从缺省的控件.表单名的改变到StringBuilder类的使用,有助于编程人员能够尽快地适应.NET环境. 1.在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字. .NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或WordPad等任意的文本编辑器进行编辑.如果不愿意,我们并非一定要使用Visual Studio .NET作

  • ASP.NET编程中的十大技巧

    在本篇文件中,我们将讨论编程人员在使用ASP.NET开发应用程序时需要注意的10个技巧,这些技巧涉及从缺省的控件.表单名的改变到StringBuilder类的使用,有助于编程人员能够尽快地适应.NET环境. 1.在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字. .NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或WordPad等任意的文本编辑器进行编辑.如果不愿意,我们并非一定要使用Visual Studio .NET作

  • python中的十大%占位符对应的格式化的使用方法

    字符串格式化里的符号很多,本文详细的介绍一下,以便随时查找. %s :字符串的格式化,也是最常用的%d :格式化整数,也比较常用%c :格式化字符及ASCII码%u :格式化无符号整型%f :格式化浮点数,可以指定小数后面的精度%e :使用科学计数法格式化浮点数%o :格式化无符号八进制数%x :格式化无符号十六进制数%p :十六进制数格式化变量地址%g :%e和%f的简写 演示一下各个占位符格式化使用时的效果 '''格式化字符串''' var_s = '%s' % '我是一个字符串' prin

  • 让PHP开发者事半功倍的十大技巧小结

    如果你使用一面大镜子作为冲浪板会发生什么?或许你会在较短的时间内征服海浪,但是你肯定从内心深处明白,这不是冲浪的正确选择.同样的道理也适用于PHP编程,尽管这样的类比听起来有一些古怪.我们经常听到有人试图用一个周末多点的时间来学会PHP,但是请恕我直言,这是学习这门编程语言的一种非常糟糕的方式. 为何说学习PHP的过程有别于任何其它语言? 就其本质而言,如果你掌握了以PHP语言"做事"的方式,那么在使用它时就会得心应手,因此值得你去投入精力去了解这些方式.在PHP中,单纯按照自己思路去

  • 通过JDBC连接oracle数据库的十大技巧

    Java数据库连接(JDBC)API是一系列能够让Java编程人员访问数据库的接口,各个开发商的接口并不完全相同.在使用多年的Oracle公司的JDBC后,我积累了许多技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能. 1.在客户端软件开发中使用Thin驱动程序 在开发Java软件方面,Oracle的数据库提供了四种类型的驱动程序,二种用于应用软件.applets.servlets等客户端软件,另外二种用于数据库中的Java存储过程等服务器端软件.在客户机端软件的开发中,我们可以选择

  • ASP.NET编程中经常用到的27个函数集

    ASP.Net是建立在微软新一代.Net平台架构上,利用普通语言运行时(Common Language Runtime)在服务器后端为用户提供建立强大的企业级Web应用服务的编程框架.下面列举了常用的27个ASP.NET中的函数集: 1.DateTime 数字型 复制代码 代码如下: System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.DateTime.Now; 1.2 取当前年

  • 地震发生中逃生十大法则

    地震虽然目前是人类无法避免和控制的,但只要掌握一些技巧,也是可以从灾难中将伤害降到最低的. 1.为了您自己和家人的人身安全请躲在桌子等坚固家具的下面 大的晃动时间约为1分钟左右.这是首先应顾及的是您自己与家人的人身安全.首先,在重心较低.且结实牢固的桌子下面躲避,并紧紧抓牢桌子腿.在没有桌子等可供藏身的场合,无论如何,也要用坐垫等物保护好头部. 2.摇晃时立即关火,失火时立即灭火 大地震时,也会有不能依赖消防车来灭火的情形.因此,我们每个人关火.灭火的这种努力,是能否将地震灾害控制在最小程度的重

  • 站长必知:域名选取的十大技巧

    域名是联接企业和互联网网址的纽带,它像品牌.商标一样具有重要的识别作用,是访问者通达企业网站的"钥匙",是企业在网络上存在的标志,担负着标示站点和导向企业站点的双重作用. 域名对于企业开展电子商务具有重要的作用,它被誉为网络时代的"环球商标",一个好的域名会大大增加企业在互联网上的知名度.因此,企业如何选取好的域名就显得十分重要. 域名选取的原则 在选取域名的时候,首先要遵循两个基本原则. 1.域名应该简明易记,便于输入 这是判断域名好坏最重要的因素.一个好的域名应

  • Python中的十大图像处理工具(小结)

    Python之成为图像处理任务的最佳选择,是因为这一科学编程语言日益普及,并且其自身免费提供许多最先进的图像处理工具.本文主要介绍了一些简单易懂最常用的Python图像处理库. 当今世界充满了各种数据,而图像是其中高的重要组成部分.然而,若想其有所应用,我们需要对这些图像进行处理.图像处理是分析和操纵数字图像的过程,旨在提高其质量或从中提取一些信息,然后将其用于某些方面. 图像处理中的常见任务包括显示图像,基本操作(如裁剪.翻转.旋转等),图像分割,分类和特征提取,图像恢复和图像识别等. Pyt

  • asp.net SAF 中缓存服务的实现第1/5页

    复制代码 代码如下: protected void Page_Load(object sender, EventArgs e)     {         webinfo info = new webinfo();         Response.Write("有static的执行结果:" + webinfo.a + "<br />");         Response.Write("没有static的执行结果:" + info.

随机推荐