.NET 크로스 플랫폼 대결: MAUI vs Uno vs Avalonia (그리고 Avalonia가 승리한 이유)

발행: (2025년 12월 23일 오전 12:42 GMT+9)
18 분 소요
원문: Dev.to

Source: Dev.to

위에 제공된 Source 라인 외에 번역할 텍스트를 알려주시면, 해당 내용을 한국어로 번역해 드리겠습니다.

Introduction

저는 첫 베타 버전부터 .NET 코드를 작성해 왔습니다. 30년이 넘는 전문 개발 경력 동안 좋은 것, 나쁜 것, 그리고 포기된 것들을 모두 보았습니다. 저는 C#를 사랑합니다 — 생산 소프트웨어를 구축하기에 가장 우아한 언어 중 하나이기 때문이죠. 하지만 마이크로소프트의 UI‑framework 전략? 그것은 전혀 다른 이야기였습니다.

문제

나는 SwiftUI로 만든 도구를 Windows로 포팅해야 했습니다. 간단한 요구사항으로 시작했지만 Microsoft의 파편화된 생태계를 깊이 파고들게 되었고 결국 MAUI를 완전히 포기하게 되었습니다. 아래는 제가 배운 내용입니다.

현재 역할

  • 직함: Developer Advocate at Ditto
  • 주요 업무: 개발자가 Ditto를 사용해 오프라인‑우선 모바일 데이터베이스 플랫폼으로 애플리케이션을 구축하도록 돕는 것. 이 플랫폼은 피어‑투‑피어 메쉬 네트워킹 및 실시간 데이터 동기화를 가능하게 함.
  • 핵심 가치: 네트워크 연결 여부와 관계없이 안정적으로 작동하는 애플리케이션을 제공하며, Conflict‑Free Replicated Data Types (CRDTs)를 사용해 Bluetooth, Wi‑Fi 또는 LAN을 통해 지속적인 클라우드 접근 없이 데이터를 동기화함.

Source:

원본 도구

  • Name: Edge Debug Helper
  • Purpose: MongoDB 커넥터와 작업할 때 Ditto 앱을 디버깅합니다.
  • Initial Stack: SwiftUI → 며칠 만에 만든 기능적인 macOS 도구.

Windows 개발자들이 크로스‑플랫폼 버전을 요청했을 때, SwiftUI의 한계가 명백해졌습니다.

첫 번째 대안: Rust

  • 장점: 진정한 크로스‑플랫폼 기능.
  • 단점: 학습 곡선이 가파르고, UI 라이브러리가 제한적이며, 기능을 구축하기보다 빌린 검사기와 싸우는 데 더 많은 시간을 소비함.

Returning to .NET

저는 제 경력 전체에 걸쳐 .NET을 사용해 왔기 때문에, 자연스러운 질문은 whether가 아니라 which .NET UI framework를 선택할지였습니다.

Microsoft의 UI 프레임워크 실적

프레임워크상태비고
Windows Forms여전히 기술적으로 지원됨고대
WPF20년 된Windows 전용
Silverlight폐기됨수많은 개발자를 곤경에 빠뜨림
UWP폐기됨“한 번 작성, 어디서든 실행”이라는 약속 후 공식적으로 중단됨
WinUI미래 불확실
XamarinMAUI로 이전됨지원이 2024년 5월에 종료
MAUI최신 시도스포일러: 데스크톱 앱에 적합하지 않음

이 패턴은 업계 전반에 걸쳐 수백만 달러에 달하는 낭비된 개발 노력을 나타냅니다. 몇 년마다 Microsoft는 새로운 프레임워크로 전환하고, 개발자들은 애플리케이션을 다시 작성하거나 레거시 코드를 유지보수해야 합니다. 정말 지칩니다.

The MAUI Experience

Why I Started with MAUI

  • Official Microsoft cross‑platform framework → the obvious first choice.

What Went Wrong

