Potrzebuję zbudować interfejs skryptowy dla mojego programu C#, który testuje na poziomie systemowym osadzone oprogramowanie.Rozszerzanie aplikacji C# .NET - czy tworzysz niestandardowy język skryptowy, czy nie?
Moja aplikacja zawiera biblioteki do pełnej interakcji z urządzeniami. Istnieją oddzielne biblioteki do inicjowania działań, uzyskiwania wyników i śledzenia sukcesu/niepowodzenia. Moja aplikacja ma również GUI do zarządzania wieloma urządzeniami i przypisywania wielu skryptów do uruchomienia.
Dla testerów (nie programistów, ale technicznych), muszę dostarczyć interfejs skryptowy, który pozwoli im wymyślić różne scenariusze testowania i uruchamiania ich. Po prostu zadzwonią do moich API, a następnie zwrócą wynik do mojego programu (pass/fail i wiadomość).
To bardzo prosty przykład tego, co chcę:
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
Gdzie funkcje raportowania, moc i częstotliwość są dostarczane przez moich C# bibliotek.
Czy coś takiego jak IronRuby czy IronPython będzie na to odpowiednie, czy powinienem po prostu zbudować własny, bardzo podstawowy język?
Czy kod Ruby/Pythona zaczyna się brudzić, próbując dołączyć kilka skompilowanych zestawów .NET? Chcę, aby była łatwa do nauczenia i kodowania dla programistów i programistów.
EDYTOWANIE:
Dzięki za wszystkie świetne odpowiedzi. Jako odpowiedź wybrałem IronPythona, ponieważ miał on najwięcej wsparcia, ale spędzę trochę czasu z każdym z IronPython, Boo i IronRuby, aby zobaczyć, co testerzy wolą pisać w skryptach.
to świetnie :) Czy są jakieś dobre przykłady/tutoriale dla tego rodzaju integracji? Chciałbym zobaczyć, jak wygląda końcowy kod Pythona do czegoś podobnego. – cgyDeveloper
Jestem prawie pewny, że IronPython In Action obejmuje niektóre (chociaż są to martwe drzewa, które mogą być nieaktualne); możesz zajrzeć tutaj: http://blogs.msdn.com/srivatsn/archive/2008/09/16/hosting-ironpython-made-easier.aspx –
Mam przykład, który pokazuje, jak używać Pythona do skryptowania C# (lub VB.NET) na moim blogu na http://www.gotnet.biz/Blog/post/Mixing-Static-and-Dynamic-dotNET-Languages-November-2008-Update.aspx –