Autor: Dflying Chen ( http://dflying.cnblogs.com/ )
Para alguns serviços complexos que demoram muito para serem concluídos e não possuem altos requisitos em tempo real, escolher o Cache costuma ser uma maneira eficaz de melhorar a eficiência. A implementação do Web Service do .NET considera totalmente a necessidade de Cache. Você só precisa de configurações simples para ativar o Cache. A chamada para Web Service no Atlas também pode usar esse mecanismo de cache para reduzir sobrecarga desnecessária no lado do servidor.
Para habilitar o Cache do Web Service, basta adicionar o seguinte atributo à declaração do WebMethod:
[WebMethod(CacheDuration = 5)]
onde o valor de CacheDuration representa o tempo de Cache, em segundos.
Mas esse método Cache é fornecido pelo Web Service, o Atlas não sabe nada sobre ele e cada chamada ainda é enviada ao servidor. Portanto, não há como esse Cache melhorar o impacto da latência da rede nos usuários.
Vamos aprender mais sobre o cache do serviço da Web por meio de um programa de exemplo.
Primeiro escreva um serviço da Web, retorne a hora atual e especifique CacheDuration como 5 segundos:
[WebService(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
classe pública CachedWebService: System.Web.Services.WebService
{
[WebMethod(CacheDuration = 5)]
público DateTime GetGurrentTime()
{
retornar DateTime.Agora;
}
}
Em seguida, crie uma página Atlas, adicione ScriptManager e faça referência a este Web Service nela:
<atlas:ScriptManager runat="server" ID="scriptManager">
<Serviços>
<atlas:ServiceReference Path="CachedWebService.asmx" />
</Serviços>
</atlas:ScriptManager>
Adicione algumas tags HTML para chamar este Web Service e exibir os resultados:
<input id="btnInvoke" type="button" value="Invoke" onclick="return btnInvoke_onclick()" />
<div id="resultado">
</div>
A última é a parte JavaScript, onde exibimos os resultados de cada chamada na página para facilitar a análise:
function btnInvoke_onclick() {
CachedWebService.GetGurrentTime(onCompleted);
}
função onCompleted(resultado) {
$('resultado').innerHTML += resultado + "<br />";
}
Vamos testá-lo no navegador. Depois de clicar no botão várias vezes, os resultados são os seguintes. Você pode ver a função do Cache:
Ao mesmo tempo, você pode ver no Fiddler que essas solicitações são realmente enviadas ao servidor, e o Cache é apenas a implementação do lado do servidor:
O código fonte deste exemplo pode ser baixado aqui: