教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 网站编程教程 · ASP.NET教程 · Asp.NET综合技巧

ASP.NET 2.0页面性能地考虑

学院最新推荐文章
教程推荐
『ASP.NET 2.0页面性能地考虑』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2006-10-18 
一般情况下我们通常在一个页面中,结合页面事件处理模型,按顺序一步一步的声明各个处理过程。这就是所说的同步处理(Synchronous),我们可以很方便的定义页面处理的顺序。同步处理虽然很方便,但在耗时高请求处理的时候就会暴露严重的问题,在一个高并发的网站生产服务器上,由于.net处理是基于所谓的ThreadPool的,而Threadpool中的处理线程又是有限的,如果当前ThreadPool中的线程已经全部用尽,而后继又有不断的大规模请求的话,服务器的性能就会严重的下降,更严重的还会使服务器崩溃。所以我们关心最多的就是怎样来更好的使用的.net ThreadPool。让.net更好的发挥的性能。

  说到这就不得不谈.net的异步处理(Asynchronous),模型一般为BeginXXX,EndXXX,BeginXXX返回一个IAsycResult对象,其中包含对当前异步操作的信息,而EndXXX用户接受返回值,输出参数。.net从ThreadPool中分配一个空闲线程给BeginXXX然后立即返回给ThreadPool,等到异步处理结束时,.net 又从ThreadPool中分配一个空闲线程用于处理EndXXX方法。这样就可能有足够的线程用于处理其它的事情。见于篇幅问题这里我们只谈 ASP.net 2.0的异步处理模型,我们都知道在1.x的时候要很好的建立页面的异步处理是比较麻烦的,可能微软很早就认识到了这一点,所以在2.0的版本中引入的新的页面处理模型,加入了方便的异步处理点(Asynchronous Point)在PreRender事件和PreRenderComplete事件之间,在这个异步点,页面需要等待所有的异步处理都完成,所以可以在页面呈现之前完成你需要的任何效果,极大简化了建立异步页面的方法。

  首先你要在建立页面的@page声明中加入 Async="true",这是必须的。设置告诉ASP.net要选用IHttpAsyncHandler来处理当前的页面。接下来你需要做的一般是在Page_Load事件处理中使用异步处理过程,现在有两种途径:

  第一种就是使用Page.AddOnPreRenderCompleteAsync方法来处理需要异步处理的Begin和End方法集.如下:

AddOnPreRenderCompleteAsync(new BeginEventHandler(MyBeginMethod),new EndEventHandler(myEndMethod));

  通过添加上面的方法后,页面执行通常的生命吀期事件直到页面的PreRender事件触发.然后ASP.net调用先前在 AddOnPreRenderCompleteAsync中的注册的Begin处理程序。通常在Begin处理程序中处理的是一些异步的web服务,IO 以及SQL的处理,这样就可以极大的缓解.net线程池的压力。例如:

<%@ Page Async="true" Language="C#" %>
<ASP:Content ID="Content" ContentPlaceHolderID="Main" Runat="server">
<ASP:Label ID="Output" Runat="server"></ASP:Label>
</ASP:Content>

public partial class AsyncPage : System.Web.UI.Page
{
 private WebRequest m_Request;

 void Page_Load (object sender, EventArgs e)
 {
  AddOnPreRenderCompleteAsync (
   new BeginEventHandler(BeginAsyncOperation),
   new EndEventHandler (EndAsyncOperation)
  );
 }

 IAsyncResult BeginAsyncOperation (object sender, EventArgs e, AsyncCallback cb, object state)
 {
  m_Request = WebRequest.Create("http://www.dofor.cn");
  return m_Request.BeginGetResponse (cb, state);
 }

 void EndAsyncOperation (IAsyncResult ar)
 {
  string text;
  using (WebResponse response = m_Request.EndGetResponse(ar))
  {
   using (StreamReader reader = new StreamReader(response.GetResponseStream()))
   {
    text = reader.ReadToEnd();
   }
  }

  Regex regex = new Regex ("href\\s*=\\s*\"([^\"]*)\"", RegexOptions.IgnoreCase);
  MatchCollection matches = regex.Matches(text);

  StringBuilder builder = new StringBuilder(1024);
  foreach (Match match in matches)
  {
   builder.Append (match.Groups[1]);
   builder.Append("<br/>");
  }

  Output.Text = builder.ToString ();
 }
}

 

[1] [2] 下一页  

】【关闭窗口
·上页:
·下页:
相关文章
     网站编程教程 - Asp.NET综合技巧
普通教程ASP.NET 2.0里面直接将Access数
普通教程ASP.NET模拟其余用户进行关机
普通教程ASP.NET 2.0里面层次数据地处理
普通教程ASP.net里面用axWebBrowser里面
普通教程ASP.NET 2.0服务器控件之客户端
普通教程ASP.NET 2.0里面地Web和HTML服
普通教程ASP.NET 2.0页面框架简要慨述
普通教程怎么样充分运用ASP.NET 2.0预编
普通教程ASP.NET 2.0绘制购物车和支付系
普通教程ASP.NET 2.0程序安全地基本的知
普通教程ASP.NET底层架构探索之ASP.NET
普通教程在ASP.net里面运用OWC绘制统计
精彩图片汇集
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光