Necesito escribir máquinas de estado que se ejecutan rápidamente en C#. Me gusta la biblioteca de Windows Workflow Foundation, pero es demasiado lenta y está llena de funciones (es decir, pesadas). Necesito algo más rápido, idealmente con una utilidad gráfica para diseñar los diagramas, y luego escupir código C#. ¿Alguna sugerencia? Gracias!Cómo escribir máquinas de estados con C#?
Respuesta
En última instancia, es probable que desee el recién rediseñado WF engine in .NET 4.0, ya que es mucho más rápido y proporciona una actividad de diagrama de flujo (no es una máquina de estado, pero funciona para la mayoría de los escenarios) y una experiencia de interfaz de usuario agradable. Pero dado que aún no se ha publicado, probablemente esta no sea una buena respuesta por ahora.
Como alternativa, puede probar stateless, una biblioteca específicamente para crear programas de máquina de estado en .NET. No parece proporcionar una interfaz de usuario, pero parece adecuada para cumplir sus otras metas.
Sí, Microsoft puede haber estado adelantado a su tiempo con State Machine WF. Los flujos de trabajo secuenciales se reciben mucho mejor.
Cuando decidimos utilizar una máquina de estados, lanzamos la nuestra. porque no pudimos encontrar un marco aceptable con una IU. Aquí están nuestros pasos. Espero que te ayuden.
Crear la interfaz de estado:
public interface IApplicationState { void ClickOnAddFindings(); void ClickOnViewReport(); //And so forth }
Crear los estados y hacer que implementan la interfaz:
public class AddFindingsState : IApplicationState { frmMain _mForm; public AddFindingsState(frmMain mForm) { this._mForm = mForm; } public void ClickOnAddFindings() { } public void ClickOnViewReport() { // Set the State _mForm.SetState(_mForm.GetViewTheReportState()); } }
instanciar los estados en su clase principal .
IApplicationState _addFindingsState; IApplicationState _viewTheReportState; _addFindingsState = new AddFindingsState(this); _viewTheReportState = new ViewTheReportState(this);
Cuando el usuario hace algo que requiere un cambio de estado, llamar a los métodos para establecer el estado:
_state.ClickOnAFinding();
Por supuesto, las acciones van a vivir en el caso particular de la IApplicationState.
Implementación interesante. Gracias por compartir. – Nestor
- 1. Máquinas de estados en C
- 2. ¿Cómo heredar estados con mxml?
- 3. Intentando deshabilitar estados inactivos del procesador (estados C) en PC con Windows
- 4. ¿Cómo escalar MySQL con múltiples máquinas?
- 5. Generador de máquinas de estado C++
- 6. Marco de aprendizaje de máquinas C++
- 7. Máquina de estados finitos: ¿mal diseño?
- 8. Cómo comparar máquinas virtuales
- 9. ¿C# incluye máquinas de estado finito?
- 10. Ámbitos con nombre para estados en state_machine
- 11. Cómo escribir en C++
- 12. máquinas virtuales
- 13. Si los estados
- 14. C++: ¿Cómo escribir un const_iterator?
- 15. Obtener estados Lista de estados según el país seleccionado
- 16. Escribir texto en el bloc de notas con C#/Win32
- 17. Biblioteca PHP con países, estados y ciudades
- 18. ¿Cómo se modelan los estados de aplicación?
- 19. cómo escribir constructores de herencia C++
- 20. Cómo realizar FST composición (Estados Finitos transductor)
- 21. Biblioteca de máquinas de vectores de soporte para C#
- 22. Cómo escribir pruebas automáticas del sistema con C#?
- 23. Cómo NO escribir XML con bonita impresión desde C# DataSet
- 24. Cómo escribir el archivo UTF-8 con fprintf en C++
- 25. ¿Cómo escribir un archivo con C en Linux?
- 26. construcción usando múltiples máquinas
- 27. Python, ¿cómo POSTAR estados/update_with_media a Twitter?
- 28. Dibujando diagramas de estados UML
- 29. obtener lista de estados state_machine
- 30. "C" caché L2 programáticamente transparente en máquinas Linux
Buena información. ¡Gracias! – Nestor
+1 para apátridas. Es una gran biblioteca pequeña y un soplo de aire fresco en comparación con Workflow Foundation (incluso WF 4.0). –