C # include macchine a stati finiti?
-
05-07-2019 - |
Domanda
Di recente ho letto della libreria boost::statechart
(macchine a stati finiti) e ho adorato il concetto.
C # ha un meccanismo simile? O può essere implementato utilizzando uno specifico modello di progettazione?
Soluzione
Sì, C # ha blocchi iteratori che sono macchine a stati generate dal compilatore.
Se si desidera implementare la propria macchina a stati è possibile creare implementazioni personalizzate delle interfacce IEnumerable<T>
e IEnumerator<T>
.
Entrambi questi approcci evidenziano l'implementazione del framework .NET del modello iteratore .
Altri suggerimenti
.NET 4 Update 1 ora lo supporta nella seguente classe: System.Activities.Statements.StateMachine
Ecco un tutorial su come usarlo . Ecco un laboratorio pratico .
Workflow Foundation (.NET 3.0) ha un flusso di lavoro della macchina a stati. 4.0 non ha esattamente la stessa cosa al momento, ma puoi sicuramente creare un flusso di lavoro della macchina a stati usando 4.0.
Mantengo un progetto open source che implementa (tra le altre cose) una macchina generica a stati finiti per .NET. È basato su QuickGraph , in modo da ottenere gratuitamente molti algoritmi di analisi dei grafici.
Vedi questa pagina per maggiori informazioni sul progetto, e in particolare " Jolt.Automata: macchine a stati finiti " per ulteriori informazioni sulla funzione.
Scopri Stateless - > http://code.google.com/p/stateless/ . È un'alternativa leggera al WWF più pesante.
Ecco un paio di articoli dell'autore dello strumento:
Le cose che si avvicinano agli FSM sono flussi di lavoro in .NET 3.5, tuttavia, anche i flussi di lavoro non sono esattamente FSM.
Il potere di usare FSM è che puoi crearli esplicitamente nel tuo codice, avendo meno possibilità di creare bug. Inoltre, naturalmente alcuni sistemi sono per natura FSM, quindi è più naturale codificarli in questo modo.
Windows Workflow Foundation (WF) che fa parte della libreria di classi di base in 3.0 e 3.5 include un design del flusso di lavoro di macchine a stati per gestire macchine a stati per le vostre applicazioni.
Hanno completamente riscritto il flusso di lavoro per la prossima versione 4.0 e le nuove classi WF 4.0 non supportano nativamente le macchine a stati, ma tutte le classi 3.0 / 3.5 sono ancora completamente supportate in 4.0.