Je voudrais demander votre avis d'expert sur une architecture réalisable en C#.C# conseils d'architecture: méthode pour mettre en cache des données dans une structure?
J'ai un service C# qui répond à une requête d'un utilisateur local sur le réseau local, récupère des paquets de données provenant d'Internet, et croque ces données pour produire des tableaux de données dans une structure. Chaque requête de données prend environ 2 secondes et renvoie 4000 octets. Il pourrait y avoir des dizaines de milliers de demandes par jour. Pour accélérer le tout et réduire la bande passante, j'ai besoin de mettre en cache les résultats de l'analyse des données de sorte que les deuxièmes et ultérieurs accès soient servis instantanément aux autres utilisateurs du réseau local (il pourrait y avoir> 50 utilisateurs).
Contraintes:
- Les données sous-jacentes ne change jamais, à savoir que je n'ont pas à vous soucier des données « sales » (super!).
- Les données que je veux mettre en cache sont une structure assez complexe, contenant des tableaux imbriqués de DateTime, doubles, etc. Les données sont croquées, en utilisant beaucoup de maths, à partir des données provenant d'Internet.
- Je ne peux pas utiliser plus de 100 Mo de mémoire, quelle que soit la quantité de données mises en cache (c'est-à-dire que le cache doit être limité en taille).
- Je ne peux pas indexer les données dans le cache par un index numérique, je dois l'indexer avec une combinaison de date ("AAAA-MM-JJ") et une chaîne d'identification unique ("XXXXXXXX").
- Il doit être rapide, c'est-à-dire qu'il doit servir la plupart de ses réponses à partir de la RAM.
- Les données dans le cache doivent être conservées sur le disque toutes les 24 heures.
Voici mes options au moment:
- Cache les données dans la classe du serveur, en utilisant des variables privées (par exemple de liste privée ou un dictionnaire), sérialisent puis sur disque de temps en temps;
- Utiliser une base de données;
Votre opinion d'expert m'intéresse.
Bonne réponse, merci. Plutôt que de l'implémenter moi-même, j'ai fini par utiliser une solution prête à l'emploi, la bibliothèque de mise en cache .NET de Kellerman. – Contango
De rien. –