|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。asp.net|web 关于Atlas程序,在某些情形下,我们必要在短工夫内挪用大批的WebService,比方某个列表顶用户疾速的点击删除。这时候收集带宽,不乱水平等等常常会形成较长工夫的提早。假如能够将这些挪用包装成一个单一的哀求,那末用户只需忍耐一次收集提早,便可失掉处置的了局,也直接的进步了效力。仿佛这并非一个很简单完成的功效,但侥幸的是,Atlas中内建了对批量挪用WebService的撑持,您所必要的只是在程序中复杂设置一下。
Atlas中每一个WebService的挪用哀求都有三个优先级:0:高,1:中,2:低,默许值为中。
在挪用的时分您能够经由过程priority参数(请参考:在ASP.NETAtlas中挪用WebService――处置毛病,超时和呼应用户的作废操纵)指定本次挪用的优先级。关于高优先级的挪用,Atlas其实不使用批量挪用,每次城市当即发送该哀求;关于中和低优先级的挪用,Atlas会将必定工夫(请参考上面WebRequestManager的先容)内的挪用包装成一个独自的哀求一同发送,或是当待挪用的哀求到达指定命目(请参考上面WebRequestManager的先容)时一同发送。个中假如待挪用的哀求太多,那末会从中选择中优先级的哀求起首挪用。
启用Atlas内建的批量挪用WebService撑持,您起首必要在web.config中注册服务器端处置批量挪用的handler(默许的AtlasWebSiteTemplate已启用了这个handler):
<httpHandlers>
<addverb="*"path="atlasbatchcall.axd"type="Microsoft.Web.Services.MultiRequestHandler"validate="false"/>
</httpHandlers>
然后在页面的AtlasXML剧本中到场对WebRequestManager的显现声明并设定该页面同意对WebService的批量挪用:
<scripttype="text/xml-script">
<pagexmlns:script="http://schemas.microsoft.com/xml-script/2005">
<components>
<webRequestManagerbatchSize="5"enableBatching="true"batchDelay="3000"/>
</components>
</page>
</script>
这里您必要注重的是WebRequestManager的以下三个属性:
enableBatching:设定该页面是不是同意批量挪用,默许值为false。这里我们应当设置为true。
batchSize:设定一次批量挪用中包括的哀求的最年夜数目,默许值为5。当待挪用的哀求凌驾这个设准时,即便未到达batchDelay中的设准时限,也立即收回该批量哀求。
batchDelay:设定一次批量挪用的守候时限。默许值为1000(毫秒)。当守候时限凌驾这个设准时,即便未到达batchSize中的哀求数目,也立即收回该批量哀求。
云云设定后,页面中的每个WebService哀求城市使用批量挪用。以是,关于独自的一次挪用,您应当将其优先级指定为高。
让我们来看一个实例,起首编写一个WebService,个中有下述WebMethod,两个参数分离代表该义务的按次(如许我们能够分清义务实行的按次)和优先级:
[WebMethod]
publicstringDoTask(inttaskID,intpriority)
{
if(priority<0||priority>2)
thrownewException("prioritycanonlybe0,1or2!");
returnstring.Format("Task(ID:{0},Priority:{1})finished.",taskID,priority);
}
然后依照开首部分代码在web.config中启用批量挪用,并在页面上增加WebRequestManager,不要忘了页面上还必要一个ScriptManager,援用下面界说的WebService:
<atlas:ScriptManagerID="scriptManager"runat="server">
<Services>
<atlas:ServiceReferencePath="SampleService.asmx"/>
</Services>
</atlas:ScriptManager>
增加HTML标志。个中按钮用来激发批量挪用,div用来显现挪用了局:
<inputid="invokeTasks"type="button"value="InvokeTaskCalls"/>
<divid="result"/>
最初是JavaScript剧本,挪用WebService:
functioninvokeTasks_onclick()
{
//cleartheoutput
$(result).innerHTML=;
DoTask(1,2);
DoTask(1,1);
DoTask(2,0);
}
vartaskID=0;
functionDoTask(times,priority)
{
for(vari=0;i<times;++i)
{
SampleService.DoTask(
taskID++,
priority,
{onMethodComplete:OnComplete,priority:priority}
);
}
}
functionOnComplete(result)
{
$(result).innerHTML+=result+"<br/>";
}
注重到DoTask()办法承受两个参数:times用来指定挪用次数,priority用来指定优先级,而且我们使用了一个全局的变量taskID用来保护一个自增的哀求按次。
在这个示例中,我们起首挪用了一个低优先级的哀求,然后一其中优先级的,最初两个高优先级的。因为高优先级不介入批量挪用,以是您开始看到的是它们的前往:
因为中低优先级的总数为2个,还没有到达5,以是在3000毫秒的延时事后才被发送:
您能够修正invokeTasks_onclick()办法中的挪用按次和挪用数量,剖析批量挪用的完成体例。
c++是语言,其实C++和java的应用范围根本就不一样的。在java应用的领域内,c++是不合适的。所以微软才搞了C#和Java对抗。 |
|