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?

È stato utile?

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:

Macchine statali nei modelli di dominio

Trigger parametrizzati e Stati rientranti in apolidi

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top