Có thể (và khả thi) để chạy các ứng dụng .NET trên Raspberry Pi với Mono không?
Nếu vậy, họ chạy tốt như thế nào? Là một GUI cơ bản có thể sử dụng được, hay hiệu năng kém thực tế hạn chế nó đối với các ứng dụng dòng lệnh?
Có thể (và khả thi) để chạy các ứng dụng .NET trên Raspberry Pi với Mono không?
Nếu vậy, họ chạy tốt như thế nào? Là một GUI cơ bản có thể sử dụng được, hay hiệu năng kém thực tế hạn chế nó đối với các ứng dụng dòng lệnh?
Câu trả lời:
Có một câu hỏi StackOverflow khá giống với câu hỏi này, Mono trên Raspberry Pi . Tuy nhiên, qua nghiên cứu của riêng tôi, tôi không thể tìm thấy bất cứ điều gì cụ thể về .NET, mà chỉ là C #.
Bạn có thể cài đặt thời gian chạy bằng APT trên bản phân phối Debian bằng cách thực thi:
$ sudo apt-get install mono-runtime
Bạn cũng có thể (giả sử bạn có một số loại GUI như LXDE) cài đặt IDE Mono chậm với:
$ sudo apt-get install monodevelop
Đối với Arch Linux ARM, bạn cần cài đặt thời gian chạy qua Pacman , như vậy:
$ sudo pacman -S mono
IDE Mono có thể được cài đặt theo cách tương tự:
$ sudo pacman -S monodevelop
Trái với suy nghĩ phổ biến, mã biên dịch VB.NET chạy tốt trên Raspberry Pi, dưới Debian ít nhất. apt-get install mono-vbnc và sau đó chạy exe VB của bạn làm đối số cho mono, ví dụ: mono yourexe.exe
Tôi chưa thực hiện bất kỳ tiêu chuẩn hiệu suất nào vì tôi không viết một ứng dụng chuyên sâu về hiệu suất nhưng có vẻ vẫn ổn cho đến nay.
Mã .NET đang sử dụng các thư viện .NET Framework không thể chạy trên Raspberry Pi vì nó yêu cầu phiên bản NETMF hoặc CLR tương thích với ARM để chạy. Đến bây giờ, Microsoft vẫn chưa phát hành Windows trên ARM (WoA). Tham khảo Thí nghiệm 19 để Microsoft Research CLR hoạt động trên ARM.
Tuy nhiên, chạy mã .NET (không có tham chiếu hoặc sử dụng Thư viện .NET Framework) có thể sử dụng Mono vì Mono có CLR cho các thiết bị ARM.
Xem thêm Xây dựng Windows cho kiến trúc bộ xử lý ARM để biết thông tin về Windows trên ARM (WoA).
Tôi đã có một ứng dụng .NET dòng lệnh để làm việc với Mono. Ứng dụng về cơ bản đang làm một cái gì đó giống như chuyển tiếp cổng, lấy dữ liệu nhận được thông qua UART nối tiếp và chuyển tiếp nó qua TCP / IP. Nó sử dụng các lớp SerialPort, TcpListener, TcpClient và Socket .NET, chỉ với những thay đổi nhỏ cần thiết cho mã xử lý SerialPort. Tôi đang sử dụng hệ điều hành float mềm Debian.
Về hiệu năng, điều đầu tiên tôi gặp phải là một số sự chậm chạp đáng kể trong một số mã gỡ lỗi / theo dõi đang định dạng một mảng byte thành một chuỗi cho mục đích ghi nhật ký. Nó chậm hơn 50 lần so với chạy trên PC.
Vì vậy, tôi khuyên bạn nên viết một số bài kiểm tra đơn vị hiệu suất khi chuyển mã hiện có sang RPi.
Đối với thử nghiệm đơn vị, NUnit hoạt động tốt trên RPi ...
Để cài đặt NUnit:
sudo apt-get install nunit
Chạy:
nunit-console appUnderTest.exe