All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
数据库菜鸟不可不看,简单SQL语句小结_mssql学习_编程技术
调用xsl来解析xml文档(js异步_JavaScript技术_编程技术
Vista安装.NET,2.0开发环境注意事项_.net资料_编程技术
asp.net生成缩略图及给原始图加水印_[Asp.Net教程]
配置Apache2+PHP5+MYSQL5_php资料_编程技术
C#编程中的,New,关键词的几种用法_[Asp.Net教程]
利用SSH工具对服务器进行远程控制_php资料_编程技术
C#教程:线程应用实例
如何实现HTML页面地址栏参数传递与获取_JavaScript技术_编程技术
全面接触SQL语法(2)_mssql学习_编程技术
Reading number is top 10 pictures
30 beautiful school beauty5
网上疯传的一篇小学作文《爸爸也治不了妈妈》
Summer is most suitable for young people to travel in China1
Go to the national museum3
大年初五接财神
29 the belle stars after bath figure1
Take you to walk into the most true north Korea rural1
中国文革时期的色情图片1
这才叫绝色美女1
关于提肛的健身效果
Download software ranking
豪门浪荡史
Jinling thirteen stock
Rio big adventure
美女写真3
Call Of Duty5
Unix video tutorial1
Sora aoi's film--cangkong_Blue.Sky
C#编程思想
传奇私服架设教程
WebService在.NET中的实战应用教学视频 → 第5集
delv published in(发表于) 2014/1/6 9:10:47 Edit(编辑)
在ASP.NET,Atlas中调用Web,Service—批量调用以提高效率_[Asp.Net教程]

在ASP.NET,Atlas中调用Web,Service—批量调用以提高效率_[Asp.Net教程]

在ASP.NET Atlas中调用Web Service—批量调用以提高效率_[Asp.Net教程]























对于Atlas程序,在某些情况下,我们需要在短时间内调用大量的Web Service,例如某个列表中用户快速的点击删除。这时网络带宽,稳定程度等等往往会造成较长时间的延迟。如果可以将这些调用包装成一个单一的请求,那么用户只需忍受一次网络延迟,即可得到处理的结果,也间接的提高了效率。似乎这并不是一个很容易实现的功能,但幸运的是,Atlas中内建了对批量调用Web Service的支持,您所需要的只是在程序中简单设置一下。


  Atlas中每个Web Service的调用请求都有三个优先级:0:高,1:中,2:低,默认值为中。




  在调用的时候您可以通过priority参数(请参考:在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作)指定本次调用的优先级。对于高优先级的调用,Atlas并不应用批量调用,每次都会立即发送该请求;对于中和低优先级的调用,Atlas会将一定时间(请参考下面WebRequestManager的介绍)内的调用包装成一个单独的请求一起发送,或是当待调用的请求达到指定数目(请参考下面WebRequestManager的介绍)时一起发送。其中如果待调用的请求太多,那么会从中挑选中优先级的请求首先调用。




  启用Atlas内建的批量调用Web Service支持,您首先需要在web.config中注册服务器端处理批量调用的handler(默认的Atlas Web Site Template已经启用了这个handler):









  然后在页面的Atlas XML脚本中加入对WebRequestManager的显示声明并设定该页面允许对Web Service的批量调用:







  这里您需要注意的是WebRequestManager的如下三个属性:




  enableBatching:设定该页面是否允许批量调用,默认值为false。这里我们应该设置为true。
batchSize:设定一次批量调用中包含的请求的最大数量,默认值为5。当待调用的请求超过这个设定时,即使未达到batchDelay中的设定时限,也立刻发出该批量请求。




  batchDelay:设定一次批量调用的等待时限。默认值为1000(毫秒)。当等待时限超过这个设定时,即使未达到batchSize中的请求数量,也立刻发出该批量请求。




  如此设定后,页面中的每一个Web Service请求都会应用批量调用。所以,对于单独的一次调用,您应该将其优先级指定为高。




  让我们来看一个实例,首先编写一个Web Service,其中有下述Web Method,两个参数分别代表该任务的顺序(这样我们可以分清任务执行的顺序)以及优先级:




[WebMethod]
public string DoTask(int taskID, int priority)
{
if (priority < 0 || priority > 2)
throw new Exception("priority can only be 0, 1 or 2!");
return string.Format("Task (ID: {0}, Priority: {1}) finished.", taskID, priority);
}




  然后按照开头部分代码在web.config中启用批量调用,并在页面上添加WebRequestManager,不要忘了页面上还需要一个ScriptManager,引用上面定义的Web Service:











  添加HTML标记。其中按钮用来引发批量调用,div用来显示调用结果:




onclick="return invokeTasks_onclick()" />





  最后是JavaScript脚本,调用Web Service:




function invokeTasks_onclick()
{
// clear the output
('result').innerHTML = '';

DoTask(1, 2);
DoTask(1, 1);
DoTask(2, 0);
}
var taskID = 0;
function DoTask(times, priority)
{
for (var i = 0; i < times; ++i)
{
SampleService.DoTask(
taskID++,
priority,
{onMethodComplete: OnComplete, priority: priority }
);
}
}
function OnComplete(result)
{
('result').innerHTML += result + "
";
}




  注意到DoTask()方法接受两个参数:times用来指定调用次数,priority用来指定优先级,并且我们利用了一个全局的变量taskID用来维护一个自增的请求顺序。




  在这个示例中,我们首先调用了一个低优先级的请求,然后一个中优先级的,最后两个高优先级的。由于高优先级不参与批量调用,所以您最先看到的是它们的返回:







  由于中低优先级的总数为2个,尚未达到5,所以在3000毫秒的延时过后才被发送:







  您可以修改invokeTasks_onclick()方法中的调用顺序以及调用数目,分析批量调用的实现方式。






作者:Dflying Chen 来源:博客园












































添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.