Auteur : Dflying Chen ( http://dflying.cnblogs.com/ )
Pour certains services complexes qui prennent beaucoup de temps à être exécutés et qui n'ont pas d'exigences élevées en temps réel, choisir le cache est souvent un moyen efficace d'améliorer l'efficacité. L'implémentation du service Web de .NET prend pleinement en compte la nécessité du cache. Vous n'avez besoin que de paramètres simples pour activer le cache. L'appel au service Web dans Atlas peut également utiliser ce mécanisme de cache pour réduire la surcharge inutile côté serveur.
Pour activer le Cache du Service Web, il vous suffit d'ajouter l'attribut suivant à la déclaration WebMethod :
[WebMethod(CacheDuration = 5)]
où la valeur de CacheDuration représente le temps de Cache, en secondes.
Mais cette méthode Cache est fournie par Web Service, Atlas n'en sait rien, et chaque appel est quand même envoyé au serveur. Par conséquent, ce cache n’a aucun moyen d’améliorer l’impact de la latence du réseau sur les utilisateurs.
Apprenons-en plus sur le cache du service Web à travers un exemple de programme.
Écrivez d'abord un service Web, renvoyez l'heure actuelle et spécifiez CacheDuration sur 5 secondes :
[WebService(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding (ConformsTo = WsiProfiles.BasicProfile1_1)]
classe publique CachedWebService : System.Web.Services.WebService
{
[WebMethod (CacheDuration = 5)]
public DateTime GetGurrentTime()
{
retourner DateTime.Now ;
}
}
Créez ensuite une page Atlas, ajoutez ScriptManager et référencez-y ce service Web :
Ajoutez quelques balises HTML pour appeler ce service Web et afficher les résultats :
La dernière est la partie JavaScript, où nous affichons les résultats de chaque appel sur la page pour une analyse facile :
function btnInvoke_onclick() {
CachedWebService.GetGurrentTime(onCompleted);
}
fonction onCompleted (résultat) {
$('result').innerHTML += résultat + "
";
}
Testons-le dans le navigateur. Après avoir cliqué plusieurs fois sur le bouton, les résultats sont les suivants. Vous pouvez voir le rôle du Cache :
En même temps, vous pouvez voir dans Fiddler que ces requêtes sont réellement envoyées au serveur, et Cache n'est que l'implémentation côté serveur :
Le code source de cet exemple peut être téléchargé ici :