Возможно ли (и возможно) запускать приложения .NET на Raspberry Pi с Mono ?
Если да, насколько хорошо они бегут? Используется ли базовый графический интерфейс, или низкая производительность реально ограничивает его приложениями командной строки?
Возможно ли (и возможно) запускать приложения .NET на Raspberry Pi с Mono ?
Если да, насколько хорошо они бегут? Используется ли базовый графический интерфейс, или низкая производительность реально ограничивает его приложениями командной строки?
Ответы:
Существует вопрос StackOverflow, очень похожий на этот, Mono on Raspberry Pi . Однако, благодаря моим собственным исследованиям, я не смог найти ничего специфического для .NET, а только C #.
Вы можете установить среду выполнения, используя APT в дистрибутиве Debian, выполнив:
$ sudo apt-get install mono-runtime
Вы также можете (при условии, что у вас есть какой-то GUI, такой как LXDE) установить медленную Mono IDE с:
$ sudo apt-get install monodevelop
Для Arch Linux ARM вам нужно установить среду выполнения через Pacman , например так:
$ sudo pacman -S mono
Mono IDE может быть установлен аналогичным образом:
$ sudo pacman -S monodevelop
Вопреки распространенному мнению, скомпилированный код VB.NET отлично работает на Raspberry Pi, по крайней мере, под Debian. apt-get установите mono-vbnc, а затем запустите VB exe в качестве аргумента для mono, например, mono yourexe.exe
Я не делал никаких тестов производительности, так как я не пишу приложения с высокой производительностью, но пока все в порядке.
Код .NET, использующий библиотеки .NET Framework, не может работать на Raspberry Pi, так как для его работы требуется ARM-версия NETMF или CLR . На данный момент Microsoft еще не выпустила Windows на ARM (WoA). Обратитесь к Эксперименту 19 для Microsoft Research CLR работает над ARM.
Однако запуск кода .NET (без ссылки или с использованием библиотек .NET Framework) возможен при использовании Mono, поскольку Mono имеет CLR для устройств ARM.
См. Также Создание Windows для архитектуры процессора ARM для получения информации о Windows на ARM (WoA).
У меня есть приложение командной строки .NET для работы с Mono. Приложение в основном делает что-то похожее на переадресацию портов, принимает данные, полученные через последовательный UART, и пересылает их по TCP / IP. Он использует классы SerialPort, TcpListener, TcpClient и Socket .NET, при этом только незначительные изменения необходимы для кода обработки SerialPort. Я использую ОС Debian Soft Float.
С точки зрения производительности, первое, с чем я столкнулся, были некоторые существенные замедления в некотором коде отладки / трассировки, который форматировал массив байтов в строку для целей регистрации. Это было в 50 раз медленнее, чем на ПК.
Поэтому я бы рекомендовал написать несколько тестов производительности при переносе существующего кода на RPi.
Для модульного тестирования NUnit отлично работает на RPi ...
Чтобы установить NUnit:
sudo apt-get install nunit
Бежать:
nunit-console appUnderTest.exe