L'état de la Machine de Cadres de .NET
Nous avons un système à mon travail qui est fondamentalement un message-driven état de la machine. Il prend dans une variété de types de messages, regarde le contexte/l'etat en fonction sur le message, puis décide quoi faire, basé sur le message et l'état actuel. Normalement, le résultat est un message envoyé hors du système.
Il un bon open-source cadres pour la mise en œuvre d'une machine d'état dans .NET? J'ai regardé dans la dernière version de Windows Workflow, et il semble que cela serait une bonne option; cependant, j'ai quelques inquiétudes sur la valeur par défaut mécanismes de persistance (nous avons besoin de rapport à partir de la transition de l'état des données), la testabilité, et le fait que le WF équipe est la re-création de l'architecture du cadre que nous parlons (soi-disant).
Au lieu de WF, je pense que je vais essayer de mettre en œuvre un bon vieil GoF "État" du motif et de l'aide Spring.NET pour câbler le tout ensemble. Est-il quelque chose qui fait déjà cela, ou quelque chose de similaire?
Vous devez vous connecter pour publier un commentaire.
En fonction de vos besoins, vous trouverez peut-être la L'État De La Machine Compilateur est suffisante pour mettre en œuvre le GoF "État" modèle. Il peut générer des C# dot qui peut être transformé en plusieurs formats d'image à l'aide de Graphviz. Je l'ai utilisé sur un projet précédent et a constaté que c'est suffisant pour générer une 'simple' état de la machine. J'espère que cette aide.
Prendre un coup d'oeil à NState
https://github.com/benaston/NState
https://nuget.org/packages/NState/.
Avertissement: je le maintiens.
Deux grandes machines d'état pour .NET
Me maintenir à un projet open-source qui met en œuvre (entre autres choses) un générique de machine à états finis pour .NET. Il est construit sur le haut de QuickGraph, de sorte que vous obtenez de nombreuses graphique-analyse des algorithmes pour gratuit. Voir cette page pour plus d'informations.
Vous pourriez envisager de la Au nord de l'État du Cadre en C#. Bien qu'il n'est pas open source, il est relativement peu coûteux de licence. C'est le seul cadre que je connais qui permet la réutilisation par la machine d'état de composition et d'héritage. En d'autres termes, vous pouvez hériter d'une base de machine d'état avec seulement quelques lignes de code, et d'ajouter des états, des transitions, des actions, etc. Vous pouvez également prendre l'état actuel de la machine de classe et de "brancher" dans un autre état de la machine. Vous n'en croirez pas combien il est plus facile à mettre en œuvre et de travailler avec des machines d'état à l'aide de ce cadre, par rapport à GOF ou d'autres motifs.
Ont un coup d'oeil à StateBuilderDotNet, d'une machine à état générateur de code qui transforme une description XML d'une machine d'état dans une version étendue de C# à l'état de modèle. Il prend en charge tous sémantique UML: état de la machine peuvent être hiérarchiques, parallèle et asynchrone. Un outil graphique est également disponible pour créer des machines d'état.
Disclaimer: je suis l'auteur de ces logiciels.
J'ai créé Staty qui est une puce de machine d'état pour .NET. Écrit en C# bibliothèque de classes portable (PCL), Staty vient expressif event-driven l'état de la machine avec des caractéristiques comme
C'est gratuit, open-source, disponible sur NuGet et sur la base des idées par David Lafrenière C++ de l'État de la Machine, qui est le plus célèbre de l'état de la machine en C++.