2009-10-21 11 views
1

Nous avons un entrepreneur qui a développé un système qui utilise la fondation de flux de travail dans .NET 3.5. Un de mes collègues a des inquiétudes "autour du service de flux de travail qui stocke l'état en mémoire et qui peut devenir désynchronisé avec notre base de données sous-jacente".
Ses préoccupations sont-elles justifiées?L'état de stockage de Workflow Foundation dans la mémoire est-il un problème?

+0

Nous avons eu un problème similaire avec LINQ. A été résolu en définissant ObjectTrackingEnabled = false sur le DataContext. Pas tout à fait sûr si cela s'appliquera ici, mais peut être un début dans le bon chemin ... – Irfy

Répondre

2

De quelle manière l'état est-il stocké en mémoire? WF a un service de persistance lorsque, par ex. le flux de travail passe à l'état inactif. Vous pouvez vous assurer que le WF est conservé dans votre base de données. Nous n'avons aucun problème, par exemple. mise en file d'attente d'informations vers un flux de travail spécifique pour redémarrer les durées d'exécution WF - le fichier WF sera extrait de la base de données et exécuté à la bonne position. Si vous relancez une fois de plus cela signifie que si vous stockez l'état dans le workflow (par exemple, dans les propriétés de dépendance d'une activité), cela peut devenir désynchronisé. Cela dépend à peu près si cela peut arriver ou non. Un objet sérialisé qui a été créé avec des données de base de données peut être désynchronisé dans un fichier WF si les données d'origine ont changé. Si cela vous préoccupe, vous pouvez plutôt recréer certains objets à partir des données DB et ne pas les conserver en tant qu'objets sérialisés dans votre fichier WF.

0

Cela dépend de comment il l'a fait, mais la réponse est probablement non. La mise en mémoire cache est un moyen utile d'éviter les E/S inutiles lorsqu'une base de données est impliquée. Peut-être que votre collègue a besoin de jeter un coup d'oeil dans le code pour se sentir mieux.