仓酷云

标题: ASP.NET编程:浅析ASP.NET编程中十年夜技能仓酷云 [打印本页]

作者: 逍遥一派    时间: 2015-1-18 11:28
标题: ASP.NET编程:浅析ASP.NET编程中十年夜技能仓酷云
据说很厉害,甚至可以把C#也干掉^_^,不过也很复杂,本来C++已经够复杂的。有人甚至还提出把这个东东引进标准,我觉得基本上不可能的。  在本篇文件中,我们将会商编程职员在利用ASP.NET开辟使用程序时必要注重的10个技能,这些技能触及从缺省的控件、表单名的改动到StringBuilder类的利用,有助于编程职员可以尽快地顺应.NET情况。  
  1、在利用VisualStudio.NET时,除间接或非援用的对象外,不要利用缺省的名字。
  .NET带来的优点之一是一切的源代码和设置文件都是纯文本文件,可以利用Notepad或WordPad等恣意的文本编纂器举行编纂。假如不肯意,我们并不是必定要利用VisualStudio.NET作为集成开辟情况。但利用了VisualStudio.NET,我们能够在Windows文件办理器中看到文件,或在VisualStudio.NET以外从文本编纂器中扫瞄文件的内容。  
  利用VisualStudio.NET作为集成开辟情况有很多优点,个中最明显的优点是它极年夜地进步了临盆效力。利用VisualStudio.NET,我们可以在支付较小价值的情形下更快地开辟软件。作为集成开辟情况一部分的IntelliSense供应主动的代码完成、在输出办法或函数时供应静态匡助、语法毛病的及时提醒,和其他可以进步临盆效力的功效。
  象其他庞大的工具那样,在学会怎样充实发扬它的感化和把握其“习惯”前,VisualStudio.NET也会使我们发生一种波折感。偶然,它象一个难以懂得的黑盒子,会天生大批的文件和很多无用的代码。  
  VisualStudio.NET的一个功效是,不管是类、控件或表单中的对象,它都可以为新对象供应缺省名字。比方,假如我们创立了一个新的ASP.NETWebApplication,其缺省的名字将是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如许的控件更简单保护。  
  修正一个工程中一切文件中呈现的一个名字的一个好办法是,在VisualStudio.NET菜单中顺次选择“编纂”->“发明和交换”->“交换”命令。
  在看二周前编写的代码时,我们常常就象第一次见到这些代码一样,因而使它们有一个有助于我们了解其寄义的名字是非常有需要的。
  2、即便不利用VisualStudio.NET举行编程,利用代码撑持文件也有益于进步使用程序的功能
  在Web使用程序、Web服务或Web控件等一切的ASP.NETWeb工程中,VisualStudio.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#代码:
  protectedvoidPage_Load(Objectsender,EventArgse)
  {
  //网页每次加载时,实行的一些操纵
  if(!IsPostBack)
  {
  //网页第一次加载时实行的操纵
  }
  else
  {
  //回送时实行的操纵
  }
  
  //网页每次加载时实行的操纵
  }

  我们但愿只管不引发回送(每次回送城市请求服务器举行一系列的操纵),即便引发回送后。也但愿可以实行只管少的操纵。年夜范围、华侈工夫的操纵(比方数据库查找)特别应该制止,由于它们可以延伸使用程序的呼应工夫。

 4、利用StringBuilder类  
  字符串在.NET框架中是不成变的,这意味着改动字符串的操纵符和办法会前往字符串的改动后的拷贝,这意味着功能另有进步的空间。当举行大批的字符串操纵时,利用StringBuilder类就是一种对照好的选择了。  
  上面的C#代码测试用二种体例从10000个子字符串中天生字符串所必要的工夫。第一次利用了一个复杂的字符串串连操纵;第二次利用了StringBuilder类。要想检察了局字符串,能够往失落上面的代码中注解行的注解标记:
 <%@PageLanguage="C#"%>
  
  <scriptrunat="server">
  voidPage_Load(ObjectSource,EventArgsE)
  {
  intintLimit=10000;
  DateTimestartTime;
  DateTimeendTime;
  TimeSpanelapsedTime;
  stringstrSub;
  stringstrWhole="";
  
  //起首实行字符串联接操纵
  startTime=DateTime.Now;
  for(inti=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;
  StringBuildersb=newStringBuilder();
  for(inti=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>
  <formrunat="server">
  
  <h1>StringConcatenationBenchmark</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倍。
  5、只在需要时利用服务器端控件ASP.NET中新引进了一种在服务器端运转的被称作WebServerControls的控件
  
  在代码中,它们常常经由过程上面的语法被申明:
<asp:TextBoxid="txtLastName"size="40"runat="server"/>

  
它们偶然也被称作ASP控件。服务器端控件是由runat属性唆使的,它的值老是“server”。
  
  经由过程增加runat属性,一样平常的HTML控件能够被很便利地转换到服务器端运转,上面是一个复杂的例子:
<inputtype="text"id="txtLastName"size="40"runat="server"/>

能够经由过程id属性中指定的名字,我们能够援用程序中的控件,能够经由过程编程的体例设置属性和取得值,因而,服务器端处置体例有较年夜的天真性。
  
  这类天真性是有必定价值的。每种服务器端控件城市损耗服务器上的资本。别的,除非控件、网页或使用程序明白地克制viewstate,控件的形态是包括在viewstate的埋没域中,并在每次回送中城市被传送,这会引发严峻的功能下落。
  在这方面的一个很好的例子是,网页上控件表格的使用,假如不必要在代码中援用表格中的元素,则利用无需举行服务器端处置的HTML表格。我们仍旧能够在HTML表格单位中安排服务器控件,并在代码中援用服务器控件。假如必要援用恣意的表格元素,比方指定的单位,则全部表格必需是服务器控件。
    关于Web会见者而言,HyperLink、LinkButton控件是一样的,但它们在功效方面仍旧有较年夜的差别
 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"/>  
  在VisualStudio.NET中对源代码举行正文十分复杂。高亮度显现必要正文的行,然后按Ctrl+K+C组合键增加正文。要删除正文,只需高亮度显现被正文的代码,并按下Ctrl+K+U组合键。
  在C#工程中,我们还能够经由过程在每行的入手下手处利用///输出XML正文大节。在正文大节中,我们可使用上面的XML标志构造正文: 
   <summary></summary>
   <remarks></remarks>
   <param><braram>
   <returns></returns>
   <newpara></newpara>
  要在VisualStudio.NET中检察这些XML正文的格局化的呈报,我们能够起首选择“工具”菜单项,然后选择“创建正文Web网页”菜单项。
8、利用trace办法和trace属性纪录Page目次中网页的实行情形  
  调试程序的一种陈旧的手艺是在程序中的关健点拔出输入语句,一般情形下,输入信息中会包括主要变量的值,相干信息能够输入到屏幕、日记文件大概数据库。
  在ASP.NET中,经由过程利用Page命令中的trace属性,这类调试手艺的利用更复杂了。Page命令是ASPX文件入手下手处的一行代码,它供应编译器的唆使。Page命令中包括一个或多个属性,向编译器供应利用的编程言语、代码撑持文件的地位或要承继的类的名字等信息。
  Page命令中的属性之一是trace,其值多是true或false,上面是一个典范的Page命令,个中的trace属性的值是true:
    
  假如trace属性的值设置为true,由ASPX文件天生的Web页就会显现出来,除网页自己外,关于该页的大批其他信息也会显现出来。这些信息以上面大节的情势显现在一张表格中:  
  ·Request细节供应SessionID、哀求工夫和哀求的形态码。  
  ·TraceInformation包括跟踪日记、网页性命周期中定时间前后按次各个步骤的列表。别的,也能够向个中增加定制信息。  
  ·控件树以一种分条理的体例列出网页上的一切控件,包含每一个控件以字节盘算的巨细。
  ·Cookies汇合列出该网页创立的一切Cookie。
  ·头部汇合HTTP头部和它们的值。  
  ·Server变量与该网页相干的Server情况变量。
  包括在TraceInformation大节中的跟踪日记是最有效的,在这里我们能够拔出本人的跟踪命令。trace类中有2个办法可以在跟踪日记中拔出命令:Trace.Write和Trace.Warn,除Trace.Warn命令用白色字体显现、Trace.Write命令用玄色字体显现外,它们是不异的。上面是跟踪日记的一个屏幕快照,个中包括有几个Trace.Warn命令。
  跟踪日记中最便利的功效是我们能够在开辟和测试过程当中在全部代码中拔出Trace.Write和Trace.Warn语句,而在终极托付使用程序时,能够经由过程改动Page命令中trace属性的值,克制这些命令起感化,而无需在部署使用软件前删除这些输入语句。
 9、利用存储历程  
  微软公司的SQLServer和其他古代干系数据库都利用SQL命令界说和处置查询。一个SQL语句或一系列SQL语句提交给SQLServer,SQLServer会对命令举行剖析,然后创立一个查询企图并对它举行优化,然后实行该查询企图,这都必要大批的工夫。  
  存储历程是一系列被查询处置器预剖析和优化的SQL命令,这些命令会被存储起来,能够失掉疾速地实行。存储历程也被称作sprocs,它能够吸收输出参数,使一个单一的存储历程可以处置较年夜局限的特定的查询。  
  由于sprocs是事后被剖析的,关于庞大的查询更显得主要,其查询企图是事后优化的,因而挪用查询历程比实行不异功效的SQL语句速率要快很多。  
  10、利用.NET命令行  
  .NET命令行工具在命令提醒符窗口中运转。为了任务令可以实行,它必需驻留在命令提醒符确当前目次中,或经由过程设置PATH情况变量。
  .  NETSDK在“启动”菜单上安装一个菜单项,该菜单项可以翻开一个准确设置了PATH情况变量的命令提醒符窗口。我们能够经由过程顺次点击“入手下手”->“程序”->“MicrosoftVisualStudio.NET”->“VisualStudio.NET工具”->“VisualStudio.NET命令提醒符”,启动命令提醒符窗口。
  经由过程在将该菜单项从菜单上拖到桌面上时,同时按Ctrl+C键,就能够将该菜单项的快速体例拷贝到桌面上,利用起来会十分便利。
竟发现没有太大的帮助。总觉得要用起来,感觉到不了位。因为公司机器的原因,一直没有安装vs.net(也从来没有用过)。以前做asp的时候一直用DW(感觉其代码联想功能不错),可现在到了asp.net却不习惯了。
作者: 金色的骷髅    时间: 2015-1-21 07:45
那么,ASP.Net有哪些改进呢?
作者: 分手快乐    时间: 2015-1-30 11:36
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
作者: 第二个灵魂    时间: 2015-1-30 21:43
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
作者: 简单生活    时间: 2015-2-5 07:47
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
作者: 透明    时间: 2015-2-11 07:45
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
作者: 蒙在股里    时间: 2015-3-1 23:40
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
作者: 灵魂腐蚀    时间: 2015-3-11 01:02
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
作者: 精灵巫婆    时间: 2015-3-17 17:10
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
作者: 愤怒的大鸟    时间: 2015-3-24 13:44
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2