Accueil     Commander     Clients     Téléchargements     Contacts     I-mode        Offre spéciale
   Hébergement ASP-PHP
      Pack PRO I
      Pack PRO II
      Pack PRO III
   Hébergement .NET
      Pack .NET I
      Pack .NET II
      Pack .NET III
   Revendeurs
      SEMI-DEDIE I
      SEMI-DEDIE II
      SERVEURS DEDIES
   Services
      NOM DE DOMAINE
      HTTPS & SSL
      E-COMMERCE
      SQL SERVEUR
      WEBMAIL
      REFERENCEMENT
   Les + Prosygma
      NOS TARIFS
      LE RESEAU
      ASSISTANCE
   Outils
      WHOIS
      FAQ
      Aide IIS
      Ressource KIT FP
      Composants ASP
     PARTENAIRES
     
     
     

Solutions hébergement
Support Dot NET.
  
  Source : Les laboratoires Microsoft

 

Gestion de l'état de l'application


Utilisation de l'état de l'application

Cet exemple illustre l'utilisation de l'état de l'application pour lire un DataSet dans Application_Start.

 
VB Application2.aspx

Comme il est possible que différents threads accèdent simultanément à une application et à tous les objets qu'elle enregistre, n'enregistrez de préférence que les données rarement modifiées ayant une portée d'application. Idéalement, un objet est initialisé dans l'événement Application_Start et les accès suivants sont en lecture seule.

Dans l'exemple suivant, un fichier est lu dans Application_Start (défini dans le fichier Global.asax) et le contenu est enregistré dans un objet DataView, dans l'état de l'application.


Sub Application_Start()
    Dim ds As New DataSet()

    Dim fs As New FileStream(Server.MapPath("schemadata.xml"),FileMode.Open,FileAccess.Read)
    Dim reader As New StreamReader(fs)
    ds.ReadXml(reader)
    fs.Close()

    Dim view As New DataView (ds.Tables(0))
    Application("Source") = view
End Sub
C# VB JScript  

Dans la méthode Page_Load, DataView est ensuite extrait et utilisé pour remplir un objet DataGrid :


Sub Page_Load(sender As Object, e As EventArgs)
    Dim Source As New DataView  = CType(Application("Source"), DataView)
    ...
    MyDataGrid.DataSource = Source
    ...
End Sub
C# VB JScript  

L'avantage de cette solution est que seule la première demande paie le prix de la récupération des données. Toutes les demandes suivantes utilisent l'objet DataView existant. Comme les données ne sont jamais modifiées après l'initialisation, vous ne devez pas prendre de mesures pour sérialiser l'accès.

Utilisation de l'état de session

L'exemple suivant illustre l'utilisation de l'état de session pour enregistrer les préférences utilisateur volatiles.

 
VB Session1.aspx

Pour fournir des données particulières à un utilisateur pendant une session, elles doivent être enregistrées avec une portée de session. Dans l'exemple suivant, les valeurs des préférences utilisateur sont initialisées dans l'événement Session_Start du fichier Global.asax.


Sub Session_Start()
    Session("BackColor") = "beige"
    ...
End Sub
C# VB JScript  

Dans la page de personnalisation suivante, les valeurs des préférences utilisateur sont modifiées dans le gestionnaire d'événements Submit_Click en fonction des données entrées par l'utilisateur.


Protected Sub Submit_Click(sender As Object, e As EventArgs)
    Session("BackColor") = BackColor.Value
    ...

    Response.Redirect(State("Referer").ToString())
End Sub
C# VB JScript  

Les différentes valeurs sont extraites à l'aide de la méthode GetStyle :


Protected GetStyle(key As String) As String
    Return(Session(key).ToString())
End Sub
C# VB JScript  

La méthode GetStyle est utilisée pour construire des styles propres à la session :

Pour vérifier que les valeurs sont réellement enregistrées avec une portée de session, ouvrez la page exemple à deux reprises, puis modifiez une valeur de la première fenêtre du navigateur et actualisez la deuxième. La deuxième fenêtre adopte les modifications, car les deux instances du navigateur partagent un objet Session commun.

