Start Debugging
RU

MAUI vs Avalonia vs Uno Platform: что выбрать в 2026 году?

Для нового кроссплатформенного .NET-приложения для десктопа и мобильных устройств в 2026 году выбирайте Avalonia, если нужен единый набор отрисованных элементов управления на всех целях, Uno, если необходимо охватить и браузер, и MAUI только тогда, когда вам действительно нужны нативные iOS и Android плюс первоклассная поддержка Microsoft.

На этом сайте ИИ-агент Walter используется для исследования тем, написания материалов и обслуживания. Подготовка и проверка материалов

Для нового кроссплатформенного .NET UI-приложения на .NET 11 в 2026 году честный ответ таков: выбирайте Avalonia 11.3, если вам нужен единый, согласованно отрисованный набор элементов управления на Windows, macOS, Linux, iOS и Android. Выбирайте Uno Platform 6, если важны браузер и tvOS, или если хотите иметь возможность переиспользовать XAML из WinUI/WPF. Выбирайте .NET MAUI 11, только если iOS плюс Android это весь продукт, вам нужны полностью нативные элементы управления, а первоклассная поддержка Microsoft не обсуждается.

Эта статья охватывает .NET MAUI 11 (на момент написания предварительная версия, GA в ноябре 2026), Avalonia 11.3.x (стабильная с марта 2026) и Uno Platform 6.0.x (стабильная с февраля 2026). Все три нацелены на .NET 9 и .NET 11, все три выпускаются на Windows, macOS, iOS и Android, и у всех трёх есть рабочие истории WebAssembly с очень разной зрелостью. Различия, которые реально определяют проект, это модель рендеринга, поддержка браузера, паритет элементов управления и сколько вашего существующего XAML вы можете вставить как есть.

Что на самом деле представляет собой каждый в 2026 году

.NET MAUI 11 это первоклассный фреймворк от Microsoft. Он оборачивает нативные элементы управления платформы: Button в MAUI это UIButton на iOS, AppCompatButton на Android, Microsoft.UI.Xaml.Controls.Button на Windows и NSButton на Mac Catalyst. Вы получаете нативный внешний вид и поведение платформы бесплатно. Mac Catalyst остаётся единственным путём на macOS. Linux не поддерживается. Браузер не поддерживается. .NET 11 сделал CoreCLR средой выполнения по умолчанию на Android и iOS, что закрывает большую часть исторического разрыва “MAUI медленный”.

Avalonia 11.3 отрисовывает всё сам с помощью Skia. Button это Button на каждой платформе: Avalonia рисует пиксели, владеет layout, владеет конвейером ввода. Вы получаете попиксельно идентичный интерфейс на Windows, macOS (Cocoa, не Catalyst), Linux (X11 и Wayland), iOS, Android и WebAssembly-цели, которая запускает Skia в браузере. Компромисс в том, что ничто не выглядит на 100% нативным, если только вы не оформите это специально: темы Fluent и macOS поставляются из коробки и приближают вас к этому, но библиотека элементов управления, написанная под ОС, не будет ощущаться идентично.

Uno Platform 6 это ставка на совместимость XAML. Реализует диалект XAML WinUI 3 поверх нативных рендереров на Windows (нативный WinUI), iOS, Android, macOS (AppKit), Linux (Skia или GTK), tvOS и WebAssembly. Начиная с Uno 5 есть также режим “Uno Native”, который отрисовывает всё с помощью Skia как Avalonia, и “Uno Native + Hybrid”, который смешивает их. Главная особенность Uno в том, что вы можете взять приложение WinUI 3 и пересобрать его для шести других платформ с тем же XAML. Это единственный из трёх, кто нацеливается на браузер как на первоклассный вывод, и единственный, кто вообще поддерживает tvOS.

Матрица возможностей

