Avalonia мои за и против

в 10:06, , рубрики: .net, avalonia, avaloniaui, Программирование, Разработка под Linux, Разработка под MacOS, разработка под windows

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

Avalonia мои за и против - 1

Avalonia

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

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

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

Avalonia мои за и против - 2

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

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

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

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

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

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

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

Avalonia мои за и против - 3

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

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

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

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

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

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

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

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

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

Подводя итог

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

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

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

Автор: Larymar

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js