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

asp.net|cache|web|服务器

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

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

[WebMethod(CacheDuration = 5)]

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

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

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

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

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class CachedWebService : System.Web.Services.WebService
{
    [WebMethod(CacheDuration = 5)]
    public DateTime GetGurrentTime()
    {
        return DateTime.Now;
    }
}

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

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

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

<input id="btnInvoke" type="button" value="Invoke" />
<div id="result">
</div>

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

function btnInvoke_onclick() {
    CachedWebService.GetGurrentTime(onCompleted);
}
function onCompleted(result) {
    $('result').innerHTML += result + "<br />";
}

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

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

时间: 2024-09-09 00:15:35

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

在ASP.NET Atlas中调用Web Service—处理错误

asp.net|web|错误 在本系列的上一篇(在ASP.NET Atlas中调用Web Service--介绍及简单应用)中,我们熟悉了Atlas中调用Web Service的最基础方法,但是在实际开发中,仅仅发出请求并等待返回结果是不够的,我们大都需要考虑对错误超时等的处理,也要允许用户取消操作.幸运的是,Atlas对Web Service中的Web Method的封装也充分考虑到了这些需求.让我们举一个Web Method的例子来说明,例如,对于如下的Web Method: public

在ASP.NET Atlas中调用Web Service—批量调用以提高效率

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

在ASP.NET Atlas中调用Web Service

asp.net|web 在前一篇文章(在ASP.NET Atlas中调用Web Service--创建Mashup调用远端Web Service(基础知识以及简单示例))中,我介绍了一些Atlas中对远程Web Service进行Mashup的基础知识,并给出了一个最基础的没有丝毫用处例子.今天再回到这个话题上,我将给出一个更复杂点的,但有一些用处的例子--Yahoo! Weather. 废话到此为止,让我们先熟悉一下Yahoo! Weather服务:Yahoo!在其网站上提供了天气预报服务(h

在ASP.NET Atlas中调用Web Service—直接在ASPX页面上暴露Web Method

asp.net|web|页面 作者:Dflying Chen(http://dflying.cnblogs.com/) 前面的一系列的文章都是直接调用单独的一个Web Service,而在实际项目开发中,特别是在对现有的项目转换中,把页面中的逻辑再提取到专门的Web Service中往往会带来相当多的工作.Atlas充分考虑到了这一点,允许您将服务器端的public方法加上[WebMethod]属性以允许客户端JavaScript的直接调用. 想允许客户端直接调用定义在ASPX页面中的方法,您需

在WebSphere Portlet Factory中调用Web Service

通过 WebSphere Portlet Factory(WPF),开发者非常方便实现 Web Service 和 Portlets 的通信.开发者无需花费大量的时间去学习 SOAP,WSDL,XML schema(xsd) 等 Web Service 技术,使用 WPF 即可开发出健壮.功能强大的 Web Service 和实现对各种风格的 Web Service 的调用.WPF 隐藏了 Web Service 的内部实现细节,通过 WPF 的丰富的构建器自动生成 Web Service 和实

使用Integrated Web Services Client for ILE在ILE程序中调用Web Service 一

IBM Integrated Web Services for i是IBM最新发布的在IBM i上的SOA解决方案,包括Integrated Web Services Server for i和Integrated Web Services Client for ILE两部分.Integrated Web Services Server for i使用户能够将ILE RPG 和 COBOL程序快速部署成Web Services,而Integrated Web Services Client fo

使用Integrated Web Services Client for ILE在ILE程序中调用Web Service 二

什么是Web Service客户端处理器 Web Service客户端处理器(Client Side Handler)是Integrated Web Services Client for ILE提供的一种客户端Web Service调用监听机制,当客户端Stub程序封装好请求SOAP消息准备发送,或者客户端Stub程序接收到响应SOAP消息准备处理时,可以通过客户端Handler机制进行消息监听以及修改SOAP Header信息,然后 Integrated Web Services Clien

Windows Phone开发(47):轻松调用Web Service

原文:Windows Phone开发(47):轻松调用Web Service 众所周知(除了没用过VS的),在VS里面调用Web Service是一件很愉快的事情,不解释,相信很多朋友在以前的项目中肯定也用过WEB服务.同样,在WP中调用Web Service也是非常简单的,你可以不信,反正我绝对信了.   有例子有真相,我们就以http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx 为例,这个Web服

gsoap频繁调用web service问题

问题描述 gsoap频繁调用web service问题 我使用gsoap调用web service,访问比较频繁的时候有时候调用到一半就断开连接. 例如:线程1用gsoap调用web service,数据发送给服务器了,服务器还没有返回数据给我,我又开启一个线程调用web service,这样gsoap好像会自动断开跟web service的连接.(备注:两个线程访问的是web service的同一个方法),如果两个线程访问时间间隔2.5秒,就什么问题都没有.