IssueDetails
macOS supportMac Catalyst를 사용하며, 네이티브 AppKit이 아닙니다. 성능이 끔찍하고, 기본적으로 iOS 앱을 데스크톱에 억지로 끼워 넣은 형태입니다.
Windows UI괜찮은 UI를 만들려면 너무 많은 작업이 필요했습니다.
Cross‑platform consistencymacOS에서 동일한 앱을 보기 좋게 만드는 것은 더욱 어려웠습니다.
Signing & distribution동료의 Windows 머신에 증명 개념을 배포하려면 고통스러운 서명 과정이 필요했습니다.
Tooling parityApple의 Xcode Cloud는 빌드를 자동 서명하지만, Microsoft는 이에 상응하는 기능을 제공하지 않습니다. GitHub Actions를 이용한 우회 방법은 복잡하고, 2019년 이후로 .NET을 풀타임으로 다루지 않은 사람에게는 특히 어렵습니다.
Stability최신 안정 버전에서도 MAUI는 거친 부분이 있습니다. CollectionView 개선을 위해 .NET 10 베타를 사용해 보았지만—그 개선은 도움이 되었지만, 기본 기능에 베타 릴리스를 의존하는 것은 받아들일 수 없습니다.
Linux support사실상 존재하지 않습니다. 이는 uConsole(휴대용 Linux 장치)에서 Ditto의 메쉬 네트워킹을 테스트해야 할 때 큰 장애물이 되었습니다.
Production readinessmacOS, Windows, and Linux를 모두 타깃으로 하는 크로스‑플랫폼 프로덕션에 아직 준비되지 않았습니다.

Bottom line: MAUI는 내가 필요로 하는 작업에 적합하지 않습니다. Silverlight, UWP, 그리고 이전 프레임워크들처럼 결국 버려질 가능성이 높은 또 다른 약속처럼 느껴집니다.

Uno 플랫폼 탐색

첫인상

  • 툴링: MAUI가 가져야 할 모든 것이지만 그렇지 않음.
    • AI 지원 핫 디자인
    • 실시간 XAML 업데이트
    • Figma 통합

이러한 기능들 덕분에 XAML 애플리케이션을 작성하는 것이 진정으로 즐거워집니다. Uno의 개발자 경험은 MAUI를 훨씬 능가합니다.

단점

  • 프로젝트 구조 복잡성: 여러 프로젝트, 조건부 컴파일, 플랫폼별 구현이 몇 년 만에 풀타임 .NET으로 복귀하는 사람에게는 필요 이상으로 무겁게 느껴졌습니다.
  • Linux 지원: 사용 가능하여 Uno가 MAUI보다 앞서지만 아직 프로덕션 준비가 되지는 않았습니다.

커뮤니티 상호작용

저는 YouTube 채널에서 라이브 스트리밍 중에 문제를 기록했습니다. Uno 팀은 신속하게 대응하여 많은 문제를 해결하는 업데이트를 출시했습니다. 개발자 커뮤니티에 대한 그들의 배려가 분명히 드러났으며, 그들과의 상호작용은 매우 긍정적이었습니다.

Takeaways

  1. Microsoft’s UI framework churn는 안정적이고 장기적인 솔루션이 필요한 개발자에게 실제 고통을 안겨줍니다.
  2. MAUI는 특히 Linux가 필요한 경우 데스크톱 중심의 크로스‑플랫폼 시나리오에서 아직 부족합니다.
  3. Uno Platform은 뛰어난 개발자 경험과 더 넓은 크로스‑플랫폼 도달 범위를 제공하지만, 프로젝트 복잡성과 아직 성숙되지 않은 Linux 지원 때문에 완벽한 대체품은 아닙니다.
  4. 커뮤니티 주도 프레임워크(예: 내가 언급한 Avalonia)와 반응이 빠른 벤더 팀은 실제 생산성에 큰 차이를 만들 수 있습니다.

마무리 생각

