兰色精灵 发表于 2015-1-16 22:50:21

ASP.NET网站制作之ASP.NET编程中的十年夜技能(倡议进精髓)...

对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。在本篇文件中,我们将会商编程职员在利用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倍。对照的了局以下所示:
(图:picture01)


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表格单位中安排服务器控件,并在代码中援用服务器控件。假如必要援用恣意的表格元素,比方指定的单位,则全部表格必需是服务器控件。
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></param>
<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:

<%@Pagelanguage="c#"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键,就能够将该菜单项的快速体例拷贝到桌面上,利用起来会非
http://www.ckuyun.com/
觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊?

若天明 发表于 2015-1-20 05:20:13

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

因胸联盟 发表于 2015-1-28 18:30:29

众所周知,Windows以易用而出名,也因此占据不少的服务器市场。

深爱那片海 发表于 2015-2-5 22:26:22

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。

简单生活 发表于 2015-2-13 22:57:00

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

小魔女 发表于 2015-3-4 03:01:19

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

若相依 发表于 2015-3-11 15:36:41

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

愤怒的大鸟 发表于 2015-3-19 01:27:57

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

只想知道 发表于 2015-3-27 01:11:48

网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
页: [1]
查看完整版本: ASP.NET网站制作之ASP.NET编程中的十年夜技能(倡议进精髓)...