Je commence un projet pour créer une fonctionnalité "objet versioning" pour notre logiciel (.NET 3.5/SQL Server 2008), fondamentalement il doit faire ceci:Je cherche un conseil pour implémenter une fonctionnalité de version dans notre application
- un utilisateur est à la recherche à un client :
- nom est "Smith-Johnson"
- 2 adresses (enregistrés dans différentes tableau)
- 1 produit acheté
- 1 employé le contact (enregistré dans différents tableau)
- 200 mails (enregistrés dans différentes tableau)
- utilisateur clique sur "Voir le passé" "bouton et choisit" 25 septembre 2009 15:00 "qui apporte une vue séparée qui montre le même client:
- Nom est "Smith" (le nom a changé depuis)
- 1 adresse (depuis lors, une adresse a été ajoutée)
- 1 produit acheté (mais il est différent que ci-dessus puisqu'il l'a acheté, l'a renvoyé plus tard et en a acheté un nouveau)
- 2 employés contacts (puisque l'un avait été supprimé depuis)
- 10 mails
En pensant au problème en général un certain nombre de questions se posent:
- à quel niveau devraient être enregistrés changements, par exemple à la base de données niveau (log chaque changement de chaque propriété de chaque table) ou le niveau d'objet (sérialisation et stocker chaque objet et ses dépendances après après le changement)
- comment va changements dans la structuredes tables être manipulé, par exemple si la colonne "Nom" devient "Nom", comment suivre les données dans les colonnes comme appartenant à la même colonne (donc le service de version ne signale pas "ce client n'a pas de nom de famille le 25 septembre" mais plutôt sait regarder dans Lastname.
- ce que technologies de soutien dans le .NET/SQL Server 2008 zone existent qui pourraient soutenir ce, par exemple, je suis à la recherche dans la fonction Change Tracking de SQL Server 2008
- quel genre de modèles existent pour versioning, par exempleJe pense au Command qui peut être utilisé pour créer une fonction Annuler dans l'application.
- Ce service de version ne pas besoin d'effectuer des rollbacks. Il doit juste être capable de montrer l'état des objets de leurs dépendances. Quelle est votre expérience dans l'implémentation de fonctionnalités de versioning dans un logiciel?
Quelle a été votre expérience? Quel conseil avez-vous?
Qu'en est-il de l'utilisation d'une structure de base de données sans schéma pour gérer cela? Je pense que vous pourriez probablement enregistrer un index pour les versions précédentes et la structure de la table pourrait être très dynamique de cette façon? Question interessante. – thismat