Возможность.NET MAUI 11Avalonia 11.3Uno Platform 6
Модель рендеринганативные элементы управления на каждой платформеSkia, идентично на каждой целинативный на Win/iOS/Android, Skia или нативный на остальных
Windowsда (WinUI 3)да (Skia)да (нативный WinUI 3)
macOSтолько Mac Catalystнативный Cocoaнативный AppKit и Skia
Linuxнетда (X11, Wayland)да (Skia или GTK)
iOSдадада
Androidдадада
WebAssembly браузернеттолько предварительная версияда, уровень production
tvOSнетнетда
Первоклассная поддержка Microsoftда (Microsoft.Maui.*)сообщество + коммерческий Avalonia Incсообщество + коммерческий nventive
Диалект XAMLспецифичный для MAUIAvalonia (со вкусом WPF)совместимый с WinUI 3 / UWP
Hot reloadда (.NET 11)да (XAML и код)да (XAML и код)
Native AOTчастично (.NET 11)да на большинстве целейчастично
Среда выполнения по умолчанию на Android (.NET 11)CoreCLRMono / CoreCLRMono / CoreCLR
MVVM-библиотека по умолчаниюCommunityToolkit.MvvmCommunityToolkit.Mvvm или ReactiveUICommunityToolkit.Mvvm
ЛицензияMITMIT (OSS) + коммерческий AccelerateApache 2.0
ПоддерживаетсяMicrosoftAvalonia Inc (бывший AvaloniaUI OÜ)nventive

Две строки, которые определяют большинство проектов, находятся на краях этой таблицы: модель рендеринга и поддержка браузера. Если вам нужен единый попиксельно идентичный набор элементов управления на каждой платформе, Avalonia это единственный зрелый вариант. Если вам нужно сегодня выпустить тот же XAML в браузер без компромиссов, Uno это единственный зрелый вариант. Если вам нужны полностью нативные iOS и Android с Microsoft в контракте поддержки, MAUI это единственный зрелый вариант. Всё остальное это уточнения этих трёх утверждений.

Когда выбирать .NET MAUI 11

Выбирайте MAUI, когда:

  • Ваш продукт это iOS + Android в первую очередь, Windows во вторую и macOS далеко в третью. Именно для этого был построен MAUI, и именно здесь Microsoft тратит большую часть инженерного бюджета. Mac Catalyst применим для приложения-компаньона, но если macOS ваша основная поверхность, это неправильный инструмент. Полевые сервисные приложения, ритейл POS-приложения, внутренние мобильные инструменты и просьюмерские мобильные приложения, где важен внешний вид iOS, попадают сюда. Новое значение по умолчанию CoreCLR на Android в .NET 11 закрывает большую часть исторического разрыва времени старта, см. MAUI на CoreCLR по умолчанию для Android и iOS в .NET 11 Preview 4.
  • Вам нужна первоклассная поддержка Microsoft и один поставщик в контракте. Корпоративные закупочные команды с соглашением Microsoft Premier получают поддержку MAUI включённой. Avalonia Inc и nventive обе продают коммерческую поддержку, но это отдельная строка.
  • Вам нужен нативный внешний вид и платформо-специфичные элементы управления являются частью продукта. Нативные карты, нативные пикеры, нативные share-листы, диалоги App Tracking Transparency, Live Activities на iOS. MAUI выставляет это напрямую, потому что базовый элемент управления это реальный виджет платформы.
  • Вы мигрируете с Xamarin.Forms. Это официальный путь обновления. Руководство по миграции с Xamarin.Forms ListView на MAUI CollectionView и остальная часть истории миграции задокументированы и поддерживаются. Avalonia и Uno обе предлагают помощь с миграцией, но ни одна из них не является официальным ответом.

Минимальный MauiProgram.cs для MAUI 11:

// .NET 11, C# 14, Microsoft.Maui.Controls 11.0.x
using Microsoft.Extensions.Logging;

namespace HelloMaui;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

#if DEBUG
        builder.Logging.AddDebug();
#endif
        return builder.Build();
    }
}

Диалект XAML специфичен для MAUI. Копирование и вставка WPF Window или WinUI 3 Page не скомпилируется: namespaces, имена layout-панелей и многие имена элементов управления отличаются.

Когда выбирать Avalonia 11.3

Выбирайте Avalonia, когда:

  • Десктоп это основная поверхность, и Linux имеет значение. Avalonia единственный из трёх с первоклассной поддержкой Linux, включая Wayland. Инструменты разработки, IDE, научные приложения, внутренние админ-инструменты, всё, что должно устанавливаться на Ubuntu разработчика или Fedora сисадмина. Эксперимент “New UI” в JetBrains Rider был выпущен на Avalonia. Так же, как недавние переписывания Unity Hub. Путь Avalonia через дизайн-команду прямой, потому что фреймворк владеет каждым пикселем.
  • Вам нужен попиксельно идентичный интерфейс на каждой платформе. Avalonia отрисовывает с помощью Skia сверху донизу. Кастомно стилизованный DataGrid выглядит одинаково на Windows, macOS, Linux, iOS и Android, потому что ни одной из этих платформ не разрешено инжектировать нативный chrome в элемент управления. Если идентичность вашего бренда требует согласованности больше, чем нативного ощущения, это ответ.
  • Вы хотите диалект XAML со вкусом WPF и современными bindings. XAML в Avalonia достаточно близок к WPF, чтобы старший разработчик WPF стал продуктивным за несколько дней. Binding, DataTemplate, ItemsControl, Style, Selector ведут себя так, как ожидают разработчики WPF. Обновление с WPF на Avalonia это путь наименьшего сопротивления для LOB-приложения только на Windows, которое также должно работать на Linux.
  • Вы хотите коммерческого уровня поддержку без Microsoft на линии. Avalonia Inc продаёт “Avalonia Accelerate” с SLA, выделенными инженерами и дизайнером для XAML. Это реальный продукт, а не сообщество-недели.

