仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 997|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之Asp.Net2.0中完成多义务异步页的一点提...

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:49:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……asp.net|异步假如想进修Asp.Net2.0的异步页手艺,那末必定要细心浏览http://www.microsoft.com/china/MSDN/library/default.mspx?mfr=true,而且下载它的源代码细心推测。全文共先容了3种完成异步页的编程模子,且功效一种比一种壮大。过剩的我就未几说了,间接看最初一种模子:利用PageAsyncTask类、RegisterAsyncTask办法、ExecuteRegisteredAsyncTasks办法和TimeoutAsyncOperation办法注册并实行异步义务,并针对长工夫无呼应的情形挪用超时处置办法。原文所供应源码的AsyncPageTask.aspx.cs文件具体示例了利用这个模子完成异步页的办法。
这个模子最年夜的优点在于能够在一次页面哀求中处置多个异步义务,而且还能够用超时处置来制止在实行异步操纵时呈现的无呼应情形。原作者仅仅在Page_Load中注册了一个异步义务,那末我们模仿他的做法,再注册一个异步义务,以下所示:
<%@PageAsync="true"AsyncTimeout="5"Language="C#"MasterPageFile="~/Site.master"AutoEventWireup="true"CodeFile="AsyncPageTask.aspx.cs"Inherits="AsyncPageTask"Title="UntitledPage"%>
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
PageAsyncTasktask=newPageAsyncTask(
newBeginEventHandler(BeginAsyncOperation),
newEndEventHandler(EndAsyncOperation),
newEndEventHandler(TimeoutAsyncOperation),
null
);
PageAsyncTasktask1=newPageAsyncTask(
newBeginEventHandler(BeginAsyncOperation1),
newEndEventHandler(EndAsyncOperation1),
newEndEventHandler(TimeoutAsyncOperation1),
null
);
RegisterAsyncTask(task);
RegisterAsyncTask(task1);
}
}
假如在页面属性AsyncTimeout的划定工夫内失掉异步义务前往的了局,那末页面将依照我们预期的显现。可是假如在实行第一个义务时碰到了小贫苦,延误了工夫会怎样呢?有两种大概:一是,第一个义务的了局终极前往并显现出来,而第二个义务刚一启动就被判断为超时,从而实行了它的TimeoutAsyncOperation办法;二是,第一个义务没有比及前往了局就已被判超时,因而第二个义务也必定被判超时了。以下情况是因为两个异步义务分享了AsyncTimeout划定的工夫,只需后面谁人义务在实行时延误了工夫,一定影响到前面谁人义务的运转。那末能不克不及让两个异步义务独享AsyncTimeout划定的工夫呢,这就要在ExecuteRegisteredAsyncTasks办法上找前途了。
值得注重的是,每次挪用ExecuteRegisteredAsyncTasks时,Asp.net2.0都将重置AsyncTimeout属性,这意味着有大概完成异步义务独享AsyncTimeout划定的工夫。依照今朝程序的写法,假如不显现挪用ExecuteRegisteredAsyncTasks办法,Asp.net2.0会在页面熟命周期中的PreRenderComplete
事务之前主动挪用ExecuteRegisteredAsyncTasks办法来运转这两个注册的异步义务。由于只实行了一次ExecuteRegisteredAsyncTasks却运转了两个义务,那末这两个义务便只好分享AsyncTimeout划定的运转工夫了。因而我对代码做了以下调剂:
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
PageAsyncTasktask=newPageAsyncTask(
newBeginEventHandler(BeginAsyncOperation),
newEndEventHandler(EndAsyncOperation),
newEndEventHandler(TimeoutAsyncOperation),
null
);
PageAsyncTasktask1=newPageAsyncTask(
newBeginEventHandler(BeginAsyncOperation1),
newEndEventHandler(EndAsyncOperation1),
newEndEventHandler(TimeoutAsyncOperation1),
null
);
RegisterAsyncTask(task);
ExecuteRegisteredAsyncTasks();
RegisterAsyncTask(task1);
ExecuteRegisteredAsyncTasks();
}
}
乍一看仿佛有点成绩:第二个ExecuteRegisteredAsyncTasks办法会不会将注册的第一个异步义务又实行一次?实在不会的,由于Asp.net2.0已划定统一个异步办法只会实行一次。因而如许就使两个异步义务独享了运转工夫,制止了相互搅扰。
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。
沙发
发表于 2015-1-28 17:33:47 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
变相怪杰 该用户已被删除
板凳
发表于 2015-2-5 22:21:52 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
老尸 该用户已被删除
地板
发表于 2015-2-13 22:48:35 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
山那边是海 该用户已被删除
5#
发表于 2015-3-4 02:40:33 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
深爱那片海 该用户已被删除
6#
发表于 2015-3-11 15:31:27 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
admin 该用户已被删除
7#
发表于 2015-3-19 01:25:00 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
第二个灵魂 该用户已被删除
8#
发表于 2015-3-27 01:09:17 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 12:58

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表