Classe avec que des membres et des méthodes statiques pour gérer les statistiques d'un site

Soyez le premier à donner votre avis sur cette source.

Vue 13 666 fois - Téléchargée 1 197 fois

Description

Cette source est juste un exercice de style, suite à un post de coulis dans le forum (http://www.aspfr.com/forum.v2.aspx?ID=570596).
Les statistiques (je stocke la date et le navigateur) sont stockées dans un fichier xml (dont le chemin est dans le web.config? donc pensez à changer ce chemin et à donner les droits qui vont bien? je vous conseille de mettre ce fichier dans le bin de votre webapp).
Le fichier xml est chargé dans un dataset, donc cette source est très facile à adapter si vous voulez utiliser une base de données à la place du fichier xml.
Je sais, c?est tordu comme méthode et pas du tout optimisé, mais pourquoi pas, ça vaut peut-être le coup d?approfondir (en mettant par exemple un dataset en membre statique plutôt qu?un nom de fichier pour éviter de passer notre temps à lire et écrire l?intégralité du fichier xml). Enfin bref, ce n?est qu?un exercice de style, et j?espère que ça va aider un peu coulis.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
Je vais essayer de répondre point par point.
Les "shared inutiles" sont là pour montrer à quoi ça peut servir. Si tu regardes bien, jamais un objet clsStat n'est instancié, la propriété XmlStatPath n'est affectée qu'une seule fois (au démarrage de l'application), le chemin du fichier xml n'est pas mis en session ou sauvegardé ailleurs... et pourtant... a chaque fois qu'on demande où se trouve ce fichier on le trouve... à méditer ;-)
Je ne crée pas un fichier xml à chaque fois que l'application démarre, je le crée s'il n'existe pas (pour bien faire il faudrait vérifier aussi si le fichier existant et correct en le validant avec une dtd ou un schéma).
Pour la suite, le SQL oui (mais quand on poste une source c'est toujours chiant, c'est pour ça que j'utilise souvent du xml comme source de données), les perfs, la sérialisation oui, mais là on est très loin de la source de coulis, et le but n'etait de faire un appli pour gérer les stats, mais juste de s'amuser un peu à partir de sa source en espérant l'aider un peu.

Bonne nuit à toi,

TiK
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Pas mal mais ce qui me gene, c'est surtout pour les perf ... :/ et aussi tout ses trucs shared inutile ...

pourquoi tu initialises le chemin dans le global.asax ? la je comprend pas trop. Tu peux directement recuperer le chemin dans ta sub partial

Dim voDataSet As New DataSet
dim XmlStatPath = System.Configuration.ConfigurationSettings.AppSettings("XmlStatPath").ToString()
voDataSet.ReadXml(XmlStatPath)

ca devrait être bon.

et aussi pourquoi tu créer un nouveau fichier à chaque fois que l'application démarre ? si pendant 15min (par défaut je crois) tu n'as plus aucune session active, l'application s'arrete, et à la prochaine requete tu écrases tes stats :/

Donc le startApplication je le ferais dans le addSession. Si il y a un fichier on charge le dataset sinon on créer si il y a erreur, on supprime et on créer un nouveau fichier.

Mais le mieux est quand meme mettre tout ca dans SQL ... et puis pas besoin de dataset :'( tu créer un simple objet :

public class Stat
{
public string IP;
public string browser;
public Date date;
}

A partir de la si tu bosses avec SQL, tu fais une procédure qui prend en paramètre un objet stat et tu rajoute les 3champs dans la base

sinon tu créer un objet qui hérite de collectionBase

[serializable]
public class statCollection : collectionbase
{
public stat Add(string IP, string browser, Date d) // ajout dans l'arraylist interne
}

Ensuite tu n'as plus qu'a serialiser et enregistrer le xml :)

deja niveau perf ca va etre beaucoup plus leger que le dataset ! et tu peux le binder de la meme facon à un datagrid (il me semble)

En esperant que mon commentaire veuille dire quelque chose ,)

Cyril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.