Я очень много пишу про Авалонию и часто восторгаюсь этим фреймворком, но, как и у любой технологии, у нее есть свои достоинства и недостатки, о них и хотелось бы поговорить.


Avalonia


Что же это такое? В первую очередь это кроссплатформенный gui xaml фреймворк для платформ .net framework, .net core и mono.

Что же означают эти слова?

Авалония — набор библиотек, которые позволяют создать оконное приложение и запустить его на всех популярных десктопных платформах.


Далее я предложу вам, читатели, мои личные рассуждения, я не хочу критиковать\хвалить Авалонию как отдельную технологию, а просто рассказать о всем комплексе создания приложения для пк с использованием данной технологии.

Что мне нравится


Во-первых, простота старта, если вы знакомы с такими .net техногологиями как wpf\uwp, на то, чтобы завести авалонию у вас уйдет не более 5ти минут. Все что вам нужно — скачать шаблон с сайта авалонии и создать проект, на этом все — никаких плясок с бубном, чтобы собрать проект на линукс (привет другой популярный фреймворк).

Во-вторых, поддержка xaml — из этого вытекает много удобных фич: mvvm, биндинги, разделение вью и бизнес логики, стилизация отдельными файлами.

В-третьих, заимствование или определенная совместимость (называйте как хотите) с wpf. Это означает, что если вы никогда не работали с авалонией, но знакомы с wpf, вы можете просто взять контролы, с которыми вы привыкли работать в wpf, и в 90% случаев ваше приложение сразу же стартанет. Также это означает, что для решения своей проблемы вы можете найти аналогичное решение для wpf, и в большинстве случаев оно решит и вашу проблему.

В-четвертых, стили — авалония вдохновлялась css в какой-то мере, что повлекло появление классов и псевдоклассов при стилизации, что упростило написание стилей и их понимание.

В-пятых, кроссплатформенность — что означает, раз написал и запускаешь везде. Важно отметить, что авалония использует нативные технологии для работы: Direct2D, MonoMac и тд. Так же авалония подхватывает системные декорации:


В-шестых поддержка разработчиков: в чатах, как в английских, так и в русских можно напрямую обратиться к разрабам и скорее всего они ответят на ваш вопрос.

Что мне не нравится


Во-первых, это все еще сыроватый фреймворк, и иногда можно встретить баги, да, авалония за годы очень выросла и на текущий момент любой баг можно решить (подпереть костылем), но уже можно говорить о стабильности технологии, как отмечают сами разработчики — она добралась до прод реди.

Во-вторых, слабоватый перфоманс, т.е. у меня был забавный пет проект, где я накидывал тысячи контролов в одно окно, и wpf спокойно справлялся с этим (10к норм, дальше не тестил), авалония же давала фризы и чем дальше тем хуже (где-то на 3к элементов)

В-третьих , технология молода — сообщество тоже маленькое, так что вы можете застрять с тем, что никто не решал такую задачу, которая встала перед вами.

Чего мне не хватает в Avalonia


Во-первых, готовых пакетов стилей типа metro\material, да стилизовать просто, но иногда хочется использовать готовое и не думать.

Во-вторых, медиа обвязки, нет кроссплатформенной поддержки звуков и видео и это не входит и не будет (по крайней мере в ближайшее время) входить в задачи разработчиков, хочешь кроссплатформенный звук — пиши сам или тяни чужие.

В-третьих, поддержки актуальных фичей платформ, сворачивание в трей, значки уведомлений на ярлыках и тд, но здесь необходимо отдать должное разработчикам — с каждым релизом ситуация стремительно улучшается.

Подводя итог


Готова ли авалония выйти в свет — я считаю, что да, но не мне судить — попробуйте, посмотрите. Ведь как говорится: «Лучше один раз увидеть, чем 100 раз услышать»

Хотелось бы сказать спасибо ForNeVeR kekekeks worldbeater

И отметить, что поддержку по c# можно найти здесь, а по авалонии здесь.

Комментарии (14)


  1. Tantrido
    25.10.2019 13:41
    +1

    Может таки WPF появится в .Net Core после этого :) Молодцы, что сказать!


    1. Larymar Автор
      25.10.2019 13:42
      +2

      Ну, впф есть на core, но это не кроссплатформенная технология и работает только на винде. И майки объявили, что не планируют пока что портировать свой гуй куда-либо


      1. Tantrido
        25.10.2019 13:54

        Да, я имел в виду кросс-платформенный.


  1. WoWkiler_11
    25.10.2019 16:05

    с выходом net core 3.0 формы и wpf переехали на net core
    возможно в net5 будет поддержка всех os, под которые есть net core


    1. Larymar Автор
      25.10.2019 16:06

      увы
      тык майки говорят — не будет


      1. WoWkiler_11
        25.10.2019 16:19

        а как же xamarin forms и GTK?


        1. Larymar Автор
          25.10.2019 16:22

          Все что вам нужно — скачать шаблон с сайта авалонии и создать проект, на этом все — никаких плясок с бубном, чтобы собрать проект на линукс (привет другой популярный фреймворк).


          ну а gtk дарит примерно те же эмоции, что и qt#
          попробуйте, не могу гарантировать, что вам не понравится, но мои личные ощущения, такие себе


  1. IL_Agent
    25.10.2019 20:38

    Как там дела с виртуализацией, анимациями? И да, без готовых стилей почти неюзабельно (


    1. Larymar Автор
      26.10.2019 08:37

      1) с виртуализацией есть мара мелких багов, но в обем уже все на достойном уровне
      2) с анимациями просто все норм, на уровне того же вфп (если можно говорить, что там норм)
      3) да, готовых пресетов нет, но если почитаете мою статью по стилям, там внизу есть ссылочка на тулзу, которая может сгенерировать вам неплохой пресет
      4) я постепенно по возможности и времени стараюсь подготовить метро пресет


      1. Larymar Автор
        27.10.2019 00:56

        * пара
        в общем


  1. AnarchyMob
    27.10.2019 03:23

    готовых пакетов стилей типа metro\material, да стилизовать просто, но иногда хочется использовать готовое и не думать.

    Я не представляю как реализовать, например, material. В avalonia нет поддержки эффектов, даже теней нет (хотя и в Skia и Direct2D есть).


    1. Larymar Автор
      27.10.2019 13:05

      есть поддержка анимаций
      так что что-то близкое можно попробовать сделать
      не обязательно прям 1 в 1, но я считаю, что реализация хорошей темы привлечет больше новых пользователей
      вам стоит посмотреть сюда


      1. AnarchyMob
        27.10.2019 15:41

        есть поддержка анимаций
        так что что-то близкое можно попробовать сделать

        Не хочу показаться занудой, но почему в avalonia матрица трансформации используется 3x2, ведь современный дизайн, к примеру fluent, без трансформации перспективы достаточно сложно реализовать.


        1. Larymar Автор
          27.10.2019 16:23

          я думаю призвать кекса (kekekeks), вряд ли я смогу ответить на данный вопрос
          вы можете его задать в чате по авалонии разработчику проекта