来一篇关于NET的浅谈Asp.Net中的异步与多线程
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。本来一向觉得Asp.Net中的异步就是Ajax中的异步。可让Web界面加载完一部分就显现一部分,经由多方校阅材料后发明Asp.Net的异步基本就不是这么一回事。要懂得Asp.Net2.0中的异步处置历程,就得先分明Page页面的性命周期,具体请拜见本站Asp.Net中Page页的性命周期
1、Asp.net同步处置历程:
1,服务器在吸收到页面哀求后,从线程池平分出一个分派给该线程。
2,该页在实行终了前,该线程一向处于保存形态,以避免该线程分派给别的的哀求。
3,假如该页运算工夫很长,此时该线程一向处于挂起形态。
4,该页完成一个性命周期,该线程得已开释。
此时大概会碰到的成绩就是:线程池中的可用线程是无限的,假如哀求过量,Asp.Net会因503“serverunavailable”毛病使后续哀求失利。
同步哀求中性命周期与线程干系图:
</img>
2、Asp.Net异步处置历程:
1,服务器入手下手吸收asp.net的哀求以后,以后线程当即前往线程池。
2,asp.net挪用注册的BeginEventHandler办法,并当即前往。
3,线程前往到线程池。同时BeginEventHandler办法前往一个IAsyncResult。
4,假如BeginEventHandler办法超时,asp.net会挪用TimeoutHandler办法。
5,假如在划定工夫内前往,asp.net从线程池提取线程并挪用EndGetAsyncData办法。
6,当EndGetAsyncData办法前往以后,asp.net入手下手实行该页性命周期其他的部分。
如许就填补了同步中以后线程一同被挂起的成绩,本来被挂起的线就能够服务于别的的哀求。
异步哀求中性命周期与线程干系图:
注重:如查想让你的Page页撑持异步,必定要设置Page的Async属性为true.
总结:利用好Asp.Net中的异步处置,可使你的程序功能失掉优化。因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。 ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。 在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的 通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。 ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
页:
[1]