2017-04-21 2 views
0

Je souhaite créer une application N-Tier composée d'une couche de gestion et d'une couche de référentiel gérant une source de données autre que les bases de données SQL, par exemple si je souhaite implémenter un référentiel pour lire les données à partir d'un fichier texte ou XML et interroger le nombre de lignes contenant 'C#' ou calculer le score moyen etcModèle de référentiel pour les sources de données non SQL

Il semble que si l'utilisateur appelle un appel de l'interface utilisateur chaque fois qu'ils veulent interroger les données dans le fichier texte il ne serait pas efficace pour les fichiers volumineux car il ferait chaque fois un appel à travers les couches du référentiel et aurait besoin de charger toutes les données en mémoire et de les interroger à chaque fois avant de les retourner à l'utilisateur - y a-t-il un moyen de charger toutes les données une seule fois, puis permettant à plus d'une requête d'être pe rformé ou doit-il être chargé en mémoire à chaque fois avant d'être interrogé?

Existe-t-il un moyen efficace d'avoir une conception N-Tier pour les sources de données de base de données non SQL sans avoir à charger chaque fois la grande quantité de données/fichier texte en mémoire?

+2

Il semble que vous ayez juste besoin d'implémenter la mise en cache dans vos référentiels. Comme, lisez les données du fichier texte, stockez-le dans une variable (c'est-à-dire en mémoire), puis lisez-le s'il est présent. Vous voudrez probablement avoir un moyen de mettre à jour la variable si vous savez que le fichier a changé. Mais franchement, cette question est un peu large; Il existe d'innombrables façons de mettre en œuvre un design à n niveaux de la manière dont vous demandez. –

+1

Utilisez le cache (MemoryCache à partir de .Net 4.0) et actualisez le cache via un processus d'arrière-plan. Et votre requête va s'exécuter du cache mémoire. – loneshark99

+0

@MikeMcCaughan et loneshark merci pour vos commentaires. Il semble que j'ai besoin de mettre en cache les données renvoyées à partir du fichier texte. Aurais-je besoin de charger le contenu entier du fichier texte dans un objet/propriété pouvant être mis en cache dans la classe du référentiel? Comment est-il stocké et réutilisé sur plusieurs transactions, je ne comprends pas. – Theomax

Répondre

1

Vous pouvez utiliser le cache mémoire à partir de .net, puis avoir un processus d'arrière-plan mettre à jour le cache périodiquement. Vos requêtes seront exécutées hors du cache.

Merci.