在ASP.NET Atlas中調用Web Service——應用Cache減小伺服器開銷

來源:互聯網
上載者:User

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

對於一些複雜的,需要較長時間完成,並且對即時性要求不是很高的服務,選擇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" onclick="return btnInvoke_onclick()" />
<div id="result">
</div>

最後是JavaScript部分,這裡我們將每一次調用的結果都顯示到頁面上,便於分析:

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

下面在瀏覽器中測試一下,在多次點擊按鈕後,結果如下,可以看到Cache的作用:
 

同時,在Fiddler中可以看到,實際上這些請求還是被發送到了伺服器,Cache只是伺服器端的實現:

本樣本的原始碼可以在此下載:http://files.cnblogs.com/dflying/CachedWebServiceDemo.zip

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.