2010-01-25 2 views
1

Dans certaines demandes, les données externes doivent être extraites du service de nettoyage. Évidemment, je ne veux pas obtenir ces données à chaque appel pour le même utilisateur.Comment stocker des données temporaires d'une demande à l'autre dans MVC

Quelle est la meilleure pratique pour stocker des données temporaires d'une demande à l'autre? Les données pourraient prendre jusqu'à 10 mégaoctets.

Répondre

1

Si vous avez vraiment besoin de conserver cette quantité de données entre les requêtes Web et que les données sont spécifiques à l'utilisateur, je suggère de les sérialiser et de les stocker dans une base de données temporaire. Si vous utilisez la session du serveur Sql, vous pouvez le faire via l'objet Session, sinon vous devrez en écrire une implémentation personnalisée.

Si les données ne sont pas uniques à l'utilisateur mais peuvent être partagées, vous pouvez les stocker et les récupérer dans le cache des applications.

+0

Le stockage de l'état de la session dans SQL Server semble l'option la plus simple. Ce lien devrait aider http://support.microsoft.com/kb/317604 –

+2

10 méga est trop grand pour l'état de la session, au moins les sessions ne sont pas à utiliser comme ça. – Robert

+0

@Robert - c'est pourquoi j'ai spécifié l'état de session 'Sql server' et non pas 'inproc'! –

0

Une réponse concrète dépend de plus d'informations sur l'application et sur la structure de données. Vous pourriez envisager de mettre les données dans un fichier temporaire. Si la mémoire n'est pas concernée et que vous n'avez pas beaucoup d'utilisateurs parallèles, vous pouvez utiliser l'état de la session.

+0

Ou si vous maintenez votre état de session dans le serveur SQL plutôt que dans la mémoire, vous pouvez l'utiliser plutôt que d'écrire un processus personnalisé pour écrire et récupérer les données. Je suggère de l'enregistrer dans une table temporaire plutôt que d'écrire sur le système de fichiers. –

0

Peut-être le stocker dans un fichier sur le disque sera suffisant, mais alors vous devez créer sa propre implémentation de gestionnaire de fichiers ou quelque chose comme ça.

10Mo pour la session est trop grand mais l'envoyer à la base de données est un gaspillage de ressources. L'enregistrement dans le fichier sera la méthode la plus légère et la plus rapide pour les données temporaires.

+1

L'avantage de l'utilisation de l'état Session Sql est que toutes les méthodes sont déjà là pour sauvegarder, récupérer et effacer les données. Si vous stockez dans le système de fichiers, vous devrez les écrire vous-même et faire très attention à l'espace disque (100 utilisateurs == 1 Go). Vous devrez vous assurer que ces fichiers sont supprimés lorsqu'ils ne sont plus nécessaires. Je ne vois pas vraiment d'avantage à faire ça vous-même. En fin de compte, il serait préférable d'essayer et d'éviter la nécessité de sauvegarder cette quantité de données entre les demandes Web. –

+0

"(100 utilisateurs == 1Gb)" - la même chose pour la base de données. L'écriture de gestionnaire de fichiers qui gère ce scénario n'est pas un problème. – dariol

Questions connexes