1、命名规范
避免使用默认名称:在使用Visual Studio .NET时,除了直接或非引用的对象外,不要使用默认提供的名字,创建新的ASP.NET Web Application时,其默认名字是WebApplication1,可以在“新工程”对话框中改变应用名字,但源代码文件的默认名字可能仍是WebForm1.aspx和WebForm1.aspx.cs(C#工程)等,对于表单上的控件,如按钮,其默认名字可能是Button1,应将其修改为有意义的名字,如btnOK、btnCancel等,这样在代码中引用时更容易理解和维护。
修改名称的方法:如果需要修改一个工程中所有文件中出现的某个名字,在Visual Studio .NET菜单中依次选择“编辑”->“发现和替换”->“替换”命令。
2、代码支持文件的使用
提高性能:即使不使用Visual Studio .NET进行编程,使用代码支持文件也有利于提高应用程序的性能,在Web应用程序、Web服务或Web控件等所有的ASP.NET Web工程中,Visual Studio .NET都使用代码支持文件,代码支持文件的内容被编译成一个组合文件中的类,一般是一个DLL文件,该文件驻留在应用程序的组合体高速缓冲区中,在应用程序启动时可立即得到,从而提高了性能。
增强组织性和模块性:代码支持文件使工程具有更好的组织、模块性,更适合多人组成的开发团队。
3、减少表单回送
理解表单回送机制:每当点击Web网页上的Button、LinkButton或ImageButton控件时,表单就会被发送到服务器上,如果控件的AutoPostBack属性被设置为true,或者CheckBox、CheckBoxList等控件的状态被改变后,也会使表单发送回服务器。
利用IsPostBack特性:在网页第一次加载时,IsPostBack属性的值是false;如果网页因回送而被重新加载,IsPostBack属性的值就会被设置为true,通过测试该属性,可以在任意时候执行指定的代码,从而减少不必要的操作。
4、使用StringBuilder类
提高效率:字符串在.NET框架中是不可变的,这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝,当进行大量的字符串操作时,使用StringBuilder类可以提高效率,下面的C#代码测试了用两种方法从10000个子字符串中生成字符串所需要的时间,使用StringBuilder类的Append方法的速度比使用字符串连接的速度快近200倍。
示例代码:
“`c#
<%@ 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>
5、合理使用服务器端控件理解服务器端控件的特性:ASP.NET中新引入了在服务器端运行的Web Server Controls控件,它们由runat属性指示,值为“server”,通过添加runat属性,一般的HTML控件可以被方便地转换到服务器端运行,这种灵活性有一定的代价,每种服务器端控件都会消耗服务器上的资源。根据需求选择控件:除非明确需要,否则应尽量避免使用服务器端控件,如果不需要在代码中引用表格中的元素,可以使用无需进行服务器端处理的HTML表格。 6、区分HyperLink控件和LinkButton控件功能差异:对于Web访问者而言,HyperLink、LinkButton控件看起来相似,但在功能上有较大差异,当用户点击HyperLink控件时,会立即将用户“导航”到目标URL,请求不会回送到服务器上;而LinkButton控件则先将表件发回到服务器,然后再导航到目标URL。适用场景:如果在“到达”目标URL之前需要进行服务器端处理,则使用LinkButton控件;如果无需进行服务器端处理,则可以使用HyperLink控件。 7、注释代码重要性:注释代码是一种良好的编程习惯,不仅仅应当说明代码会执行什么操作,还应当注明原因。不同语言的注释符号:.NET工程中的不同的编程语言都有各自不同的注释符号,例如HTML中使用<!-注释 -->,JavaScript中使用//注释,VBScript、VB.NET中使用'注释,C#中使用//注释,SQL中使用--注释。在服务器控件中注释:在服务器控件的开始和结束标记中没有注释符号,但可以通过使用没有定义的属性来插入注释。 8、跟踪页面执行启用页面跟踪:在ASP.NET中启用页面跟踪非常方便,只需在Page指令中加入Trace="True"属性即可,跟踪信息可以分为页面执行详细情况和自定义跟踪信息两类。页面执行详细情况:包括页面生命周期中各事件列表、控件树列表、Session状态、Application状态、Cookie集合、QueryString集合、服务器变量等信息。自定义跟踪信息:可以通过在页面代码中调用Trace.Write()或Trace.Warn()方法将指定内容写入跟踪信息中的"TraceInformation"节。 9、在服务器端控件中添加客户端属性直接添加:可以直接向服务器端控件添加一些特殊的属性,这类属性不需要服务器端的处理,只需简单的发送至客户端即可,例如HTML属性或自定义属性(可能用于实现某种特定的JavaScript功能),但编译器可能会显示警告。调用内置方法:可以通过调用WebControl.Attributes.Add()方法为控件添加客户端属性,这是最常用的方法。创建自定义控件:如果某个类型的服务器端控件中经常需要添加客户端属性,则可以考虑创建一个继承自该服务器端控件的自定义控件,其中包含特定的客户端属性。 10、表单数据的验证客户端验证与服务器端验证结合:将数据验证任务从服务器端迁移到客户端可以提高用户体验,但客户端验证存在局限性,如浏览器不支持JavaScript或用户关闭了JavaScript功能,比较保险的做法是加入第二重防护,即对用户提交的数据进行服务器端验证。使用ASP.NET验证控件:ASP.NET2.0提供了一系列表单数据验证控件,可以非常轻松地完成客户端及服务器端的双重数据验证任务,但要使服务器端验证功能发挥作用,还需要用到Page.IsValid属性。 FAQsQ1: 为什么建议在ASP.NET编程中避免使用默认名称? A1: 建议避免使用默认名称是因为默认名称通常不具备实际意义,难以理解和维护,通过给应用程序中的所有表单和控件命名有意义且易于理解的名字,可以提高代码的可读性和可维护性。Q2: 如何修改一个工程中所有文件中出现的某个名字? A2: 在Visual Studio .NET菜单中依次选择“编辑”->“发现和替换”->“替换”命令,可以修改一个工程中所有文件中出现的某个名字。Q3: 使用代码支持文件有哪些好处? A3: 使用代码支持文件可以提高应用程序的性能,使工程具有更好的组织、模块性,更适合多人组成的开发团队,代码支持文件的内容被编译成一个组合文件中的类,一般是一个DLL文件,该文件驻留在应用程序的组合体高速缓冲区中,在应用程序启动时可以立即得到它。Q4: 如何减少表单回送? A4: 可以利用IsPostBack特性来减少表单回送,在网页第一次加载时,IsPostBack属性的值是false;如果网页因回送而被重新加载,IsPostBack属性的值就会被设置为true,通过测试该属性,可以在任意时候执行指定的代码,从而减少不必要的操作。Q5: 为什么推荐使用StringBuilder类? A5: 推荐使用StringBuilder类是因为字符串在.NET框架中是不可变的,这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝,当进行大量的字符串操作时,使用StringBuilder类可以提高效率。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1623968.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复