비슷한 상황에 처해 있다면—macOS, Windows, Linux용 진정한 크로스‑플랫폼 .NET UI가 필요하다면—툴링 완성도(Unо)와 프로젝트 단순성(MAUI) 사이의 트레이드‑오프를 저울질해야 할 것입니다. Microsoft가 안정적이고 프로덕션‑레디 데스크톱 경험을 제공할 때까지, 생태계는 계속해서 파편화될 것이며 개발자들은 여전히 이를 탐색하는 데 귀중한 시간을 소비하게 될 것입니다.

Uno에서 Avalonia까지의 여정

TL;DR: Uno, MAUI, Avalonia를 평가한 결과, 패키징, UI 라이브러리, 문서, 그리고 크로스‑플랫폼 성능 면에서 Avalonia가 내 프로젝트에 가장 적합하다고 판단했습니다.

1. 내가 Uno를 고려하게 된 이유

  • Platform(.NET UI 플랫폼)에 깊은 인상을 받았습니다.
  • Avalonia가 안 될 경우, Uno가 백업 옵션이 될 수 있었습니다.

2. 전환점 – Avalonia의 새로운 패키징 솔루션

“이건 .NET용 Xcode Cloud와 같은 느낌이었어요.
AI 비서에게 ‘macOS용 Avalonia 앱을 서명된 DMG로 패키징해줘’라고 말하면, 두 분 뒤에 바로 프로덕션‑레디, 서명된 애플리케이션이 만들어집니다. 인증서 관리도 없고, 빌드 스크립트도 없으며, 오후를 낭비하지 않아도 됩니다.”

  • 핵심 포인트: Windows에서 macOS DMG 파일을 빌드하고 서명할 수 있다는 점 – 기존 도구로는 불가능했던 기능입니다.

3. Avalonia 첫 체험

  • 두 개 화면으로 간단한 POC를 시작했습니다:
    1. 로그인 화면
    2. 연결된 Ditto SDK 피어를 보여주는 메인 UI

결과:

  • 문서가 명확하고 포괄적이며 좋은 예제가 풍부합니다.
  • 컨트롤이 기대대로 동작했습니다.
  • 초기 UI는 다소 평범했지만, 테마 옵션을 활용할 수 있었습니다.

4. 테마 및 UI 라이브러리

테마 / 라이브러리경험
Material Design (내장)오래된 버전이며, 텍스트 외곽선이 렌더링되지 않는 등 결함이 있습니다.
Fluent DesignmacOS에서 매우 어색하게 보이며, SwiftUI 수준의 다듬어짐이 부족합니다.
SukiUI (서드‑파티)게임 체인저 – Avalonia용 완전한 데스크톱 UI 라이브러리입니다.
• GlassCard 컨트롤앱에 즉시 전문적이고 다듬어진 느낌을 부여했습니다.
• 사이드‑메뉴 네비게이션“기능은 하지만 못생긴” UI를 “실제로 쓰고 싶은” UI로 변신시켰습니다.
• Dock 컨트롤문제가 있었고, 유지보수자가 야간 빌드를 제안했습니다. 일시적으로 제거했지만, 라이브러리는 활발히 개발 중이며 버그가 빠르게 수정됩니다.

5. 성능 관찰

  • Uno vs. Avalonia: 큰 성능 차이는 없으며, 두 프레임워크 모두 Windows, macOS, Linux에서 빠르게 렌더링됩니다.
  • 메모리 사용량: Avalonia가 약간 더 효율적인 편이었습니다.
  • 전체적인 평가: 모든 대상 플랫폼에서 일관되고 반응성이 좋은 성능을 보여줍니다.

