2010-01-27 8 views
3

Il s'agit d'une question générale concernant Workflow Foundation (.NET 3.5) et la gestion des versions des données avec lesquelles il fonctionne. Nous avons beaucoup d'activités personnalisées qui fonctionnent avec certaines données et ces données peuvent être intéressantes aussi pour l'analyse future des workflows déjà terminés (à condition que nous configurions le suivi de telle sorte qu'il le stocke sous une forme sérialisée).Quelle est la meilleure approche pour la gestion des versions des données suivies dans les workflows?

Il peut être nécessaire de montrer les données du passé dans l'interface utilisateur, mais les données changent inévitablement la structure (définition de classe/structure interne si elle est dynamique) et la version redéployée de notre bibliothèque contiendra la nouvelle définition de données. les données sérialisées dans la base de données de suivi seront toujours dans l'ancienne structure. Est-il préférable d'utiliser des structures dynamiques qui ne changent pas depuis le début (comme un sac de propriétés) ou plutôt de traiter plus tard le redéploiement et de transformer en quelque sorte le BLOB sérialisé en un nouveau? Avez-vous déjà utilisé une approche dans un scénario similaire?

Répondre

1

Tout dépend de la façon dont vous déployez votre application. Si vous utilisez un nom fort et que vous le déployez sur le GAC ou sur plusieurs chemins d'assemblage privés, la désérialisation d'un flux de travail désérialisera la version exacte de votre classe. Cela signifie que vous codez doit être capable de travailler avec plusieurs versions et cela peut être un peu pénible. Stocker des données dans un sac de propriétés ne va pas vous aider là-bas. Si vous utilisez des redirections d'assembly pour pointer vers la version actuelle d'une activité, cette partie est résolue et je suppose que l'utilisation d'un sac de propriété simplifierait la vie. Cela dit, j'ai tendance à coller avec les propriétés de dépendance et les classes sérialisables régulières jusqu'à présent.

J'ai fait une série d'articles sur les flux de travail à long terme et la gestion des versions où vous rencontrez exactement le même problème. Vérifiez here pour plus de détails.

Questions connexes