Necesito construir una interfaz de scripting para mi programa C# que hace pruebas de nivel del sistema del firmware incorporado.Extensión de la aplicación C# .NET: ¿crear un lenguaje de scripting personalizado o no?
Mi aplicación contiene bibliotecas para interactuar completamente con los dispositivos. Existen bibliotecas separadas para iniciar acciones, obtener resultados y realizar un seguimiento de éxito/falla. Mi aplicación también tiene una GUI para administrar múltiples dispositivos y asignar muchos scripts para ejecutar.
Para los evaluadores (no programadores, pero técnicos), necesito proporcionar una interfaz de scripting que les permita crear diferentes escenarios para probarlos y ejecutarlos. Simplemente llamarán a mis API y luego devolverán un resultado a mi programa (aprobado/reprobado y mensaje).
Un ejemplo muy básico de lo que quiero:
TURN_POWER_ON
TUNE_FREQUENCY frequency
WAIT 5
IF GET_FREQUENCY == frequency
REPORT_PASS "Successfully tuned to " + frequency
ELSE
REPORT_FAIL "Failed to tune to " + frequency
ENDIF
TURN_POWER_OFF
Cuando las funciones de información, potencia y frecuencia son proporcionados por mis bibliotecas de C#.
¿Serán algo así como IronRuby o IronPython para esto, o debería simplemente construir mi propio lenguaje básico?
¿El código de Ruby/Python se vuelve complicado al tratar de incluir un conjunto de ensamblados compilados .NET? Quiero que sea fácil de aprender y codificar para no programadores y programadores por igual.
EDIT:
Gracias por todas las grandes respuestas. Elegí IronPython como la respuesta ya que tenía más soporte, pero pasaré un poco de tiempo con cada uno de IronPython, Boo e IronRuby para ver lo que los probadores preferirían escribir en los scripts.
Eso es grande :) ¿Hay buenos ejemplos/tutoriales para este tipo de integración? Me encantaría ver cómo es el código final de Python para algo como esto. – cgyDeveloper
Estoy bastante seguro de que IronPython In Action cubre algunos (aunque ser árboles muertos puede estar desactualizado); usted podría mirar aquí: http://blogs.msdn.com/srivatsn/archive/2008/09/16/hosting-ironpython-made-easier.aspx –
Tengo un ejemplo que muestra cómo usar Python para scripting C# (o VB.NET) en mi blog en http://www.gotnet.biz/Blog/post/Mixing-Static-and-Dynamic-dotNET-Languages-November-2008-Update.aspx –