6. Avalonia의 기대되는 로드맵

  1. Impeller 렌더링 엔진

    • 원래 Google이 Flutter용으로 만든 엔진.
    • GPU‑우선으로 동작해 부드러운 프레임 레이트, 낮은 VRAM 사용량, 그리고 더 예측 가능한 성능을 제공합니다.
    • Avalonia는 여러 백엔드를 제공할 예정이며(SkiaSharp은 여전히 안정적), 개발자는 필요에 맞는 백엔드를 선택할 수 있습니다.
  2. Linux용 MAUI의 렌더링 레이어로서 Avalonia

    • Microsoft의 MAUI가 이제 Linux 지원을 위해 Avalonia에 의존하게 되었습니다 – 이는 Avalonia의 기술적 기반에 대한 큰 검증입니다.

7. 최종적으로 Avalonia를 선택한 이유

  • SukiUI 변신 – 최소한의 노력으로 전문적인 외관을 구현.
  • 문서 – 포괄적이고 명확하며 예제가 풍부.
  • 커뮤니티 – 활발하고 친절하며 빠른 응답.
  • DevTools & Parcel – DevTools는 견고합니다(Uno의 디자이너 도구가 약간 더 깔끔하지만, Parcel의 패키징·서명 자동화가 그 차이를 상쇄합니다).
  • 비용 – 구독료가 저렴해 소규모 팀에도 적합하고, 서명·패키징 번거로움을 없애줍니다.
  • 크로스‑플랫폼 일관성 – Windows, macOS, Linux 모두에서 좋은 성능을 보이며, Mac Catalyst의 제약이나 플랫폼‑특화 문제 없이 동작합니다.
  • 생산성 – 문서와 예제 덕분에 개념 증명 단계에서 기능 개발 단계로 빠르게 전환할 수 있었습니다.

8. Uno Platform에 대한 한마디

  • Uno의 개발자 도구는 업계 최고 수준이며, 팀이 개발자를 진심으로 배려한다는 느낌을 줍니다.
  • Microsoft 생태계에 깊이 투자했거나 특정 Uno 기능이 필요하다면, 여전히 좋은 선택입니다.

9. MAUI를 권하지 않는 이유 (진지한 데스크톱 앱 기준)

  • macOS 성능: 저조함.
  • Linux 지원: 사실상 존재하지 않음.
  • 전체적인 완성도: 거친 부분이 많아 아직 프로덕션에 적합하지 않은 느낌입니다.

.NET 개발자로서

Source:

oper for three decades, I’ve seen this pattern before. Microsoft isn’t investing enough in MAUI, while smaller companies like Uno and Avalonia are delivering better solutions.*

10. 최종 생각

  • Avalonia는 오늘날 바로 사용할 수 있습니다. Microsoft의 다음 전환을 기다리지 않겠습니다.
  • 연휴 기간에 앱을 마무리할 생각에 기대됩니다.
  • Avalonia는 빠르고, 안정적이며, 진정한 크로스‑플랫폼임이 입증되었습니다.
  • 문서는 훌륭하고, 커뮤니티는 활발하며, 생태계(예: SukiUI, Parcel)는 개발을 즐겁게 만들어 줍니다.

데스크톱‑우선, 크로스‑플랫폼 앱을 위한 .NET UI 프레임워크를 평가하고 있다면, 특히 자동 패키징, 활발한 컴포넌트 생태계, 현대적인 GPU‑우선 렌더링을 수용하는 로드맵을 중시한다면 Avalonia를 진지하게 고려해 보세요.

툴링은 수년간 .NET 데스크톱 개발을 괴롭혀 온 문제점을 제거합니다.

30년 동안 .NET 개발—Windows Forms, WPF, Silverlight, UWP, Xamarin, 그리고 MAUI를 거치면서—드디어 장기적으로 신뢰할 수 있는 프레임워크를 찾았습니다. Microsoft 제품이 아니기에 오히려 잘 작동하는 것일지도 모릅니다.

크로스‑플랫폼 .NET 애플리케이션을 구축하고 있다면 Avalonia를 진지하게 살펴보세요. 이것이 MAUI가 되어야 했던 모습입니다.

Back to Blog

관련 글

더 보기 »