2009-11-30 5 views
3

Il ne semble pas y avoir beaucoup de gourous Windows Workflow Foundation là :(Combien d'exécutions de flux de travaux doivent-elles être exécutées dans une application Asp.Net?

Voici quelques défis auxquels je fais face:

Combien de temps d'exécution de flux de travail devrait-il y avoir en cours d'exécution dans un Asp.Net MVC demande? Une par application, par session ou par demande?

à quelle fréquence doit l'exécution de workflow être démarré et arrêté? Une fois par instance d'application, une fois par session ou une fois par demande?

Quels sont les avantages et les inconvénients de faire l'un ou l'autre dans l'optio ci-dessus ns?

Tous les commentaires ou suggestions sont les bienvenues,

Merci,

Cullen

Répondre

1

Normalement, vous ne devez exécuter qu'un seul runtime de workflow par application. Il est possible d'en définir plus d'un et il peut y avoir des scénarios complexes lorsque cela est souhaitable mais très improbable. Je ne vois aucun scénario où plusieurs runtimes pour la même configuration seraient exécutés dans le même processus.

Pour un flux de travail hébergé sur le Web, vous avez vraiment besoin du SqlWorkflowPersistenceService. IIS s'attend à pouvoir recycler un pool d'applications avec un impact minimal sur l'application. Par conséquent, vous avez besoin de workflows inactifs pour persister afin qu'ils survivent de tels recyclages. Sur une note similaire, vous devriez utiliser le ManualWorkflowSchedulerService qui fonctionne bien avec l'utilisation de threads ASP.NET, c'est aussi très pratique pour pouvoir effectuer un traitement de bout en bout d'une requête à une réponse via un workflow sur un seul fil. Veillez simplement à inclure l'attribut useActiveTimers="true" pour que les activités de retard fonctionnent.

Conformément à ce qui précède, vous devez vous assurer que tout workflow actif ne prend pas plus de temps à se terminer ou reste inactif que la limite de temps d'arrêt du pool d'applications. Sinon, sur IIS, il est possible que le processus se termine avant la fin d'un flux de travail. En ce qui concerne le démarrage et l'arrêt du flux de travail, il est de nouveau difficile de voir un scénario dans lequel vous ne souhaitiez pas simplement le démarrer au démarrage de l'application et le rester.Je suppose que si vous avez un flux de travail qui ne tourne jamais du début à la fin et vous ne lancez que de très rares flux de travail alors il peut être plus simple de démarrer le runtime et de le terminer par la suite. Cependant, même cela peut être désordonné, je ne voudrais pas le démarrer au démarrage de l'application et en finir avec.

+0

@Anthony: merci pour la réponse. J'ai déjà configuré pour ajouter SqlWorkflowPersistenceService et ManualWorkflowSchedulerService à l'exécution; Le problème de recyclage d'IIS est très important à connaître. Un événement peut-il être intercepté lorsque le pool d'applications est recyclé? –

+0

Il n'y a aucun événement de recyclage spécifique. Le plus proche que je puisse penser est que l'application est recommencée sur le recyclage, mais cela serait dans un processus différent de celui d'un flux de travail en cours d'exécution. Je serais juste sûr que Shutdown timeout est bien clair du temps de fonctionnement d'un workflow. Si ce temps est excessif alors peut-être qu'une partie de ce travail n'appartient pas à un processus Web. – AnthonyWJones

1

Combien de runtimes flux de travail devrait-il y avoir en cours d'exécution dans une application Asp.Net MVC?
une par application, à moins que vous avez besoin de plus à des fins d'évolutivité (trop de demandes)

A quelle fréquence doit démarrer et arrêter le moteur d'exécution de workflow?
généralement, une fois par instance d'application

sont triviaux, vous pouvez faire évoluer mieux avec plus de demandes de session de les avantages et les con et les instances, mais il faut plus de ressources pour les gérer.

Votre meilleur pari est d'utiliser juste ce dont vous avez besoin et de pousser plus tard si nécessaire.

+0

@Robert: Merci pour la réponse rapide! Avez-vous fait beaucoup de WF dans l'environnement asp.net? –

+0

Pas de problème, je l'ai utilisé un peu, j'ai probablement appris assez pour me mettre sérieusement dans le pétrin. J'espère avoir d'autres occasions de l'utiliser plus tard. –

+0

c'est ce que j'essaie de m'empêcher d'entrer, "sérieux ennuis" je veux dire. Le projet sur lequel je travaille prévoit d'utiliser largement WF dans l'environnement Web sans état. J'espère trouver mon chemin à travers WF pour mettre en œuvre les meilleures solutions pour ce projet. –

Questions connexes