2010-01-06 7 views
4

J'aime l'idée de WF et souhaite que les workflows longs soient conservés dans une base de données SQL. À cette fin, quelle est l'architecture appropriée au niveau SQL pour la base de données de persistance? Si les tables de persistance existent dans la base de données du projet ou si le projet de bases de données Persistence est agnositc et qu'une seule base de données de persistance est créée, une base de données de la SSRS. Plusieurs applications peuvent-elles utiliser une base de données de persistance?Architecture de persistance SQL de Workflow

Répondre

4

En général, je préfère conserver mes données de persistance et mes données d'application dans une seule base de données. La principale raison pour laquelle vous ne les partagez pas est que vous commencez immédiatement à créer des transactions distribuées dès que vous effectuez un travail de base de données de transactions beaucoup plus lent.

Je ne combine jamais différentes bases de données de persistance en une seule. En pratique, WorkflowRuntime de chaque application sera configuré différemment afin que votre flux de travail ne puisse pas choisir n'importe quel hôte pour s'exécuter, mais qu'il soit lié à un hôte spécifiquement configuré qui connait le type de flux de travail. Et une fois que vous avez commencé à utiliser DelayActivities et qu'ils expirent, vous n'avez aucun contrôle sur l'exécution qui va charger le flux de travail dans la mémoire. L'utilisation d'une base de données de persistance avec plusieurs instances du type de flux de travail SAME à des fins d'équilibrage de charge est toutefois possible mais un peu difficile. En fait, il est plus courant d'avoir plusieurs bases de données de persistance pour des WorkflowRuntimes différemment configurées dans une seule application.

+0

+1 Bon point concernant DelayActivities. – AnthonyWJones

1

La base de données SQL Persistence n'est pas couplée à votre application ou projet. Chaque flux de travail est entièrement atomique et est identifié de manière unique par un GUID. Par conséquent, il devrait être possible de partager un même DB de persistance de workflow entre plusieurs applications. Cependant, il existe certainement des arguments en faveur de la gestion de plusieurs DB de persistance, un pour chaque application. Si le fonctionnement de plusieurs applications dépend des workflows, vous ne souhaitez pas créer de point de défaillance unique potentiel en partageant un même DB de persistance. Du point de vue de la performance et de l'évolutivité, il est également logique de séparer les DB de persistance. Sinon, vous pouvez créer un goulot d'étranglement lorsqu'une application lourde affecte les performances d'autres applications. Vous pouvez également décider de déplacer plus facilement les bases de données de persistance pour une ou plusieurs applications vers un serveur différent.

Questions connexes