2008-10-08 9 views
0

Je travaille sur un petit projet où pour la première fois je veux utiliser XML comme la seule et unique source de données ... un magasin de fichiers répond aux besoins du projet .XML comme source de données: bonne pratique pour la lecture

Lors de l'écriture de la DAL, devrais-je avoir toutes les méthodes get statiques? à aviod et "lecture tout en fichier ouvert" des erreurs? Dois-je utiliser CacheDependency sur le fichier?

Thx

Répondre

2

Je pense que vous n'étiez pas aussi clair que vous auriez pu être. Quelle sera la taille de ces fichiers? Serait-il logique pour la couche de données de toujours garder le XmlDocument en mémoire et de le sauvegarder sur disque dur à chaque mise à jour?

À quelle fréquence les mises à jour vont-elles se produire, le cas échéant? Comment allez-vous gérer la concurrence? Les mises à jour vont-elles être transactionnelles dans plusieurs fichiers xml? Comment allez-vous gérer la cohérence et l'intégrité transactionnelle? S'il n'y a pas de mise à jour, votre vie sera beaucoup plus simple.

Les méthodes n'ont pas besoin d'être statiques. La principale chose à considérer est que, dans le futur, vous voudrez peut-être changer le fournisseur DAL de XML en DB. À cette fin, la mise en œuvre concrète des interfaces DAL devrait s'adresser à un fournisseur de données abstrait. Pour vous, ce serait initialement un fournisseur Xml, mais vous devriez être capable d'écrire un fournisseur Sql qui implémente la même interface et de changer facilement l'implémentation en utilisant l'injection de dépendance, les fichiers de configuration ou ce que vous avez. Si vous avez des instances des implémentations DAL, vous pouvez simplement utiliser ces objets pour parler à la couche de données.

J'espère que c'est un bon début pour vous.

0

OK.

Les fichiers ne sont pas susceptibles d'être énormes, je soupçonne que le maximum pour atteindre 1-2MB. Je peux vous dire que l'interface DAL doit être interchangeable avec une base de données, donc je dois réfléchir soigneusement à mes interfaces.

Concurrence, eh bien je suis préoccupé par cela et pas tout à fait sûr comment je devrais le gérer. Je pensais que les méthodes de lecture et d'écriture statiques aideraient.

Le XML sera mis à jour, pas très souvent, peut-être une fois par jour, mais cela pourrait être n'importe quand et plus souvent.

J'utilise CacheDependancy pour obtenir uniquement à partir de la source lorsque le fichier a été modifié.

Est-ce que j'aurai des problèmes pour lire le Cache simultanément? Alors, comment gérer les problèmes de simultanéité?