|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于Windows NT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失; 在本篇文章中,咱们将会商编程人员在利用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倍。
专业性的服务。有的ASP商提供垂直型的应用服务,针对某一特定行业提供应用服务。 |
|