asp.net 异步页面
前几天我没事在图书馆借本··嘿嘿,挺有意思的,另外那天在贴吧看到的一才女的问题突然想到了··就看了看,挺有意思的。
具体总结的内容我今天写出来,肯能有点长,但是对网站绝对有用。
页面的处理默认情况下,处理ASP。NET页面的模型本质上是同步的。这说明,页面的流程是固定的,每一页由一个线程处理,而且线程在处理完前不会释放。服务器线程池中的线程师有限的,一旦服务器用完所有的线程,你就会碰到可恶的“服务器不可用”的错误。甚至在此前,由于等待线程和内务的任务增多,你会发现性能下降。所以,要改善性能,不仅希望尽可能快的处理页面,还要尽快地线程释放回线程池。通常无法显示地控制何时释放线程,但是倘若采用异步处理,就能释放线程,让它从长时间运行的页面脱身。
asp.net 2.0为异步页面引入了一个简单易行的模型,不过一定要理解网页中的异步到底是什么含意,这很重要。从客户浏览器接收到一个请求时,在页面返回给浏览器之前必须处理整个页面。异步页面不允许分阶段的地传输页面,尽管可以将输出缓冲起来 ,但这是两码事。如果想传递部分页面,接下来一步的运行一个任务,然后,再把更多数据发回给客户,这是做不到的。
页面由一个县城从上到下地处理。这一点很重要,因为要由一个线程来负责这个请求,如果一个页面停顿,这可能是因为正在通过一个web服务访问远程数据,请求处理完成之前这个线程是无法释放回服务器。如果大量请求都存在这种情况,服务器就很容易用光所有线程。异步页面则可以缓解这种情况,如果页面在正常处理过程中可能要完成一个长时间运行的任务,可以不再依赖于单线程。需要指出哪些任务需要异步的处理,在在PreRender事件之后,异步任务启动。处理请求的线程释放回线程池,页面请求等待,知道处理可以继续(异步任务完成时就可以继续处理了)。asp.net知道异步任务何时完成(任务开始时它注册了一个委托),所以可以从线程池取一个线程,并继续处理这个页面。
异步处理不光能加快单个页面的处理。而能加快整个网站的速度。线程池中有更多可用线程,这就意味着可以处理更多的请求。·····
看起来是不是很酷·····
这只是目前的理论,等等会操作了,我会接续吧实现方式写出来··这样就更酷了·
相关文档:
刚刚 看到这么一个问题,这里也做个标记:http://topic.csdn.net/u/20080411/14/7b0f9da5-0413-4149-91e9-72c3df3018a3.html?seed=327251592
第一种方式:
//在Visual Studio 2008中调试通过
testPop_Page.aspx:主页面ASPX代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  ......
新建一个默认的ASP.NET MVC2应用程序,系统会默认的生成包含基本功能的应用程序,查看这些生成的代码,可帮助我们理解ASP.NET MVC2。下面是对URL路由的理解,以备忘。
一、Global.asax.cs中的代码:
public class MvcApplication : System.Web.HttpApplication
{
&n ......
1、双击一个数据源控件,将要存储profile的数据库作为数据源加入控件(这个步骤没什么用,只是为了方便大家用控件建立连接,这样不容易出错),建立好之后将design页面的数据源控件删除,你会发现在web.config里还是有一条连接语句,不要删除,我们下面将用到它,如: <connectionStrings>
<add ......
本文将探讨asp.net下实现文件上穿进度条的方法。
一般情况下,要实现上传进度条首先要实现上传文件分块读取,而默认情况下,iis将直接把上传的文件一次读入到内存中,所以本处的难点在于拦截iis的文件上传过程,转而自己的实现方式。所以,我们可以实现一个IHttpModule来处理上传过程。具体的过程是Application_BeginReque ......
IIS 7
IIS7自身有对MVC的支持,部署方法同其他web application基本相同,需要注意的是,mvc 2.0 application在Handler Mappings里面会有MvcHttpHandler,如图:
我使用的是.net 4.0,我看了其他.net 2.0 的web appliation下的Handler Mappings都没有这个handler maping。
注意:.net 3.5以下(包括)的web application p ......