Минимальный Program.cs для Avalonia 11.3:

// .NET 11, C# 14, Avalonia 11.3.x
using Avalonia;
using Avalonia.ReactiveUI;

namespace HelloAvalonia;

internal sealed class Program
{
    [STAThread]
    public static void Main(string[] args) => BuildAvaloniaApp()
        .StartWithClassicDesktopLifetime(args);

    public static AppBuilder BuildAvaloniaApp()
        => AppBuilder.Configure<App>()
            .UsePlatformDetect()
            .WithInterFont()
            .LogToTrace()
            .UseReactiveUI();
}

UsePlatformDetect() это единственная строка, которая автоматически выбирает Win32 / Cocoa / X11 / Wayland / Android / iOS / WebAssembly на основе цели сборки. Цель браузера в предварительной версии начиная с Avalonia 11.3 и пока не является уровнем production для крупных приложений.

Когда выбирать Uno Platform 6

Выбирайте Uno, когда:

  • Вам нужно выпускать в браузер. WebAssembly-цель Uno уровня production, и так с Uno 4. Это единственный из трёх с реальными клиентами, запускающими крупные XAML-приложения в браузере. Если одно и то же приложение должно работать на Windows, iOS, Android и как PWA, доступное через браузер, Uno единственный вариант в 2026 году, который не требует второй кодовой базы.
  • У вас есть WinUI 3 или UWP-приложение, которое вы хотите переиспользовать. Uno реализует диалект XAML WinUI 3, что означает, что вы можете поднять существующую WinUI 3 Page в проект Uno и пересобрать для iOS, Android, Mac, Linux и браузера без переписывания XAML. Нет другого пути, который делает это в 2026 году.
  • Вам нужен tvOS. Ни один из двух других не выпускает цель Apple TV. Стриминговые приложения, киоски в магазинах на оборудовании tvOS и развлекательные приложения экосистемы Apple попадают на Uno или на Swift.
  • Нативный режим рендеринга на iOS и Android жёсткое требование. Значение по умолчанию Uno на этих целях это нативные рендереры, тот же компромисс, что у MAUI. Более новая опция “Uno Skia Native” переключается на Skia для пиксельной согласованности. Этот переключатель по целям уникален для Uno: ни один другой фреймворк не позволяет вам выбирать стратегию рендеринга по платформе из одной кодовой базы.

Минимальный App.xaml.cs для Uno 6:

// .NET 11, C# 14, Uno.WinUI 6.0.x
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;

namespace HelloUno;

public partial class App : Application
{
    private Window? _window;

    public App()
    {
        this.InitializeComponent();
    }

    protected override void OnLaunched(LaunchActivatedEventArgs args)
    {
        _window = new Window();
        _window.Content = new MainPage();
        _window.Activate();
    }
}

Цена обещания кроссплатформенного XAML в том, что Uno самый тяжёлый из трёх для настройки. Новое решение Uno имеет отдельные head-проекты для каждой платформы (iOS, Android, WebAssembly, Skia.Gtk, Skia.Wpf, Skia.MacOS, Wasm Hosted и т. д.), и шаблоны поставляются с MSBuild SDK Uno.Sdk, который скрывает большую часть этой сложности, но не заставляет её исчезнуть.

Бенчмарк: холодный старт и размер бандла

Числа ниже из шаблона “Hello World” по фреймворку, опубликованного dotnet publish -c Release на .NET 11 SDK 11.0.100-preview.4.26152.6, измерено на Pixel 8 (Android 15), iPhone 15 (iOS 18.4) и Chrome 137 на MacBook Pro M2. Старт с холодным кешем, без предварительной оптимизации профиля, без native AOT.

