web-dev-qa-db-fra.com

C # inclut-il des machines à états finis?

J'ai récemment lu sur la bibliothèque boost::statechart (machines à états finis) et j'ai adoré le concept.

Est-ce que C # a un mécanisme similaire? Ou peut-il être mis en œuvre en utilisant un modèle de conception spécifique?

27
Maciek

Oui, C # a les blocs itérateur qui sont des machines d’état générées par le compilateur. 

Si vous souhaitez implémenter votre propre machine d'état, vous pouvez créer des implémentations personnalisées des interfaces IEnumerable<T> et IEnumerator<T>.

Ces deux approches mettent en évidence la mise en œuvre par le framework .NET du modèle iterator .

0
Andrew Hare

.NET 4 Update 1 le prend désormais en charge dans la classe suivante: System.Activities.Statements.StateMachine

Voici un tutoriel sur la façon de l'utiliser . Voici un mains sur le laboratoire .

18
Alex

Workflow Foundation (.NET 3.0) a un flux de travail de la machine à états. La version 4.0 n'a pas exactement la même chose à l'heure actuelle, mais vous pouvez certainement créer un flux de travail de machine à états à l'aide de la version 4.0. 

8
Will

Je gère un projet open-source qui implémente (entre autres choses) une machine à états finis générique pour .NET. Il est construit sur QuickGraph , de sorte que vous obtenez gratuitement de nombreux algorithmes d’analyse de graphes.

Voir cette page pour plus d’informations sur le projet, et plus particulièrement " Jolt.Automata: Machines à états finis " pour plus d’informations sur la fonctionnalité.

6
Steve Guidi

Découvrez Stateless -> http://code.google.com/p/stateless/ . C'est une alternative légère au WWF plus lourd.

Voici quelques articles de l'auteur de l'outil:

Machines d'état dans les modèles de domaine

Déclencheurs paramétrés et états rentrants apatrides

6
J.D.

Les éléments qui s'approchent des FSM sont les flux de travail dans .NET 3.5, cependant, les flux de travail ne sont pas exactement des FSM.

Le pouvoir d'utiliser des FSM réside dans le fait que vous pouvez les créer explicitement dans votre code, ce qui réduit les risques de créer des bogues. En outre, bien sûr, certains systèmes sont des FSM par nature, il est donc plus naturel de les coder comme tel.

2
Henri

Windows Workflow Foundation (WF) qui fait partie de la bibliothèque de classes de base dans 3.0 et 3.5 inclut une conception de flux de travail de machine à états pour gérer les machines à états de vos applications.

Le flux de travail de la prochaine version 4.0 a été complètement réécrit. Les nouvelles classes WF 4.0 ne prennent pas en charge de manière native les machines à états, mais toutes les classes 3.0/3.5 le sont toujours.

1
Bytemaster