Quand utiliser Windows Workflow Foundation? [fermé]

certaines choses sont plus faciles à mettre en œuvre à la main (code), mais d'autres sont plus faciles grâce à WF. Il semble que WF puisse être utilisé pour créer (presque) n'importe quel type d'algorithme. Donc (théoriquement) je peux faire toute ma logique dans WF, mais c'est probablement une mauvaise idée de le faire pour tous les projets.

dans quelles situations est-ce une bonne idée d'utiliser WF et quand cela va-t-il rendre les choses plus difficiles alors qu'elles doivent l'être? Quels sont les avantages, les inconvénients et les coûts de la WF par rapport au codage manuel?

144
demandé sur Panos 2008-09-19 21:56:02

11 réponses

vous pouvez avoir besoin de WF seulement si l'un des suivants sont vrais:

  1. vous avez un long processus.
  2. Vous avez un processus qui change fréquemment.
  3. Vous voulez un modèle visuel du processus.

pour plus de détails, voir L'article de Paul Andrew: Que faire avec Windows Workflow Foundation?

Merci de ne pas confondre ou se rapportent WF avec programmation visuelle de toutes sortes. Il est faux et peut conduire à de très mauvaises décisions d'architecture / conception.

120
répondu Panos 2016-08-24 09:25:18

jamais. Vous le regretterez probablement:

  • courbe d'apprentissage Abrupte
  • difficile à déboguer
  • difficile à entretenir
  • ne fournit pas assez de puissance, de flexibilité ou de gain de productivité pour justifier son utilisation
  • peut et va corrompre l'état de l'application qui ne peut pas être récupéré

le seul moment où je pourrais jamais concevoir d'utiliser WF est si je voulait héberger le concepteur pour un utilisateur final et probablement pas même alors.

croyez-moi, rien ne sera jamais aussi simple, puissant, ou souple que le code que vous écrivez pour faire exactement ce dont vous avez besoin. Rester à l'écart de WF.

bien sûr, ce n'est que mon opinion, mais je pense que c'est une sacrément bonne. :)

72
répondu Ronnie Overby 2018-03-06 15:02:13

le code généré par WF est méchant. La valeur que WF apporte est dans la représentation visuelle du système, bien que j'ai encore à voir quoi que ce soit (6-7 projets à l'oeuvre maintenant avec WF que j'ai été impliqué avec) où je n'aurais pas préféré un projet plus simple de code main.

47
répondu craigb 2008-09-19 22:16:19

en général, si vous n'avez pas besoin de la persistance et des fonctionnalités de suivi (qui à mon avis sont les principales fonctionnalités), vous ne devriez pas utiliser Workflow Foundation.

Voici les avantages et les désavantages de Workflow Foundation que j'ai appris de mon expérience:

avantages

  • persistance: si vous allez avoir beaucoup de processus à long terme (pensez jours, semaines, mois), puis Les flux de travail sont parfaits pour cela. Les instances de flux de travail inactives sont maintenues dans la base de données de sorte qu'elle n'utilise pas de mémoire.
  • Suivi de: WF fournit le mécanisme pour assurer le suivi de chaque activité exécutée dans un flux de travail
  • *Visual Designer: j'ai mis cela comme un *, parce que je pense que c'est vraiment seulement utile à des fins de marketing. En tant que développeur, je préfère écrire du code plutôt que d'assembler les choses visuellement. Et quand vous avez un non-développeur qui fait des workflows, vous souvent finir avec un énorme désordre confus.