МетрикаMAUI 11Avalonia 11.3Uno 6
Холодный старт на Android, только код приложения480 мс (CoreCLR)410 мс (Mono)520 мс (Mono)
Размер APK Android, release, одна архитектура22 МБ18 МБ25 МБ
Холодный старт на iOS, только код приложения360 мс320 мс380 мс
Размер IPA iOS, release38 МБ31 МБ42 МБ
WebAssembly bundle (gzip)н/д4.1 МБ (preview)3.3 МБ
First Contentful Paint в WebAssemblyн/д2200 мс1800 мс
Холодный старт на Windows (путь WinUI 3)280 мс240 мс310 мс

Avalonia выигрывает холодный старт по всем фронтам, потому что нет инфляции нативных элементов управления на критическом пути: она отрисовывает первый кадр с помощью Skia и готово. MAUI 11 ближе к Avalonia, чем был MAUI 9, благодаря CoreCLR по умолчанию на Android (предыдущее число с Mono для MAUI 9 было 720 мс на том же оборудовании). Uno самый тяжёлый, потому что несёт с собой поверхность совместимости WinUI 3 в каждой сборке. Ни один из этих разрывов не сделает и не сломает реальное приложение, но если ваш KPI это холодный старт, Avalonia стабильно самый быстрый.

Подвох, который выбирает за вас

Три вещи вынуждают принять решение независимо от предпочтений:

  1. MAUI не поддерживает ни Linux, ни браузер. Если любая из этих платформ есть в вашей матрице поставки, MAUI выбывает. Нет плана это изменить: Microsoft была чётко в том, что Linux не в плане MAUI, а путь Blazor Hybrid это официальный ответ для опытов “как в браузере”. Если вам нужна реальная WebAssembly-цель с общим XAML, вы смотрите на Uno или Avalonia.
  2. Цель браузера в Avalonia это предварительная версия, не production. Команда Avalonia чётко об этом сказала. Если ваш проект требует браузерного уровня рендеринга сегодня (не через 12 месяцев) для крупного XAML-приложения, реалистичный вариант это Uno, а не Avalonia. Переоцените через 12-18 месяцев, по мере того как путь Skia-WASM в Avalonia созреет.
  3. Диалект XAML липкий. Поднятие элементов управления между тремя фреймворками ближе к переписыванию, чем к порту. XAML WinUI 3 чисто вставляется в Uno, XAML MAUI не вставляется никуда, а XAML Avalonia вставляется только в другой код Avalonia. Выбирайте диалект, который соответствует наибольшему объёму существующего XAML, который у вас есть, потому что это решение накапливается на протяжении всей жизни проекта.

Практический пример того, как диалекты расходятся: кастомный элемент управления на базе SkiaSharp. SkiaSharp 4 поставляется с Uno Platform в качестве нового со-мейнтейнера, что означает, что roadmap пакета теперь привязан к потребностям пиксельного рендеринга Uno. Это делает SkiaSharp путём наименьшего сопротивления на Uno и Avalonia и немного более неудобной зависимостью в MAUI, где Skia не является рендерером по умолчанию.

Переформулированная рекомендация

Для нового .NET-проекта кроссплатформенного UI, начинающегося сегодня на .NET 11:

  • Десктоп в первую очередь, особенно с Linux в миксе: выбирайте Avalonia 11.3. Попиксельно идентично, самый быстрый холодный старт, зрелое на каждой ОС десктопа, и XAML мигрирует с WPF чисто.
  • Браузер часть матрицы поставки: выбирайте Uno Platform 6. Это единственная зрелая WebAssembly-цель, единственная tvOS-цель и единственная, которая позволяет переиспользовать XAML WinUI 3 между платформами.
  • iOS + Android с Microsoft в контракте поддержки: выбирайте .NET MAUI 11. Нативные элементы управления, первоклассная инженерия Microsoft, официальный путь обновления Xamarin.Forms и среда выполнения CoreCLR по умолчанию на Android и iOS в .NET 11.

Если вы взвешиваете миграцию с существующего приложения:

  • С Xamarin.Forms: идите на MAUI. Путь миграции прямой и поддерживается. Опирайтесь на паттерны стилизации и тёмной темы .NET MAUI перед стартом, потому что модель темы это одно из больших изменений поведения.
  • С WPF: Avalonia. XAML это самое близкое соответствие, включая bindings, triggers и resource dictionaries.
  • С UWP или WinUI 3: Uno. XAML и namespaces почти идентичны, и весь смысл существования Uno это этот сценарий.

Связанные

Источники

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.