Configuration de l'état de session : Les fonctionnalités de l'état de session peuvent être configurées dans la section <sessionState> d'un fichier web.config. Pour doubler le délai par défaut de 20 minutes, vous pouvez ajouter les informations suivantes au fichier web.config d'une application :

<sessionState timeout="40" />

Par défaut, ASP.NET stocke l'état de session dans le même processus que celui qui traite la demande, comme ASP. Si les cookies ne sont pas disponibles, le traçage d'une session est possible en ajoutant un identificateur de session à l'URL. Cette fonctionnalité peut être activée de la manière suivante :

<sessionState cookieless="true" />

Par défaut, ASP.NET stocke l'état de session dans le même processus que celui qui traite la demande, comme ASP. En outre, ASP.NET peut enregistrer les données de session dans un processus externe qui peut même résider sur un autre ordinateur. Pour activer cette fonctionnalité :

  • Démarrez le service d'état de ASP.NET, soit à l'aide du composant logiciel enfichable Services, soit en exécutant "net start aspnet_state" sur la ligne de commande. Le service d'état écoute par défaut le port 42424. Pour changer de port, modifiez la clé de Registre correspondant au service : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSte\Services\aspnet_state\Parameters\Port
  • Affectez à l'attribut mode de la section <sessionState> la valeur « StateServer ».
  • Configurez l'attribut stateConnectionString à l'aide des valeurs de l'ordinateur sur lequel vous avez démarré aspnet_state.
L'exemple suivant suppose que le service d'état s'exécute sur le même ordinateur que le serveur Web (« localhost ») et utilise le port par défaut (42424) :
<sessionState
  mode="StateServer"
  stateConnectionString="tcpip=localhost:42424"
/>
Remarquez que si vous essayez l'exemple ci-dessus avec ce paramètre, vous pouvez réinitialiser le serveur Web (entrez iisreset sur la ligne de commande) et la valeur de l'état de session est conservée.

Utilisation des cookies côté client

L'exemple suivant illustre l'utilisation de cookies côté client pour enregistrer les préférences utilisateur volatiles.

 
VB Cookies1.aspx

Le stockage de cookies sur le client constitue l'une des méthodes utilisées par l'état de session de ASP.NET pour associer des demandes à des sessions. Les cookies peuvent aussi être utilisés directement pour rendre des données persistantes entre les demandes, mais les données sont ensuite enregistrées sur le client et envoyées au serveur avec chaque demande. Les navigateurs limitent la taille des cookies. Par conséquent, seulement 4 096 octets maximum sont admis avec certitude.

Lorsque les données sont enregistrées sur le client, la méthode Page_Load du fichier cookies1.aspx vérifie si le client a envoyé un cookie. Si ce n'est pas le cas, un nouveau cookie est créé, initialisé et enregistré sur le client :


Protected Sub Page_Load(sender As Object, e As EventArgs)
    If Request.Cookies("preferences1") = Null Then
        Dim cookie As New HttpCookie("preferences1")
        cookie.Values.Add("ForeColor", "black")
        ...
        Response.AppendCookie(cookie)
    End If
End Sub
C# VB JScript  

Sur la même page, une méthode GetStyle est utilisée à nouveau pour fournir les différentes valeurs enregistrées dans le cookie :


Protected Function GetStyle(key As String) As String
  Dim cookie As HttpCookie = Request.Cookies("preferences1")
  If cookie <> Null Then
    Select Case key
      Case "ForeColor"
        Return(cookie.Values("ForeColor"))
      Case ...
    End Select
  End If
  Return("")
End Function
C# VB JScript  

Vérifiez que l'exemple fonctionne correctement en ouvrant la page cookies1.aspx et en modifiant les préférences. Ouvrez la page dans une autre fenêtre. Elle doit appliquer les nouvelles préférences. Fermez toutes les fenêtres du navigateur et ouvrez à nouveau la page cookies1.aspx. Le cookie temporaire doit être supprimé et les valeurs de préférence par défaut doivent être restaurées.

 
VB Cookies2.aspx

