É possível (e viável) executar aplicativos .NET no Raspberry Pi com Mono ?
Se sim, quão bem eles correm? Uma GUI básica é utilizável ou o desempenho ruim a restringe realisticamente aos aplicativos de linha de comando?
É possível (e viável) executar aplicativos .NET no Raspberry Pi com Mono ?
Se sim, quão bem eles correm? Uma GUI básica é utilizável ou o desempenho ruim a restringe realisticamente aos aplicativos de linha de comando?
Respostas:
Há uma pergunta StackOverflow bastante semelhante a esta, Mono no Raspberry Pi . No entanto, por meio de minha própria pesquisa, não consegui encontrar nada específico para o .NET, mas apenas o C #.
Você pode instalar o tempo de execução usando o APT em uma distribuição Debian executando:
$ sudo apt-get install mono-runtime
Você também pode (supondo que você tenha algum tipo de GUI, como o LXDE) instalar um IDE Mono lento com:
$ sudo apt-get install monodevelop
Para o Arch Linux ARM, você precisa instalar o tempo de execução via Pacman , da seguinte forma:
$ sudo pacman -S mono
O IDE Mono pode ser instalado de maneira semelhante:
$ sudo pacman -S monodevelop
Contrariamente à crença popular, o código compilado do VB.NET funciona bem no Raspberry Pi, pelo menos no Debian. apt-get install mono-vbnc e execute o seu VB exe como um argumento para mono, por exemplo, mono yourexe.exe
Não fiz nenhum benchmark de desempenho, pois não estou escrevendo um aplicativo com alto desempenho, mas parece estar bom até agora.
O código .NET que está usando bibliotecas do .NET Framework não pode ser executado no Raspberry Pi, pois requer uma versão compatível com ARM do NETMF ou CLR para ser executada. A partir de agora, a Microsoft ainda não lançou o Windows no ARM (WoA). Consulte a Experiência 19 para obter informações sobre o Microsoft Research CLR no ARM.
No entanto, é possível executar o código .NET (sem referência ou usando as Bibliotecas do .NET Framework) usando o Mono, pois o Mono possui um CLR para dispositivos ARM.
Consulte também Criando o Windows para a arquitetura do processador ARM para obter informações sobre o Windows no ARM (WoA).
Eu tenho um aplicativo .NET de linha de comando para trabalhar com o Mono. O aplicativo está basicamente fazendo algo semelhante ao encaminhamento de porta, pegando dados recebidos via UART serial e encaminhando-os por TCP / IP. Ele usa as classes SerialPort, TcpListener, TcpClient e Socket .NET, com apenas pequenas alterações necessárias no código de manipulação da SerialPort. Estou usando o SO Debian Soft Float.
Em termos de desempenho, a primeira coisa que me deparei foi algumas lentidões significativas em algum código de depuração / rastreamento que estava formatando uma matriz de bytes em uma sequência para fins de registro. Foi 50x mais lento em comparação com a execução em um PC.
Portanto, eu recomendo escrever alguns testes de unidade de desempenho ao portar o código existente no RPi.
Para testes de unidade, o NUnit funciona bem no RPi ...
Para instalar o NUnit:
sudo apt-get install nunit
Para correr:
nunit-console appUnderTest.exe