Mostefai Mohammed Amine's Blog

Say That I Was Here !

Tutoriel 8.3 : Gestion de l’état

L’objectif de ce tutoriel (module 8) est d’apprendre à utiliser trois mécanismes de gestion de l’état : le cache, les cookies et l’état d’application. Etape 1 : Création d’un compteur de visiteurs en utilisant l’état de l’application L’objectif de cette étape est d’utiliser l’état de l’application pour implémenter un compteur de visiteurs. L’objectif est aussi de faire la différence entre l’état d’une application et l’état d’une session. Ouvrez VS2012 Créez une application ASP.NET vide appelée « TestEtat » Ajoutez une forme web appelée « Default.aspx » Glissez deux composants de type « Literal » dans la page et séparez-les par une balise « <br/> » Ajoutez une classe globale d’application appelée « Global.asax » Dans l’évènement de démarrage « Application_Start », ajoutez le code suivant : 1: Application["visiteurs"] = 0; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Dans le code de démarrage d’une session « Session_Start », ajoutez le code suivant : 1: int visiteurs = (int)Application["visiteurs"]; 2: ++visiteurs; 3: Application["visiteurs"] = visiteurs; 4: Session["code"] = new Random().Next(); Ouvrez la page « Default.aspx » en mode code behind Ajoutez le code suivant dans l’évènement « Page_Load » : int visiteurs = (int)Application["visiteurs"]; ++visiteurs; Application["visiteurs"] = visiteurs; Session["code"] = new Random().Next(); .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Exécutez en appuyant sur « F5 » Remarquez le code de la session et le nombre de visiteurs Ouvrez l’application dans un autre navigateur Remarquez le code de la session et le nombre de visiteurs Revenez sur le navigateur où s’est exécutée l’application en premier Rafraîchissez la page en appuyant sur « F5 » Remarquez que le nombre de visiteurs a changé et que le code de la session est resté le même   Etape 2 : Utilisation du cache L’objectif de cette étape est d’utiliser le cache avec expiration pour cacher une date. Une page simple récupère la date d’aujourd’hui qui est cachée pendant 30 secondes. On remarquera que grâce au cache, la date ne change que chaque 30 secondes. Ajoutez une forme web appelée « CachePage.aspx » Glissez un composant « Literal » sur la page Ouvrez la page en mode code behind Dans l’évènement « Page_Load » de la page, ajoutez ceci : 1: Literal1.Text = GetDate().ToString(); .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Dans la classe « CachePage », ajoutez la méthode suivante : 1: DateTime GetDate() 2: { 3: if (Cache["maintenant"] == null) 4: { 5: Cache.Add("maintenant", DateTime.Now, null, DateTime.Now.AddSeconds(30), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); 6: } 7: return (DateTime)Cache["maintenant"]; 8: } Exécutez en appuyant sur « F5 » Remarquez que la date affichée ne change qu’après 30 secondes en faisant des rafraichissements de la page dans le navigateur Etape 3 : Gestion des cookies L’objectif de cette étape est d’utiliser les cookies pour mémoriser la première visite d’un utilisateur. Ayant une expiration de 30 secondes, cette première visite est réinitialisée chaque 30 secondes. Ajoutez une page appelée « CookiePage.aspx » Glissez un composant de type « Literal » sur la page Ouvrez la page en mode code behind Insérez le code suivant dans l’évènement Page_Load 1: var cookie = Request.Cookies["visite"]; 2: if (cookie != null) 3: { 4: DateTime d = DateTime.Parse(cookie["visite"]); 5: Literal1.Text = string.Format("Heure actuelle : {0}, première visite : {1}", DateTime.Now, d); 6: } 7: else 8: { 9: Literal1.Text = "Bienvenue"; 10: var ck = new HttpCookie("visite"); 11: ck["visite"] = DateTime.Now.ToString(); 12: ck.Expires = DateTime.Now.AddSeconds(30); 13: Response.Cookies.Add(ck); 14: } Dans la première ligne on teste l’existence du cookie. Si il n’existe pas alors il est créé puis rattaché à la réponse. Exécutez en appuyant sur « F5 » Rafraîchissez plusieurs fois en appuyant sur « F5 » dans le navigateur Vérifiez que ça se réinitialise après 30 secondes Pour télécharger le code, cliquez ici