Pour qu'un cookie soit conservé entre les sessions, la propriété Expires de la classe HttpCookie doit avoir pour valeur une date future. Le code suivant de la page customization.aspx est identique à l'exemple précédent, à l'exception de l'assignation de Cookie.Expires :


Protected Sub Submit_Click(sender As Object, e As EventArgs)
    Dim cookie As New HttpCookie("preferences2")
    cookie.Values.Add("ForeColor",ForeColor.Value)
    ...
    cookie.Expires = DateTime.MaxValue ' Never Expires

    Response.AppendCookie(cookie)

    Response.Redirect(State("Referer").ToString())
End Sub
C# VB JScript  

Vérifiez si l'exemple fonctionne correctement en modifiant une valeur, en fermant toutes les fenêtres du navigateur et en ouvrant à nouveau cookies2.aspx. La fenêtre doit toujours afficher la valeur personnalisée.

Utilisation de ViewState

Cet exemple illustre l'utilisation de la propriété ViewState pour enregistrer des valeurs propres à la demande.

 
VB PageState1.aspx

ASP.NET fournit la notion, côté serveur, d'un état d'affichage pour chaque contrôle. Un contrôle peut enregistrer son état interne entre les demandes à l'aide de la propriété ViewState d'une instance de la classe StateBag. La classe StateBag fournit une interface de type dictionnaire pour enregistrer les objets associés à une clé de chaîne.

Le fichier pagestate1.aspx affiche un panneau visible et enregistre son index dans l'état d'affichage de la page avec la clé PanelIndex :


Protected Sub Next_Click(sender As Object, e As EventArgs)
    Dim PrevPanelId As String = "Panel" + ViewState("PanelIndex").ToString()
    ViewState("PanelIndex") = CType(ViewState("PanelIndex") + 1, Integer)
    Dim PanelId As String = "Panel" + ViewState("PanelIndex").ToString()
    ...
End Sub
C# VB JScript  

Remarquez que si vous ouvrez la page dans plusieurs fenêtres du navigateur, chaque fenêtre affiche d'abord le panneau contenant son nom. Chaque fenêtre peut naviguer de manière indépendante entre les panneaux.

Résumé de la section

  1. Utilisez des variables d'état de l'application pour enregistrer des données rarement modifiées, mais souvent utilisées.
  2. Utilisez des variables d'état de session pour stocker des données propres à une session ou à un utilisateur. Les données sont enregistrées intégralement sur le serveur. Utilisez ces variables s'il s'agit de données à vie courte, volumineuses ou sensibles.
  3. Enregistrez de petites quantités de données volatiles dans un cookie non persistant. Les données sont enregistrées sur le client, envoyées au serveur à chaque demande et expirent une fois l'exécution du client terminée.
  4. Enregistrez de petites quantités de données non volatiles dans un cookie persistant. Les données sont enregistrées sur le client jusqu'à ce qu'elles expirent et sont envoyées au serveur à chaque demande.
  5. Enregistrez de petites quantités de données propres à la demande dans l'état d'affichage. Les données sont envoyées du serveur au client, et inversement.



Nos serveurs sont désormais des serveurs
Pentium 3 Ghz, 1 Go Ram

 La formule de base est à 10 Euros TTC / mois
Si vous avez des besoins plus spécifiques (composants, espace disque...), nous sommes la pour répondre à vos questions.
Rappel : les frais d'installation sont gratuits


Prosygma élu meilleur site.
 
Trois nouveaux composants ASP sont désormais en place sur toutes nos formules.Il s'agit de ASPIMAGE, ASPPOP3 et ASPMAIL.


La dernière version de Microsoft® .NET Framework contient tout ce qu'il vous faut pour faire fonctionner des applications .NET Framework est disponible sur nos serveurs

Cliquez içi pour commander votre hébergement .Net

Votre nom de domaine en .com, .net ou .org au prix unique : 20 Euros

  Vérifiez la disponibilité d'un nom de domaine