仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 857|回复: 9
打印 上一主题 下一主题

[学习教程] NET网页编程之asp.net功能优化的几个方面

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:25:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。c#(或vb.net)程序改善的15点应当注重的中央

1、利用值范例的ToString办法
在毗连字符串时,常常利用"+"号间接将数字增加到字符串中。这类办法固然复杂,也能够失掉准确了局,可是因为触及到分歧的数据范例,数字必要经由过程装箱操纵转化为援用范例才能够增加到字符串中。可是装箱操纵对功能影响较年夜,由于在举行这类处置时,将在托管堆平分配一个新的工具,原本的值复制到新创立的工具中。
利用值范例的ToString办法能够制止装箱操纵,从而进步使用程序功能。
intnum=1;
stringstr="go"+num.ToString();


2、使用StringBuilder类
String类工具是不成改动的,关于String工具的从头赋值在实质上是从头创立了一个String工具并将新值付与该工具,其办法ToString对功能的进步并不是很明显。
在处置字符串时,最好利用StringBuilder类,其.NET定名空间是System.Text。该类并不是创立新的工具,而是经由过程Append,Remove,Insert等办法间接对字符串举行操纵,经由过程ToString办法前往操纵了局。
其界说及操纵语句以下所示:
intnum;
System.Text.StringBuilderstr=newSystem.Text.StringBuilder();//创立字符串
str.Append(num.ToString());//增加数值num
Response.Write(str.ToString);//显现操纵了局


3、利用HttpServerUtility.Transfer办法在统一使用程序的页面间重定向
接纳Server.Transfer语法,在页面中利用该办法可制止不用要的客户端重定向(Response.Redirect)。

4、制止利用ArrayList。
由于任何工具增加到ArrayList都要封箱为System.Object范例,从ArrayList掏出数据时,要拆箱回实践的范例。倡议利用自界说的汇合范例取代ArrayList。asp.net2.0供应了一个新的范例,叫泛型,这是一个强范例,利用泛型汇合就能够制止了封箱和拆箱的产生,进步了功能。

5、利用HashTale取代其他字典汇合范例
(如StringDictionary,NameValueCollection,HybridCollection),寄存大批数据的时分可使用HashTable.

6、为字符串容器声明常量,不要间接把字符封装在双引号""内里。
//制止
MyObjectobj=newMyObject();
obj.Status="ACTIVE";
//保举
conststringC_STATUS="ACTIVE";
MyObjectobj=newMyObject();
obj.Status=C_STATUS;


7、不要用ToUpper(),ToLower()转换字符串举行对照,用String.Compare取代,它能够疏忽巨细写举行对照.
例:
conststringC_VALUE="COMPARE";
if(String.Compare(sVariable,C_VALUE,true)==0)
{
Console.Write("不异");
}

也能够用str==String.Empty大概str.Length==0判别是不是为空。(注重判别输出数据的长度,可避免sql注进式打击)
将String工具的Length属性与0对照是最快的办法,制止不用要的挪用ToUpper或ToLower办法。

8、范例转化Int32.TryParse()优于Int32.Parse()优于Convert.ToInt32()。
倡议.NET1.1下用Int32.Parse();.NET2.0用Int32.TryParse()。
由于:
Convert.ToInt32会把终极的剖析事情代办署理给Int32.Parse;
Int32.Parse会把终极的剖析事情代办署理给Number.ParseInt32;
Int32.TryParse会把终极的剖析事情代办署理给Number.TryParseInt32。

9、假如只是从XML工具读取数据,用只读的XPathDocument取代XMLDocument,能够进步功能
//制止
XmlDocumentxmld=newXmlDocument();
xmld.LoadXml(sXML);
txtName.Text=xmld.SelectSingleNode("/packet/child").InnerText;
//保举
XPathDocumentxmldContext=newXPathDocument(newStringReader(oContext.Value));
XPathNavigatorxnav=xmldContext.CreateNavigator();
XPathNodeIteratorxpNodeIter=xnav.Select("packet/child");
iCount=xpNodeIter.Count;
xpNodeIter=xnav.SelectDescendants(XPathNodeType.Element,false);
while(xpNodeIter.MoveNext())
{
sCurrValues+=xpNodeIter.Current.Value+",";
}


10、制止在轮回体里声明变量,应当在轮回体外声明变量,在轮回体里初始化。

C#程序开辟要遵守的一个基础准绳就是制止不用要的工具创立
//制止
for(inti=0;i<10;i++)
{
SomeClassobjSC=newSomeClass();
}
//保举
SomeClassobjSC=null;
for(inti=0;i<10;i++)
{
objSC=newSomeClass();
}


11、捕捉指定的非常,不要利用通用的System.Exception.
//制止
try
{
<somelogic>
}
catch(Exceptionexc)
{
<Errorhandling>
}

//保举
try
{
<somelogic>
}
catch(System.NullReferenceExceptionexc)
{
<Errorhandling>
}
catch(System.ArgumentOutOfRangeExceptionexc)
{
<Errorhandling>
}
catch(System.InvalidCastExceptionexc)
{
<Errorhandling>
}


12、利用Try...catch...finally时,要在finally里开释占用的资本如毗连,文件流等
否则在Catch到毛病后占用的资本不克不及开释。
try
{}
catch
{}
finally
{
conntion.close();
}


13、不要用Exception把持程序流程
有些程序员大概会利用非常来完成一些流程把持。比方:
try{
result=100/num;
}
Catch(Exceptione)
{
result=0;
}

但实践上,Exception长短常损耗体系功能的。除非需要,不该当利用非常把持来完成程序流程。下面的代码应该写为:
if(num!=0)
result=100/num;
else
result=0;


14、制止利用递回挪用和嵌套轮回,利用他们会严峻影响功能,在不能不用的时分才利用。

15、禁用VB.net和Jscript静态数据范例
应该一直显现地声名变量数据范例,这可以勤俭程序的实行工夫。以往,开辟职员喜好利用VisualBasic、VBScript和JScript的缘故原由之一就是它们所谓“无范例”的性子。变量不必要显式范例声明,并可以复杂地经由过程利用来创立它们。当从一个范例到另外一个范例举行分派时,转换将主动实行。不外,这类便当会年夜年夜伤害使用程序的功能。
如:
为了取得最好的功能,当声明JScript.NET变量时,请为其分派一个范例。
比方,varA:String;
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)java是开放的,相同的工具就会有很多公司在做,加上java已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。
简单生活 该用户已被删除
沙发
发表于 2015-1-18 14:08:42 | 只看该作者
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的工具。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-26 21:39:33 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
爱飞 该用户已被删除
地板
发表于 2015-2-4 22:00:24 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
小妖女 该用户已被删除
5#
发表于 2015-2-10 21:56:26 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
蒙在股里 该用户已被删除
6#
发表于 2015-3-1 16:29:36 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
莫相离 该用户已被删除
7#
发表于 2015-3-10 21:17:04 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
小女巫 该用户已被删除
8#
发表于 2015-3-17 11:08:24 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
因胸联盟 该用户已被删除
9#
发表于 2015-3-17 11:08:26 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
海妖 该用户已被删除
10#
发表于 2015-3-24 08:40:24 | 只看该作者
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 22:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表