20编程21编程爱好者22vb编程,23数控编程24编程中国25编程论坛26编程语言27游戏编程28编程软件下载29编程工具30socket编程31网络编程32编程器33c语言编程,34flash编程35编程软件36数控车床编程37windows编程38编程入门,39windows核心编程40cnc编程41vc 编程,42linux 编程43asp编程44vb编程实例45串口编程46手机编程47编程教程48plc编程,49单片机编程50vc 网络编程51excel编程,52unix网络编程53编程学习,54编程之道55数据库编程56单片机编程器57黑客编程58计算机编程59网页编程60嵌入式编程,61编程高手箴言62flash编程教程63vfp编程64windows网络编程,65编程基础66c语言编程实例67c语言编程软件68vf编程69shell编程,70vb数据库编程71matlab编程,72c语言编程工具73编程思想74php编程,75c编程76jsp编程77电脑编程技巧与维护,78三菱plc编程软件,79vb编程软件下载80pb编程81数控编程实例82asp编程工具,83c专家编程,84win32编程85数控铣床编程86asp.net高级编程,,87vc 数据库编程88vba编程89jsp高级编程90c语言编程宝典,91unix环境高级编程;92编程珠玑93delphi编程94delphi数据库编程95vb编程教程96单片机编程软件
1编程爱好者网站2vb编程网站,3电子商务网站编程4游戏编程网站5最大的编程网站6网站编程软件7可编程逻辑中文网站8网站 编程 语言9网站编程 数据库,10jsp网站编程11asp编程网站12网站编程电子书13好的编程网站,14c语言编程网站15编程门户网站16如何学习网站编程17百度网站的编程语言18vb编程乐园网站指南19wince 编程网站
1asp.net2asp教程,3asp源码4asp免费空间5asp论坛6asp代码7asp源代码8asp下载,9asp源码下载10asp木马11asp.net教程12asp学习13什么是asp14asp空间,15admin.asp dir16asp程序17asp教程下载18asp.net 2.019asp整站程序,20asp文件21十天学会asp22asp入门23asp源程序24asp实例25asp函数26asp服务器27asp.net论坛28asp id,29asp整站下载30asp网站31asp论坛下载32asp源代码下载,33asp整站34asp技术35asp access36asp.net源码37asp简介38asp免费空间申请39asp.net下载,40asp留言板41asp sql42asp 数据库43asp站长助手44asp连接数据库45asp留言本,46asp.net教程下载47asp分页48asp格式49asp论坛程序50asp.net源代码51asp软件52asp模板53asp session54asp语法,55如何打开asp文件56asp解密57asp编程58asp.net实例,59asp实例教程60asp程序下载61asp计数器62asp.net入门,63asp运行环境64asp基础教程65apache asp66asp入门教程,67asp编辑器68asp组件69asp连接access70conn.asp71asp书籍,72asp论文73asp工具74asp文件上传75asp探针76asp原代码下载77asp include78user wantpws.asp79asp split,80asp fso81asp网页制作82printpage.asp83什么是asp.net,84index.asp85asp.net datagrid86asp基础87asp replace88asp代码下载89asp新闻系统
1php论坛2免费php空间,3php下载4php源码5php mysql6php教程7php文件8php空间9apache php10什么是php11apache php mysql12php学习13php论坛下载14iis php15php cms16php入门17php blog18php手册,19php代码20php整站程序21php session22php安装23php源码下载24php配置25php源代码26php cookie27php网站28iis php mysql29php编程30php留言板31php探针32php注入33php.ini34php运行环境35index.php36php教程下载,37php论坛程序38php 文件上传39php服务器40php环境41php 函数;42php格式43php编辑器44php editor45如何打开php文件46php access47十天学会php48php模板49php xml;50php程序51php留言本52php文件怎么打开53php技术54ajax php55php简介56php注入工具57打开php文件58php语言59php mail;60php软件;61免费php mysql空间62php self63php 数组.64php分页,65php nuke66php阅读器67免费php空间申请68国外免费php空间69php程序下载70php 正则表达式71asp php,72php网站管理系统73php程序设计74php是什么文件75php 实例76php 开发工具77php 验证码78php官方网站79php学习资料
1jsp教程2jsp源码3jsp论坛4什么是jsp5jsp源代码6jsp空间7jsp学习8jsp文件9jsp mysql,10jsp入门11jsp连接数据库12jsp技术13eclipse jsp14jsp分页15jsp源代码下载16jsp access17jsp教程下载18jsp开发工具,19jsp代码20jsp简介21jsp环境配置22jsp连接mysql,23jsp实例24免费jsp空间25jsp配置26jsp session,27jsp运行环境28jsp下载29jsp网站30jsp include31jsp编程,32jsp介绍33jsp 数据库34jsp设计35jsp servlet36jsp标签37jsp应用开发详解38jsp 中文39jsp oracle40jsp论文41jsp 文件上传,42jsp高级编程43jsp源码下载44jsp 乱码45jsp开发46jsp分页显示47jsp sql48jsp连接sql49jsp 页面跳转50jsp request51eclipse开发jsp52iis jsp53jsp开发环境54jsp sqlserver,55jsp cookie56jsp服务器57jsp连接access58jsp毕业论文59jsp新闻发布系统60jsp留言板61jsp 电子书62jsp forward63jsp中文网64tomcat jsp65jsp语法66jsp留言本67asp jsp,68jsp import69jsp源程序70jsp基础71jsp毕业设计,72jsp格式73jsp 中文乱码,74jsp开发实例75jsp书籍76jsp论坛下载77jsp 上传,78jsp计数器79jsp 注释80jsp电子教程81jsp 保存用户名密码,82jsp的优点83jsp软件下载84jsp语言85jsp代码下载86jsp blog87jsp 打印88jsp手册

