안녕하세요. 라즈베리파이에서 프로그램 구동 관련 질문드립니다.
라즈베리파이가 리눅스라던데 Winform 구동은 완전 불가능 한건지요?? 불가능 하다면 MQTT 클라이언트가 올라갈 예정에 리소스를 굉장히 중요하게 여기상황에서 WPF로 진행을 해도 무방할런지요. 개인적으로 WPF가 굉장히 무겁던데…
실시간 데이터를 시각적으로 예쁘게?? 표현해 주기를 바라는데 혹여 다른 대안이 있을까요??
윈폼과 wpf는 윈도우 전용입니다.
MAUI가 크로스 플랫폼이고요.
MAUI에서 xaml로 하시거나 MAUI Blazor Hybrid 정도가 정석이겠네요.
결론부터 말씀드리면 라즈베리파이에서 WPF나 WinForms 직접 구동은 힘들고 Avalonia 정도의 대안이 있습니다.
Windows Forms and WPF apps on Windows ARM
Windows ARM 버전에서는 .NET 기반(.NET Framework X) WinForms나 WPF를 구동할 수 있습니다.
Bringing your Windows Forms and WPF apps to ARM Devices | Microsoft Learn
Windows 11 ARM on Raspberry Pi
라즈페이파이에 구동가능한 Windows ARM은 존재하지만 원활한 구동을 위해서는 라즈베리파이 5이상이 필요합니다. 라즈베리파이 4에서도 구동은 가능하나 실사용에는 무리가 있늘 것으로 보입니다.
Windows 11 ARM on Raspberry Pi
Avalonia
크로스 플랫폼을 지원하는 Avalonia는 ARM 기반 Linux에서도 잘 구동 됩니다. WPF와 API 및 문법이 완전히 호환되지는 않지만 서드파티 라이브러리 없이 개발된 WPF응용프로그램이라면 큰 어려움 없이 포팅 가능합니다.
Running on Raspberry Pi with Raspbian Lite | Avalonia Docs
- Avalonia로 구현한 간단한 액자 on 라즈베리파이 4
Uno Platform
Uno는 아직 사용 경험이 없어서 쓸만한 상태인지는 잘 모겠네요.
Getting Started with Uno Platform and the Raspberry Pi
MONO 를 이용하면 Winform 으로 개발을 할 수 있습니다.
라즈베리파이 기반으로 만들어진 comfile Pi 라는 제품이 있는데 산업용 터치스크린 모듈입니다. 이 제품은 C#으로 프로그램을 개발하도록 되어 있는데 저도 C#을 이용해서 Winform 기반으로 제품을 만들고 있습니다.
일반 라즈베리파이에서 MONO 설치하면 C#개발이 될수 있습니다.
앗;; WPF까지 종속적이라니 이거 정말 실망이네요 ㅡㅡ;; Maui를 검색해 보니 이것 또한 리눅스는 지원을 안하네요;; 어쩐지 크로스플랫폼이라면서 리눅스란 단어가 안나오더니 … 급하게 다른 대안을 찾아보고 있네요 ㅠㅠ 왜 라즈베리에 GUI를 만들려고 하는지 ㅠㅠ 감사합니다~!
감사합니다ㅠㅠ 검색해보도록 하겠습니다. 최신 라즈베리를 쓴다고 했으니 확인해보겠습니다.
감사합니다. Mono도 한번 검색해보겠습니다~!!
웹서버를 사용해 웹으로 표시하는 것도 고려해보세요
처음 제가 제안했던게 어차피 브로커가 있으니 웹으로 구성하자고 했는데 클라이언트가 있는데 내부통신하면 되는걸 왜 서버를 구축하냐고 하시네요 ㅎㅎ;;
7년 전(?) 옆에 사수 분께서
윈폼을 모노로 빌드해주는 vs 모듈을 설치하시고
화면 위치조정 하신다고 하드코딩하시긴했었는데… Comfile Pi 이라는게 생겼다니…! 많이 좋아졌네요!
XAML을 사용하는 프레임워크(WPF, Avalonia, Uno Platform, Maui, OpenSilver)들은 시각적으로 자유로운 표현이 가능합니다.
그렇기 때문에 왠만한 리소스(이미지 파일)과 동일한 형태(?)로 표현하기 쉬워 리소스 파일들을 줄일 수 있습니다.
XAML프레임워크를 사용하는 프레임워크 중 리눅스 환경에서 구동이 가능한 Avalonia UI, Uno Platform도 전환을 고려해보시면 좋을 것 같아요 ![]()
참고로 Mono Project는 2024년 8월을 기점으로 더 이상 Microsoft의 후원을 받지 않는 프로젝트이며, WineHQ 전용 프레임워크로 이관된 상태입니다. 이전처럼 Mono가 여러 OS를 지원하기 위한 목적으로는 개발되지 않고, 온전히 Wine 프로젝트가 .NET Framework 애플리케이션을 지원하는 것에 필요한 부분만 집중적으로 개발이 이루어지게 됩니다.
실제 제품 개발용으로 Mono Framework를 사용하는 것은 그런 까닭에 추천드리지 않습니다. Mono 아래에 속해있던 여러 서브 프레임워크들 역시 마찬가지로 개발 목적이 바뀌었거나, 혹은 리소스 부족으로 개발이 중단된 것들이 많으니 참고하시면 좋을 것 같아 댓글 남깁니다.
닷넷 개발 도구의 연결 고리 중에, MAUI가 지원하는 TIZEN 플랫폼이 RPI를 지원합니다. (RPI 4 이상)
Tizen Custom Devices | Tizen Docs
Flash an Image to RPI | Tizen Docs
타이젠은 삼성이, MAUI는 MS가 버티고 있기 때문에 플랫폼의 앞날을 걱정하지 않아도 될 듯 합니다.
그리고, 임베디드 시스템에서 범용적으로 쓸 수 있는 .net nano 프레임워크도 있습니다.
.NET nanoFramework – Making it easy to write C# code for embedded systems.
