33 votes

Comparaison entre Stateless (sur google code) et Windows Workflow

Je commence à penser que je devrais fossé Windows WF en faveur de quelque chose de plus simple. Je n'ai pas forcément besoin de faire une pause exécution du flux de travail pour de longues périodes de temps et les restaurer plus tard. Je voudrais une simple machine d'état cadre qui n'ont de base pour suspendre / reprendre / annuler (sans sérialisation), cependant.

J'ai téléchargé les Apatrides cadre de Google Code et je vais commencer à jouer avec elle, mais j'aimerais entendre ce que l'autre .NET programmeurs il y a à l'aide.

MODIFIER les Apatrides semble vraiment simple à mettre en œuvre, mais je me demande si c'est la bonne chose pour une machine à barbe. Dans l'automatisation, je me sens toujours en conflit au sujet de la façon dont les machines d'état doit être utilisé. Bien que j'utilise le terme "etat machine", je n'ai donc lâchement parce que je l'utilise plus comme un diagramme de flux. Au lieu d'utiliser les états de représenter le mode actuel d'une machine, je l'utilise pour exécuter des fonctions. Donc, dans ce cas, avec des Apatrides, je serais vraiment à l'aide de la transition d'un état à l'autre, comme le mécanisme de l'appel de fonctions dans ma machine à barbe du contrôleur. Pensées?

41voto

Dave Points 5649

Comme je travaille à travers cela, je vais essayer de faire une liste des choses dont je suis la recherche. La plupart seront probablement un peu superficielle à partir d'une analyse du point de vue (surtout depuis que je suis de nouveau à la fois les cadres), mais j'espère que ça aidera quelqu'un.

Apatrides

Pros

  • open source
  • la syntaxe concise et facile à lire
  • assez de bons exemples dans l'mercurial repo sur google code
  • Je peux traduire mon UML diagramme d'état dans le code à l'aide apatrides très rapidement.
  • l'état d'entretien est très simple-je peux ajouter et enlever avec facilité. Les méthodes d'Extension permettez-moi de configurer les états sur des lignes distinctes, donc je ne peux commenter les déclencheurs ou des actions que je ne veux pas utiliser.
  • la transmission des données vers/à partir de l'état de la machine est facile et vous pouvez le faire quand vous le souhaitez dans le code-behind.
  • de même, l'état de la machine peut mettre à jour GUI dans une variété de façons. Maintenant, je suis de modification des données via une interface, puis l'interface graphique utilise une minuterie de mise à jour de ses éléments. Je pourrais aussi probablement utiliser un BackgroundWorker pour ce faire.
  • J'ai juste commencé à utiliser de sous-états pour la manipulation de mon GUI, qui doit gérer les différents états, comme la Course, Suspendu, Interrompu, et de repos. L'état de Pause a sous-états, car l'utilisateur peut suspendre le système dans une variété de façons, mais la reprise de la déclencheurs sont spécifiques à la façon dont ils ont été suspendues. J'aime être en mesure de gérer mon GUI de l'activation / désactivation et les info-bulles à l'aide d'un léger état de la machine-cadre.

Cons

  • pas intégré dans les mécanismes pour mettre en pause, reprendre, abandonner
  • un seul développeur de soutenir le projet. Je n'ai obtenir de l'aide avec un problème j'ai récemment rencontré, cependant.
  • potentiel d'abus si vous ne faites pas attention. J'ai mis en place la machine de l'etat cadre mal lors de ma première tentative. Il a très bien fonctionné pendant des mois, et puis finalement il est mort quand j'ai couru un très long processus en cours d'exécution. Il s'avère que j'était la cause de l'état des gestionnaires à empiler vers le haut et j'ai eu une condition de débordement de pile.

Windows Workflow Foundation

Pros

  • approche graphique pour la conception du flux de travail
  • support de la persistance, de l'interruption, la reprise, l'abandon des flux de travail
  • MS a probablement une grande équipe de programmeurs à l'appui de cette
  • GUI, il est vraiment facile de désactiver / réactiver les activités

Cons

  • approche graphique pour la conception du flux de masque le fait que cette chose est assez complexe
  • afin d'utiliser la persistance et d'obtenir en pause / reprendre / annuler, vous devez installer et configurer un service de persistance", quelque chose que je n'ai pas encore trouver comment obtenir de travail. Je peux mettre en place la base de données SQL très bien, mais à l'exécution j'obtiens un tas d'erreurs que je ne comprends pas.
  • parce que c'est à partir de MS, vous ne savez pas si ça va être très long ou obtenir complètement abandonné.
  • la gestion des erreurs est un peu bizarre, parce que vous pouvez soit utiliser le code derrière ou un FaultHandler
  • le passage des données à partir de WF principale de votre application est complexe et exige quelque chose comme WCF (une autre technologie je n'ai pas assez de temps pour apprendre de manière adéquate en ce moment), ou utiliser le ExternalDataExchange interface.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X