¿Es posible (y factible) ejecutar aplicaciones .NET en Raspberry Pi con Mono ?
Si es así, ¿qué tan bien corren? ¿Se puede usar una GUI básica o el rendimiento deficiente lo restringe de manera realista a las aplicaciones de línea de comandos?
¿Es posible (y factible) ejecutar aplicaciones .NET en Raspberry Pi con Mono ?
Si es así, ¿qué tan bien corren? ¿Se puede usar una GUI básica o el rendimiento deficiente lo restringe de manera realista a las aplicaciones de línea de comandos?
Respuestas:
Hay una pregunta de StackOverflow bastante similar a esta, Mono en Raspberry Pi . Sin embargo, a través de mi propia investigación, no he podido encontrar nada específico para .NET, sino solo C #.
Puede instalar el tiempo de ejecución usando APT en una distribución de Debian ejecutando:
$ sudo apt-get install mono-runtime
También puede (suponiendo que tenga algún tipo de GUI como LXDE) instalar un IDE Mono lento con:
$ sudo apt-get install monodevelop
Para Arch Linux ARM necesita instalar el tiempo de ejecución a través de Pacman , así:
$ sudo pacman -S mono
El Mono IDE se puede instalar de manera similar:
$ sudo pacman -S monodevelop
Contrariamente a la creencia popular, el código compilado de VB.NET funciona bien en Raspberry Pi, al menos en Debian. apt-get install mono-vbnc y luego ejecuta tu exe VB como argumento para mono, por ejemplo, mono yourexe.exe
No he hecho ningún punto de referencia de rendimiento ya que no estoy escribiendo una aplicación de rendimiento intensivo, pero hasta ahora parece estar bien.
El código .NET que usa las bibliotecas de .NET Framework no puede ejecutarse en Raspberry Pi ya que requiere una versión ARM compatible de NETMF o CLR para ejecutarse. A partir de ahora, Microsoft aún no ha lanzado Windows en ARM (WoA). Consulte el Experimento 19 para que Microsoft Research CLR funcione en ARM.
Sin embargo, es posible ejecutar código .NET (sin referencia o usar Bibliotecas Framework .NET) usando Mono ya que Mono tiene un CLR para dispositivos ARM.
Consulte también Creación de Windows para la arquitectura del procesador ARM para obtener información sobre Windows en ARM (WoA).
Tengo una aplicación .NET de línea de comandos para trabajar con Mono. La aplicación básicamente está haciendo algo similar al reenvío de puertos, tomando los datos recibidos a través del UART serie y reenviándolos a través de TCP / IP. Utiliza las clases SerialPort, TcpListener, TcpClient y Socket .NET, con solo pequeños cambios necesarios en el código de manejo de SerialPort. Estoy usando el sistema operativo de flotación suave de Debian.
En términos de rendimiento, lo primero que encontré fueron algunas ralentizaciones significativas en algún código de depuración / rastreo que formateaba una matriz de bytes en una cadena para fines de registro. Fue 50 veces más lento en comparación con correr en una PC.
Por lo tanto, recomendaría escribir algunas pruebas de unidad de rendimiento al portar código existente al RPi.
Para pruebas unitarias, NUnit funciona bien en el RPi ...
Para instalar NUnit:
sudo apt-get install nunit
Correr:
nunit-console appUnderTest.exe