在ASP.NET Atlas中调用Web Service——应用Cache减小服务器开销

作者:Dflying Chen (http://dflying.cnblogs.com/

对于一些复杂的,需要较长时间完成,并且对实时性要求不是很高的服务,选择Cache往往是一个有效的提高效率的方法。.NET的Web Service实现充分考虑了对Cache的需求,您只需要简单的设定即可启用Cache。Atlas中对Web Service的调用也可以利用这一Cache机制,以减少服务器端不必要的开销。

要启用Web Service的Cache,您只需要在WebMethod的声明中添加如下属性:

None.gif [WebMethod(CacheDuration  =   5 )]

其中CacheDuration的值代表Cache的时间,单位为

但这种Cache的方法是Web Service提供的,Atlas对此一无所知,每次调用还是被发送给服务器。所以对于网络上延迟对用户的影响,这种Cache没有办法改善

让我们通过一个示例程序进一步了解Web Service的Cache。

首先编写一个Web Service,返回当前时间,并指定CacheDuration为5秒:

None.gif [WebService(Namespace  =   " http://tempuri.org/ " )]
None.gif[WebServiceBinding(ConformsTo 
=  WsiProfiles.BasicProfile1_1)]
None.gif
public   class  CachedWebService : System.Web.Services.WebService
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    [WebMethod(CacheDuration 
= 5)]
InBlock.gif    
public DateTime GetGurrentTime()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return DateTime.Now;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

然后创建一个Atlas页面,添加ScriptManager并在其中引用这个Web Service:

None.gif < atlas:ScriptManager  runat ="server"  ID ="scriptManager" >
None.gif    
< Services >
None.gif        
< atlas:ServiceReference  Path ="CachedWebService.asmx"   />
None.gif    
</ Services >
None.gif
</ atlas:ScriptManager >

再添加一些HTML标记用来调用这个Web Service并且显示结果:

None.gif < input  id ="btnInvoke"  type ="button"  value ="Invoke"  onclick ="return btnInvoke_onclick()"   />
None.gif
< div  id ="result" >
None.gif
</ div >

最后是JavaScript部分,这里我们将每一次调用的结果都显示到页面上,便于分析:

ExpandedBlockStart.gif ContractedBlock.gif function  btnInvoke_onclick()  dot.gif {
InBlock.gif    CachedWebService.GetGurrentTime(onCompleted);
ExpandedBlockEnd.gif}

ExpandedBlockStart.gifContractedBlock.gif
function  onCompleted(result)  dot.gif {
InBlock.gif    $('result').innerHTML 
+= result + "<br />";
ExpandedBlockEnd.gif}

下面在浏览器中测试一下,在多次点击按钮后,结果如下,可以看到Cache的作用:
cachedws1.JPG 

同时,在Fiddler中可以看到,实际上这些请求还是被发送到了服务器,Cache只是服务器端的实现:
cachedws2.JPG

本示例的源代码可以在此下载:http://files.cnblogs.com/dflying/CachedWebServiceDemo.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值