




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编写ASP.NET 应用程序的十大技巧 1、在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字 .NET 带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad 或WordPad 等任意的文本编辑器进行编辑。如果不愿意,我们并非一定要使用VisualStudio .NET 作为集成开发环境。但使用了Visual Studio .NET ,我们可以在Windows 文件管理器中看到文件,或在Visual Studio .NET之外从文本编辑器中浏览文件的内容。 使用Visual Studio .NET作为集成开发环境有许多好处,其中最显
2、著的好处是它极大地提高了生产效率。使用Visual Studio. NET,我们能够在付出较小代价的情况下更快地开发软件。作为集成开发环境一部分的IntelliSense 提供自动的代码完成、在输入方法或函数时提供动态帮助、语法错误的实时提示,以及其他能够提高生产效率的功能。象其他复杂的工具那样,在学会如何充分发挥它的作用和掌握其“习性”前,Visual Studio .NET 也会使我们产生一种挫折感。有时,它象一个难以了解的黑盒子,会生成大量的文件和许多无用的代码。Visual Studio .NET的一个功能是,无论是类、控件或表单中的对象,它都能够为新对象提供缺省名字。例如,如果我们创
3、建了一个新的ASP.NET Web Application,其缺省的名字将是WebApplication1。我们可以在“新工程”对话框中方便地改变该应用的名字,但同时改变的只是该应用程序的名字空间的名字及其所在的虚拟目录,源代码文件的缺省名字仍然是WebForm1.aspx 和WebForm1.aspx.cs(C#工程 或WebForm1.aspx.vb(VB.NET工程 。 我们可以在方案浏览器中改变ASPX 和代码使用的文件名字,但Web 页类的名字仍然将是WebForm1。如果在该Web 表单上生成一个按钮,其缺省的名字将是Button1。事实上,所有控件的名字都是由控件的类型和数字组成
4、的。我们能够,也应该将应用程序中所有的表单和控件的名字都修改成有意义的名字。对于较小的演示性程序而言,缺省的名字还能够胜任,但如果应用程序由多个表单,每个表单上有许多按钮和标签时,象frmStartup 、frmDataEntry 和frmReports 这样的表单名就比Form1、Form2和Form3这样的名字更易于理解和维护。如果表单上控件要在代码的其他地方引用,使它有一个有意义的名字就更重要了。btnOK 、btnCancel 和btnPrint 这样的名字使看代码的人更容易理解,因而,也比名字为Button1、Button2、Button3这样的控件更容易维护。修改一个工程中所有文件
5、中出现的一个名字的一个好方法是,在Visual Studio.NET 菜单中依次选择“编辑”->“发现和替换”->“替换”命令。 在看二周前编写的代码时,我们经常就象第一次见到这些代码一样,因此使它们有一个有助于我们理解其含义的名字是十分有必要的。2、即使不使用Visual Studio .NET进行编程,使用代码支持文件也有利于提高应用程序的性能在Web 应用程序、Web 服务或Web 控件等所有的ASP.NET Web工程中,Visual Studio .NET都使用代码支持文件。代码支持文件使工程具有更好的组织、模块性,更适合多人组成的开发团队。另外,它还会带来性能的提高。代
6、码支持文件的内容被编译成一个组合文件中的类,一般是一个DLL 文件,有时也可以是EXE 文件。该文件驻留在应用程序的组合体高速缓冲区中,在应用程序启动时,可以立即得到它。如果代码是包含在< script>标记中或ASPX 文件代码中,它仍然会被编译成一个Web 页类。在这种情况下,每当该网页在应用程序对话中第一次加载时,都需要重新进行编译,被编译的类就会驻留在内存中。每当计算机启动、IIS 停止、重新启动或者源代码、配置文件改变时,该文件必须重新编译。尽管不大,但这样引起的性能损耗也是相当可观的。3、尽量减少表单回送每当点击Web 网页上的Button 、LinkButton 或I
7、mageButton 控件时,表单就会被发送到服务器上。如果控件的AutoPostBack 属性被设置为true ,如果CheckBox 、CheckBoxList 等控件的状态被改变后,也会使表单会发送回服务器。每次当表单被发送回服务器,就会被重新加载,启动Page_Load事件,执行Page_Load事件处理程序中的所有代码。把网页的初始化代码放在这里是最合适不过的了。我们经常会希望在每次加载网页时执行一些代码,而希望只有在网页第一次加载时执行另一些代码,甚至希望一些代码在除首次加载外的每次加载时执行。可以利用IsPostBack 特性来完成这一功能。在网页第一次加载时,该属性的值是fal
8、se 。如果网页因回送而被重新加载,IsPostBack 属性的值就会被设置为true 。通过测试,可以在任意时候执行指定的代码。下面是相关的C#代码:protected void Page_Load(Object sender,EventArgs e/ 网页每次加载时,执行的一些操作if (!IsPostBack/ 网页第一次加载时执行的操作else/ 回送时执行的操作/ 网页每次加载时执行的操作我们希望尽量不引起回送(每次回送都会要求服务器进行一系列的操作 ,即使引起回送后。也希望能够执行尽量少的操作。大规模、浪费时间的操作(例如数据库查找 尤其应当避免,因为它们能够延长应用程序的响应时间
9、。4、使用StringBuilder 类字符串在.NET 框架中是不可变的,这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝,这意味着性能还有提高的空间。当进行大量的字符串操作时,使用StringBuilder 类就是一种比较好的选择了。下面的C#代码测试用二种方式从10000个子字符串中生成字符串所需要的时间。第一次使用了一个简单的字符串串联操作; 第二次使用了StringBuilder 类。要想查看结果字符串,可以去掉下面的代码中注解行的注解符号:< % Page Language=”C#” %>< script runat=”server ”>void
10、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
11、;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 = DateTim
12、e.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
13、 ”/> < 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> 二种方式的差别是相当大的:使用StringBuil
14、der 类的Append 方法的速度比使用字符串连接的速度快近200倍。5、只在必要时使用服务器端控件ASP.NET 中新引入了一种在服务器端运行的被称作Web Server Controls 的控件,在代码中,它们经常通过下面的语法被说明:< asp:TextBox id=”txtLastName ” size=”40” runat=”server ” /> 它们有时也被称作ASP 控件。服务器端控件是由runat 属性指示的,它的值总是“server ”。通过添加runat 属性,一般的HTML 控件可以被很方便地转换到服务器端运行,下面是一个简单的例子:< input
15、type=”text ” id=”txtLastName ” size=”40” runat=”server ” /> 可以通过id 属性中指定的名字,我们可以引用程序中的控件,可以通过编程的方式设置属性和获得值,因此,服务器端处理方式有较大的灵活性。这种灵活性是有一定代价的。每种服务器端控件都会消耗服务器上的资源。另外,除非控件、网页或应用程序明确地禁止view state ,控件的状态是包含在view state 的隐藏域中,并在每次回送中都会被传递,这会引起严重的性能下降。在这方面的一个很好的例子是,网页上控件表格的应用,如果不需要在代码中引用表格中的元素,则使用无需进行服务器端处
16、理的HTML 表格。我们仍然可以在HTML 表格单元中放置服务器控件,并在代码中引用服务器控件。如果需要引用任意的表格元素,例如指定的单元,则整个表格必须是服务器控件。6. HyperLink控件、LinkButton 控件的差别对于Web 访问者而言,HyperLink 、LinkButton 控件是一样的,但它们在功能方面仍然有较大的差异。当用户点击控件时,HyperLink 控件会立即将用户“导航”到目标URL ,表件不会回送到服务器上。LinkButton 控件则首先将表件发回到服务器,然后将用户导航到目标URL 。如果在“到达”目标URL 之前需要进行服务器端处理,则使用LinkBu
17、tton 控件; 如果无需进行服务器端处理,则可以使用HyperLink 控件。7、注释代码这一技巧并不是针对ASP.NET 的,但它是一个良好的编程习惯。 注释不仅仅应当说明代码会执行什么操作,还应当注明原因。例如,不要仅仅在注释中说明是在遍历数组,而是要说明遍历数组是根据某一算法计算一个值,除非算法是相当简单的,否则还应当对算法进行简要的说明。.NET 工程中的不同的编程语言都有各自不同的注释符号,下面是一个简要的说明:HTML < !- 注释 ->JavaScript / 注释VBScript 注释VB.NET 注释C# / 注释/* 多行内容的注释*/SQL - 注释在服务
18、器控件的开始和结束标记中没有注释符号,但服务器能够忽略掉所有它不能识别的属性,因此我们能够通过使用没有定义的属性来插入注释。下面是一个例子:< asp:TextBox id=”txtLastName ” size=”40” comment=”这是我的注释”runat=”server ” />在Visual Studio .NET中对源代码进行注释非常简单。高亮度显示需要注释的行,然后按Ctrl+K+C组合键添加注释。要删除注释,只需高亮度显示被注释的代码,并按下Ctrl+K+U组合键。在C#工程中,我们还可以通过在每行的开始处使用/输入XML 注释小节。在注释小节中,我们可以使用下
19、面的XML 标记组织注释:< summary>< /summary>< remarks>< /remarks >< param>< /param>< returns>< /returns>< newpara>< /newpara>要在Visual Studio .NET 中查看这些XML 注释的格式化的报告,我们可以首先选择“工具”菜单项,然后选择“建立注释Web 网页”菜单项。8、使用trace 方法和trace 属性记录Page 目录中网页的执行情况调试程序的一种古老的技
20、术是在程序中的关健点插入输出语句,通常情况下,输出信息中会包含重要变量的值,相关信息可以输出到屏幕、日志文件或者数据库。在ASP.NET 中,通过使用Page 命令中的trace 属性,这种调试技术的使用更简单了。Page 命令是ASPX 文件开始处的一行代码,它提供编译器的指示。Page 命令中包含一个或多个属性,向编译器提供使用的编程语言、代码支持文件的位置或要继承的类的名字等信息。 Page 命令中的属性之一是trace ,其值可能是true 或false ,下面是一个典型的Page 命令,其中的trace 属性的值是true :< % Page language=”c#” tra
21、ce=”true ” %>如果trace 属性的值设置为true ,由ASPX 文件生成的Web 页就会显示出来,除了网页本身外,关于该页的大量其他信息也会显示出来。这些信息以下面小节的形式显示在一张表格中: ·Request 细节 提供Session ID、请求时间和请求的状态码。·Trace Information 包含跟踪日志、网页生命周期中按时间先后顺序各个步骤的列表。另外,也可以向其中添加定制信息。·控件树 以一种分层次的方式列出网页上的所有控件,包括每个控件以字节计算的大小。 ·Cookies 集合 列出该网页创建的所有Cookie 。·头部集合 HTTP头部以及它们的值。·Server 变量 与该网页相关的Server 环境变量。包含在Trace Information 小节中的跟踪日志是最有用的,在这里我们可以插入自己的跟踪命令。trace 类中有2个方法能够在跟踪日志中插入命令:Trace.Write 和Trace.Warn ,除了Trace.Warn 命令用红色字体显示、Trace.Write 命令用黑色字体显示外,它们是相同的。下面是跟踪日志的一个屏幕快照,其中包含有几个Trace.Warn 命令。跟踪日志中最方便的功能是我们可以在开发和测试过程中在整个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 橡胶制品采购居间合同范本
- 2025《税务系统检查证采购项目》合同
- 2025年的铁路运输合同范本
- 酒店代运营合作协议
- 工厂出租合同模
- 采购开口合同范本
- 2025建筑材料车辆运输合同 建筑材料车辆运输合同范本
- 2025中型水利枢纽工程承包合同书
- 购房协议书范本模板
- 2025年03月安徽电信传输局分局长公开招聘助理15人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 脚内侧运球变向教案
- 光疗法的课件
- 2024年全国硕士研究生入学统一考试数学(一)真题及解析完整版
- 国开(甘肃)2024年《安全系统工程》形考作业1-4答案
- 凝胶微柱法介绍
- 生物特征识别技术中的安全和隐私
- 社会组织负责人备案表(社团)
- 教育学面试常问问题
- 人力资源许可证制度(服务流程、服务协议、收费标准、信息发布审查和投诉处理)
- 2024年全国中学生天文知识竞赛考试题库(含答案)
- 会阴穴的穴位刺激对疾病的影响
评论
0/150
提交评论