désavantages

  • modèle de programmation: vous êtes vraiment limité dans les caractéristiques de programmation. Pensez à toutes les grandes fonctionnalités que vous avez en C#, puis oubliez-les. Un simple énoncé d'une ou deux lignes dans C# devient une activité de bloc assez grande. C'est particulièrement pénible pour la validation des entrées. Cela dit, si vous êtes vraiment prudent de garder logique de haut niveau dans les flux de travail, et tout le reste dans C#, alors il pourrait ne pas être un problème.
  • Performance: Workflows using a large amount of memory. Si vous déployez beaucoup de flux de travail sur un serveur, assurez-vous que vous avez des tonnes de mémoire. Sachez également que les flux de travail sont beaucoup plus lents que le code C# normal.
  • courbe D'apprentissage raide, difficile à déboguer: comme mentionné ci-dessus. Tu vas passer beaucoup de temps à comprendre comment faire marcher les choses, et à comprendre le meilleur moyen d'en faire quelque chose.
  • Incompatibilité de Version de flux de travail
  • : si vous déployez un flux de travail avec persistance, et que vous avez besoin de mettre à jour le flux de travail, les anciennes instances de flux de travail ne sont plus compatibles. Il est supposé que ceci est fixé dans .NET 4.5.
  • vous devez utiliser les expressions VB (.NET 4.5 permet les expressions C#).
  • pas flexible: si vous avez besoin d'une fonctionnalité spéciale ou spécifique non fournie par Workflow Fondation, préparer beaucoup de douleur. Dans certains cas, il pourrait même ne pas être possible. Qui sait jusqu'à ce que tu essayes? Il y a beaucoup de risques ici.
  • WCF services XAML sans interfaces: normalement avec les services WCF, vous développer contre une interface. Avec les Services WCF XAML, vous ne pouvez pas vous assurer qu'un Service WCF XAML a tout implémenté dans une interface. Vous n'avez même pas besoin de définir une interface. (autant que je sache...)
34
répondu Mas 2013-07-29 11:14:38

la principale raison que j'ai trouvé pour l'utilisation de workflow foundation est combien il vous fait sortir de la boîte en termes de suivi et de persistance. Il est très facile d'obtenir le service persistence en marche, ce qui apporte la fiabilité et la répartition de la charge entre plusieurs instances et hôtes.

d'un autre côté, tout comme les applications de formulaires, les modèles de code que le concepteur de flux de travail vous pousse vers sont mauvais. Mais vous pouvez éviter les problèmes en écrivant pas de code dans le workflow et la délégation de tout le travail à d'autres classes, qui peuvent être organisées et l'unité testée plus gracieusement que le workflow. Ensuite, vous obtenez l'aspect visuel cool du concepteur sans la miette de code spaghetti derrière.

24
répondu Tegan Mulholland 2008-09-19 18:10:12

personnellement, je ne suis pas vendu sur WF. Son utilité n'était pas aussi évidente pour moi que d'autres nouvelles technologies de MS, comme WPF ou WCF.

je pense que WF sera largement utilisé dans les applications d'affaires à l'avenir, mais je n'ai pas l'intention de l'utiliser parce qu'il ne semble pas être le bon outil pour le travail pour mes projets.

11
répondu Rob 2012-01-07 15:44:21

la société pour laquelle je travaille actuellement a mis en place Une Windows Workflow Foundation (WF) et les raisons pour lesquelles ils ont choisi de l'utiliser était parce que les règles seraient fréquemment changer et que cela les forcerait à faire une recompilation des différentes dll etc et donc leur solution était de placer les règles dans le DB et les appeler de là. De cette façon ils pourraient changer les règles et ne pas avoir à recompiler et redistribuer les dlls etc.

6
répondu rae1 2013-09-09 15:25:58

Windows Workflows séduit les gestionnaires informatiques non-codants, BAs et autres comme son cousin BizTalk, mais dans la pratique Unité de test, le débogage et la couverture du code ne sont que trois des nombreux pièges. Vous pouvez surmonter certains d'entre eux, mais vous devez investir massivement dans la réalisation de cela alors qu'avec le code simple vous obtenez juste cela. Si vous avez vraiment une exigence alors vous avez probablement besoin de quelque chose de plus sophistiqué. J'ai entendu parler de la possibilité de déposer de nouveaux fichiers xaml dans production sans recompiler les dlls mais honnêtement le temps que les flux de travail consommeront pourrait être mieux utilisé pour améliorer votre intégration continue au point où les déploiements compilés ne sont pas un problème.

5
répondu Owain Glyndŵr 2014-08-15 05:58:38

Je l'utiliserais dans n'importe quel environnement où j'ai besoin de travailler avec workflow, cependant en l'utilisant en conjonction avec K2 ou même SharePoint 2007 la puissance de la plate-forme est vraiment utile. Lors du développement d'applications d'affaires avec BI specialist l'utilisation de la plate-forme est recommandée et cela ne serait normalement pertinent que pour rationaliser et améliorer les processus d'affaires.

pour le record WF a été développé en collaboration avec l'équipe de développement de K2 et le nouveau K2 Blackpearl est construit sur le dessus de WF, de même que MOSS 2007 et les moteurs de flux de travail WSS 3.0.

2
répondu BinaryMisfit 2008-09-21 18:13:11

quand vous ne voulez pas écrire manuellement tous ces codes pour maintenir l'interface visuelle, le suivi et la persistance, c'est un choix judicieux de voter pour WF.

1
répondu sparksustc 2013-04-15 08:44:54

J'utilise Windows workflow depuis des mois maintenant pour développer des activités personnalisées et un designer hébergé que les non-développeurs peuvent utiliser pour construire des workflows. WF est très puissant, mais il est seulement aussi bon que les activités personnalisées qui sont construits par les développeurs. En fin de compte, un développeur devrait regarder les workflows construits par des non-développeurs pour tester et déboguer, mais à partir du point où ils peuvent créer des draft workflows - c'est fantastique.

en outre, dans les cas lorsque vous avez des processus de longue durée, WF est une bonne pile technologique à utiliser lorsque vous avez besoin de mettre à jour les processus de manière dynamique - sans avoir à réinstaller/télécharger ou à faire quoi que ce soit, il suffit d'ajouter les nouveaux fichiers XAML dans un répertoire et votre architecture devrait être configurée avec versioning pour supprimer l'ancien et utiliser le nouveau.

0
répondu JohnChris 2018-03-06 08:53:11