Apakah mungkin (dan layak) untuk menjalankan aplikasi .NET pada Raspberry Pi dengan Mono ?
Jika demikian, seberapa baik mereka berjalan? Apakah GUI dasar dapat digunakan, atau apakah kinerja buruk realistis membatasi untuk aplikasi perintah baris?
Apakah mungkin (dan layak) untuk menjalankan aplikasi .NET pada Raspberry Pi dengan Mono ?
Jika demikian, seberapa baik mereka berjalan? Apakah GUI dasar dapat digunakan, atau apakah kinerja buruk realistis membatasi untuk aplikasi perintah baris?
Jawaban:
Ada pertanyaan StackOverflow yang sangat mirip dengan ini, Mono on Raspberry Pi . Namun, melalui penelitian saya sendiri, saya belum dapat menemukan sesuatu yang spesifik untuk .NET, melainkan hanya C #.
Anda dapat menginstal runtime menggunakan APT pada distro Debian dengan menjalankan:
$ sudo apt-get install mono-runtime
Anda juga dapat (dengan asumsi Anda memiliki semacam GUI seperti LXDE) menginstal IDE Mono lambat dengan:
$ sudo apt-get install monodevelop
Untuk Arch Linux ARM Anda harus menginstal runtime via Pacman , seperti:
$ sudo pacman -S mono
IDE Mono dapat diinstal dengan cara yang serupa:
$ sudo pacman -S monodevelop
Berlawanan dengan kepercayaan umum, kode yang dikompilasi VB.NET berjalan dengan baik di Raspberry Pi, setidaknya di bawah Debian. apt-get install mono-vbnc dan kemudian jalankan exe VB Anda sebagai argumen untuk mono misalnya mono yourexe.exe
Saya belum melakukan tolok ukur kinerja karena saya tidak menulis aplikasi intensif kinerja tetapi sejauh ini tampaknya baik-baik saja.
Kode .NET yang menggunakan pustaka .NET Framework tidak dapat berjalan di Raspberry Pi karena memerlukan versi NETMF atau CLR yang kompatibel dengan ARM untuk dijalankan. Sampai sekarang, Microsoft belum merilis Windows pada ARM (WoA). Lihat Eksperimen 19 untuk Microsoft Research CLR yang berfungsi pada ARM.
Namun, menjalankan kode .NET (tanpa referensi atau menggunakan .NET Framework Libraries) dimungkinkan menggunakan Mono karena Mono memiliki CLR untuk perangkat ARM.
Lihat juga Membangun Windows untuk arsitektur prosesor ARM untuk informasi tentang Windows pada ARM (WoA).
Saya punya perintah. Aplikasi NET untuk bekerja dengan Mono. Aplikasi ini pada dasarnya melakukan sesuatu yang mirip dengan port forwarding, mengambil data yang diterima melalui serial UART dan meneruskannya melalui TCP / IP. Menggunakan kelas SerialPort, TcpListener, TcpClient dan Socket .NET, dengan hanya perubahan kecil yang diperlukan untuk kode penanganan SerialPort. Saya menggunakan soft float OS Debian.
Dalam hal kinerja, hal pertama yang saya temui adalah beberapa perlambatan signifikan dalam beberapa kode debug / jejak yang memformat array byte menjadi string untuk keperluan logging. Itu 50x lebih lambat dibandingkan berjalan di PC.
Jadi saya akan merekomendasikan menulis beberapa tes unit kinerja saat porting kode yang ada ke RPi.
Untuk pengujian unit, NUnit berfungsi dengan baik pada ...
Untuk menginstal NUnit:
sudo apt-get install nunit
Untuk berlari:
nunit-console appUnderTest.exe