思顿科技-专业网站制作指南、网页设计制作教程、免费网页制作素材下载、免费学习网页制作指南,专业网站建设服务、网站制做指南、免费网页制作指南、网页制作服务、免费空间域名服务、
首页
网页教程
网页素材
收录查询
工具下载
网站欣赏
网站论坛
免费博客
建站服务

ASP.NET编程中的十大技巧
你当前的位置:网站制作指南 --> 技术文档全集 (www.STasp.com)
     在本篇文件中,我们将讨论编程人员在使用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)
  
  
  5、只在必要时使用服务器端控件
  
  ASP.NET中新引入了一种在服务器端运行的被称作WEB SERVER CONTROLS的控件,在代码中,它们经常通过下面的语法被说明:
  
  <ASP:TEXTBOX ID="TXTLASTNAME" SIZE="40" RUNAT="SERVER" />
  它们有时也被称作ASP控件。服务器端控件是由RUNAT属性指示的,它的值总是“SERVER”。
  通过添加RUNAT属性,一般的HTML控件可以被很方便地转换到服务器端运行,下面是一个简单的例子:
  
  <INPUT TYPE="TEXT" ID="TXTLASTNAME" SIZE="40" RUNAT="SERVER" />
  可以通过ID属性中指定的名字,我们可以引用程序中的控件,可以通过编程的方式设置属性和获得值,因此,服务器端处理方式有较大的灵活性。
  
  这种灵活性是有一定代价的。每种服务器端控件都会消耗服务器上的资源。另外,除非控件、网页或应用程序明确地禁止VIEW STATE,控件的状态是包含在VIEW STATE的隐藏域中,并在每次回送中都会被传递,这会引起严重的性能下降。
  在这方面的一个很好的例子是,网页上控件表格的应用,如果不需要在代码中引用表格中的元素,则使用无需进行服务器端处理的HTML表格。我们仍然可以在HTML表格单元中放置服务器控件,并在代码中引用服务器控件。如果需要引用任意的表格元素,例如指定的单元,则整个表格必须是服务器控件。
  
  
  6. HYPERLINK控件、LINKBUTTON控件的差别
  
  对于WEB访问者而言,HYPERLINK、LINKBUTTON控件是一样的,但它们在功能方面仍然有较大的差异。
  当用户点击控件时,HYPERLINK控件会立即将用户“导航”到目标URL,表件不会回送到服务器上。LINKBUTTON控件则首先将表件发回到服务器,然后将用户导航到目标URL。如果在“到达”目标URL之前需要进行服务器端处理,则使用LINKBUTTON控件;如果无需进行服务器端处理,则可以使用HYPERLINK控件。
  
  
  7、注释代码
  
  这一技巧并不是针对ASP.NET的,但它是一个良好的编程习惯。
  注释不仅仅应当说明代码会执行什么操作,还应当注明原因。例如,不要仅仅在注释中说明是在遍历数组,而是要说明遍历数组是根据某一算法计算一个值,除非算法是相当简单的,否则还应当对算法进行简要的说明。
  .NET工程中的不同的编程语言都有各自不同的注释符号,下面是一个简要的说明:
  HTML <!-- 注释 -->
  JAVASCRIPT // 注释
  VBSCRIPT ' 注释
  VB.NET ' 注释
  C# // 注释
  /* 多行内容
  的注释
  */
  SQL -- 注释
  
  在服务器控件的开始和结束标记中没有注释符号,但服务器能够忽略掉所有它不能识别的属性,因此我们能够通过使用没有定义的属性来插入注释。下面是一个例子:
  
  <ASP:TEXTBOX
  ID="TXTLASTNAME"
  SIZE="40"
  COMMENT="这是我的注释"
  RUNAT="SERVER" />
  在VISUAL STUDIO .NET中对源代码进行注释非常简单。高亮度显示需要注释的行,然后按CTRL+K+C组合键添加注释。要删除注释,只需高亮度显示被注释的代码,并按下CTRL+K+U组合键。
  在C#工程中,我们还可以通过在每行的开始处使用///输入XML注释小节。在注释小节中,我们可以使用下面的XML标记组织注释:
  <SUMMARY></SUMMARY>
  <REMARKS></REMARKS >
  <PARAM></PARAM>
  <RETURNS></RETURNS>
  <NEWPARA></NEWPARA>
  要在VISUAL STUDIO .NET中查看这些XML注释的格式化的报告,我们可以首先选择“工具”菜单项,然后选择“建立注释WEB网页”菜单项。
  
  
  8、使用TRACE方法和TRACE属性记录PAGE目录中网页的执行情况
  
  调试程序的一种古老的技术是在程序中的关健点插入输出语句,通常情况下,输出信息中会包含重要变量的值,相关信息可以输出到屏幕、日志文件或者数据库。
  在ASP.NET中,通过使用PAGE命令中的TRACE属性,这种调试技术的使用更简单了。PAGE命令是ASPX文件开始处的一行代码,它提供编译器的指示。PAGE命令中包含一个或多个属性,向编译器提供使用的编程语言、代码支持文件的位置或要继承的类的名字等信息。
  PAGE命令中的属性之一是TRACE,其值可能是TRUE或FALSE,下面是一个典型的PAGE命令,其中的TRACE属性的值是TRUE:
  
  <%@ PAGE LANGUAGE="C#" TRACE="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命令。
  
  跟踪日志中最方便的功能是我们可以在开发和测试过程中在整个代码中插入TRACE.WRITE和TRACE.WARN语句,而在最终交付应用程序时,可以通过改变PAGE命令中TRACE属性的值,禁止这些命令起作用,而无需在部署应用软件前删除这些输出语句。
  
  
  9、使用存储过程
  
  微软公司的SQL SERVER和其他现代关系数据库都使用SQL命令定义和处理查询。一个SQL语句或一系列SQL语句提交给SQL SERVER,SQL SERVER会对命令进行解析,然后创建一个查询计划并对它进行优化,然后执行该查询计划,这都需要大量的时间。
  存储过程是一系列被查询处理器预解析和优化的SQL命令,这些命令会被存储起来,可以得到快速地执行。存储过程也被称作SPROCS,它可以接收输入参数,使一个单一的存储过程能够处理较大范围的特定的查询。
  因为SPROCS是预先被解析的,对于复杂的查询更显得重要,其查询计划是预先优化的,因此调用查询过程比执行相同功能的SQL语句速度要快得多。
  
  
  10、使用.NET命令行
  
  .NET命令行工具在命令提示符窗口中运行。为了使命令能够执行,它必须驻留在命令提示符的当前目录中,或通过设置PATH环境变量。
  .NET SDK在“启动”菜单上安装一个菜单项,该菜单项能够打开一个正确设置了PATH环境变量的命令提示符窗口。我们可以通过依次点击“开始”->“程序”->“MICROSOFT VISUAL STUDIO .NET”->“VISUAL STUDIO .NET工具”->“VISUAL STUDIO .NET命令提示符”,启动命令提示符窗口。
  通过在将该菜单项从菜单上拖到桌面上时,同时按CTRL+C键,就可以将该菜单项的快捷方式拷贝到桌面上,使用起来会非常方便。
 
| 关于我们 | 联系我们 | 业务合作 | 友情链接 | 网站地图 |
版权所有©思顿科技-专业网站制作指南2004-2006 在线技术支持- QQ:63127313