|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。功能功能微调提醒
任何编程模子都有罕见的功能缺点,ASP.NET也不破例。本节形貌一些可制止在代码中呈现功能瓶颈的办法。
1.在未利用时禁用会话形态:并不是一切的使用程序或页都请求基于每一个用户的会话形态。假如不必要,可将其完整禁用。这能够经由过程以下页级别指令轻松完成:
<%@PageEnableSessionState="false"%>
注重:假如页必要会见会话变量但不创立或修正它们,请将指令值设置为ReadOnly。还可为XMLWeb服务办法禁用会话形态。请参阅XMLWeb服务一节中的利用工具和外部工具。
2.稳重选择会话形态供应程序:ASP.NET为存储使用程序的会话数据供应了三种分歧的办法:历程内会话形态、作为Windows服务的历程外会话形态和SQL数据库中的历程外会话形态。每种办法都有本人的长处,但历程内会话形态是迄今为止速率最快的办理计划。假如仅在会话形态中存储大批易掉数据,则应利用历程内供应程序。历程外办理计划次要用于Web花圃和Web农场计划,或用于当服务器/历程从头启动时不克不及丧失数据的情形。
3.制止与服务器间的过量往复路程:Web窗体页框架是ASP.NET的最好功效之一,由于它能够明显削减为完成某项义务所需编写的代码量。利用服务器控件和回发事务处置模子的页元素编程会见无疑是最省时的功效。可是,对这些功效的利用存在着得当和不得当的办法,懂得什么时候利用它们是得当的很主要。
使用程序一般仅在检索数据或存储数据时才必要往复于服务器。多半数据操纵可在往复路程间在客户端举行。比方在用户提交数据前,一般能够在客户端考证窗体项。一般,假如不必要将信息中继回服务器,则不该往复于服务器。
假如编写本人的服务器控件,请思索让它们为下级(撑持ECMAScript)扫瞄器出现客户端代码。经由过程接纳“智能”控件,可明显削减对Web服务器的不用要点击次数。
4.利用Page.IsPostback制止往复路程上的分外事情:假如处置服务器控件回发,一般必要在第一次哀求页时实行代码,该代码分歧于引发事务时用于往复路程的代码。假如反省Page.IsPostBack属性,则代码可按前提实行,详细取决因而否有对页的初始哀求或对服务器控件事务的呼应。如许做仿佛很分明,但实践上能够疏忽此项反省而不变动页的举动。比方:
<scriptlanguage="C#"runat="server">
publicDataSetds;
...
voidPage_Load(Objectsender,EventArgse){
//...setupaconnectionandcommandhere...
if(!Page.IsPostBack){
Stringquery="select*fromAuthorswhereFirstNamelike%JUSTIN%";
myCommand.Fill(ds,"Authors");
myDataGrid.DataBind();
}
}
voidButton_Click(Objectsender,EventArgse){
Stringquery="select*fromAuthorswhereFirstNamelike%BRAD%";
myCommand.Fill(ds,"Authors");
myDataGrid.DataBind();
}
</script>
<formrunat="server">
<asp:datagriddatasource=<%#ds.DefaultView%>runat="server"/><br>
<asp:buttononclick="Button_Click"runat="server"/>
</form>
<scriptlanguage="VB"runat="server">
PublicdsAsDataSet
...
SubPage_Load(senderAsObject,eAsEventArgs)
...setupaconnectionandcommandhere...
IfNot(Page.IsPostBack)
DimqueryAsString="select*fromAuthorswhereFirstNamelike%JUSTIN%"
myCommand.Fill(ds,"Authors")
myDataGrid.DataBind()
EndIf
EndSub
SubButton_Click(senderAsObject,eAsEventArgs)
DimqueryAsString="select*fromAuthorswhereFirstNamelike%BRAD%"
myCommand.Fill(ds,"Authors")
myDataGrid.DataBind()
EndSub
</script>
<formrunat="server">
<asp:datagriddatasource=<%#ds.Tables["Authors"].DefaultView%>runat="server"/><br>
<asp:buttononclick="Button_Click"runat="server"/>
</form>
<scriptlanguage="JScript"runat="server">
publicvards:DataSet;
...
functionPage_Load(sender:Object,e:EventArgs):void{
//...setupaconnectionandcommandhere...
if(!Page.IsPostBack){
varquery:String="select*fromAuthorswhereFirstNamelike%JUSTIN%";
myCommand.Fill(ds,"Authors");
myDataGrid.DataBind();
}
}
functionButton_Click(sender:Object,e:EventArgs):void{
varquery:String="select*fromAuthorswhereFirstNamelike%BRAD%";
myCommand.Fill(ds,"Authors");
myDataGrid.DataBind();
}
</script>
<formrunat="server">
<asp:datagriddatasource=<%#ds.DefaultView%>runat="server"/><br>
<asp:buttononclick="Button_Click"runat="server"/>
</form>
Page_Load事务对一切哀求都实行,因而反省了Page.IsPostBack,以便在处置Button_Click事务回发时不实行第一个查询。请注重,即便没有此反省,页的举动也不会改动,由于第一个查询中的绑定会被事务处置程序中的DataBind挪用颠覆。记着,在编写页时会很简单疏忽这个复杂的功能改善。
3.审慎得当地利用服务器控件:只管服务器控件利用起来十分简单,但它其实不老是最好选择。很多情形下,复杂的出现或数据绑定交换能够完成一样的事变。比方:
<scriptlanguage="C#"runat="server">
publicStringimagePath;
voidPage_Load(Objectse</p>写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了.另外大家可以回去问问公司里的小MM.(一般企业里,跟你们交付软件接触得最多的是她们) |
|