티스토리 뷰
C# 닷넷 환경에서 개발한 프로그램을 윈도우나 리눅스, 맥에 그대로 실행하는 데 있어 가장 큰 장애가 되는 것은 UI 프레임워크이다. WinForms 기반으로 뚝딱뚝딱 프로그램을 만들었던 경험이 있던 개발자가 닷넷 환경을 생각하며 리눅스에서 프로그램을 실행하면 아주 간단한 프로그램이야 별 차이 없이 동작하는 것처럼 보이기도 하지만 UI가 조금이라고 복잡해지고 깊이가 있으면 화면이 깨지거나 아예 실행이 실패하기도 한다.

그래서, 크로스플랫폼을 지원하는 UI 프레임워크를 찾아보다가 아발로니아 UI를 만나게 되었다. 크로스플랫폼을 바이너리 레벨, 즉, 런타임 레벨로 지원하는 것은 아니다. 하나의 소스 코드로 여러 가지 플랫폼에서 구동하는 프로그램을 작성하고자 하는 개발자에게 적절한 솔루션이다. 소스 코드는 C#과 XAML(Extensible Application Markup Language)로 작성한다. 이렇게 코드를 작성하면 플랫폼이 달라지더라도 동일한 사용자 인터페이스를 보장하다는 것이다. 무료이고 오픈소스인데 라이선스는 가장 개방적인 쪽인 MIT 라이선스이다. 깃허브 주소는 다음과 같다.
재미있는 것은 오픈소스 관련 비즈니스를 수행하는 회사가 발트 3국 중의 하나인 에스토니아이다. EU에 가입된 나라이기는 하지만 개인적으로 조금 생소하기는 하다. 한국에서 수도인 탈린으로 가는 직항 편이 없다. 단점으로 자료가 부족해서 조금 복잡하거나 큰 프로그램을 만들기에는 부담된다고 하는 사람도 있는데 필자의 의견으로는 최후의 보루인 소스가 있고 https://docs.avaloniaui.net/로 가면 나름의 문서화 자료들도 만날 수 있다.
아발로니아를 기반으로 프로그램을 작성하면 윈도우, 리눅스, 맥 OS와 같은 데스크톱 운영체제뿐만 아니라 안드로이드와 iOS와 같은 모바일 운영체제, 그리고 웹브라우저에서 수행 가능한 웹어셈블리로도 제작할 수 있다. 아발로니아의 핵심 특성 중의 하나는 렌더링 엔진으로 SkiaSharp(https://github.com/mono/SkiaSharp)을 사용한다는 것인데 구글의 2D 그래픽 라이브러리인 Skia를 기반으로 한 그래픽 API로 C#으로 작성한 것이다. 결과적으로 아발로니아의 플랫폼 호환성은 SkiaSharp에 의존적이라는 것을 짐작할 수 있다. 스키아가 연동하는 플랫폼들은 다음과 같다.
.NET Standard 1.3
.NET Core
.NET 6
Tizen
Android
iOS
tvOS
macOS
Mac Catalyst
WinUI 3 (Windows App SDK / Uno Platform)
Windows Classic Desktop (Windows.Forms / WPF)
Web Assembly (WASM)
Uno Platform (iOS / macOS / Android / WebAssembly)
아발로니아의 또 다른 핵심 특성은 XAML를 사용한다는 것이다. XAML에 익숙한 사용자라면 WPF(Windows Presentation Foundation) UI 프레임워크 기반 프로그램을 경험한 개발자로 볼 수 있다. 그렇다고 아발로니아 UI가 WPF와 호환된다는 것은 아니다. 코드는 아발로니아 UI에 맞게 포팅하는 과정을 밟아야 한다. 만약 WPF 기반으로 작성한 프로그램을 리눅스나 맥 OS에서 구동하고 싶다면 Avalonia XPF라 부르는 유료 제품을 구매하면 된다. 오프소스 연관 비즈니스 중의 하나로 볼 수 있다. XAML에 익숙하지 않은 개발자라면 자료가 풍부한 WPF 기반 프로그램 제작을 경험해 보고 아발로니아 UI를 사용하는 것도 방법이다. WPF 기반 프로그램의 대표적인 특성 중의 하나가 UI 디자인과 비즈니스 로직을 분리하여 개발한다는 것인데 아발로니아도 MVVM(Model-View-View Model) 패턴을 제시하고 있다.
눈에 들어오는 기능 중에 하나가 프로그램을 운영체제 전용 AOT(Ahead-of-Time) 프로그램으로 제작할 수 있다는 것인데, 로딩을 빠르게 하고, 보안성을 강화시킬 수 있으며 닷넷 런타임이 없는 환경에서도 수행가능한 장점을 가질 수 있다. 지원하는 플랫폼은 다음과 같다.
Windows x64
Windows Arm64
Linux x64
Linux Arm64
macOS x64
macOS Arm64
개발자 입장에서 개발을 시작하려면 필요한 환경을 준비해야 하는데, 아발로니아는 젯브레인 라이더를 추천하기는 하지만 비주얼스튜디오 2022, 비주얼스튜디오 코드에 대한 확장도 지원하고 있다. 필자는 비주얼스튜디오 코드를 개발환경으로 선택할까 한다.
자 이제 시작이다!
'프로그래밍' 카테고리의 다른 글
| VSCode의 문법 구분 색상 변경하기 (0) | 2025.09.19 |
|---|---|
| C# WPF 첫 프로그램 만들기 (0) | 2025.09.18 |
| C#으로 문자 보내기 (0) | 2025.08.29 |
| C#으로 이메일 보내기 (0) | 2025.08.29 |
| C# 배열 확장 및 항목 삭제하기 (0) | 2025.08.29 |