Перспективная разработка приложений .NET на платформе Uno

Если вы потратите какое-то время, слушая и разговаривая с разработчиками Windows, вы поймете, что есть много путаницы и разочарования по поводу направления платформы, особенно вокруг .NET и UWP (универсальная платформа Windows). Microsoft пытается провести черту под различиями между UWP и более старыми SDK для Windows, пытаясь приобщить всех к будущему .NET 5 с помощью анонса Build 2020 Project Reunion, но для создания унифицированной платформы все равно потребуется время.

Во многом это связано с тем, как обновления платформы Windows поставлялись в прошлом: в сочетании с выпусками операционных систем. Project Reunion основан на работе с компонентами пользовательского интерфейса WinUI, отделяя их от базовых операционных систем и позволяя платформе разработчика развиваться намного быстрее, чем раньше.

Использование подхода с открытым исходным кодом к платформе дает больше возможностей для переноса модели разработки .NET (и вашего кода) на максимально возможное количество платформ. Одним из примеров того, как это будет работать, является реализация WinUI Uno Platform, которая недавно выпустила свой третий основной выпуск.

Представляем Uno Platform 3.0

Если вы раньше не рассматривали платформу Uno, возможно, проще всего представить ее как альтернативу Xamarin, которая позволяет создавать код .NET, работающий на iOS, Android, macOS и в Интернете. Я уже писал об Uno как о способе доставки знакомых пользовательских интерфейсов через Интернет с использованием WinUI с WebAssembly и платформы разработки Microsoft Blazor.

Uno Platform 3.0 разрабатывается для поддержки WinUI 3.0 наряду с WinUI 2.0. Таким образом, вы можете смешивать и сопоставлять новые и текущие элементы управления, подход, который должен хорошо работать вместе с поэтапным развертыванием как WinUI 3.0, так и API-интерфейсов Project Reunion на системном уровне.

В Uno есть что полюбить, особенно то, что здесь практически нет кривой обучения. Код можно создать в вашей любимой среде IDE и использовать существующие инструменты и фреймворки, обеспечивая общий уровень пользовательского интерфейса для всех версий кода. Вам нужно всего лишь один раз написать свой C # и XAML, при этом код WinUI будет работать непосредственно в Windows, а через Uno на других платформах, опираясь на собственные инструменты Xamarin для iOS, macOS и Android, и используя реализацию Mono-WASM на платформе. Интернет.

Использование Uno для переноса приложений .NET в macOS

Под капотом реализация Uno для macOS основана на сходстве между AppKit для macOS и UIKit для iOS. Это позволяет группе разработчиков публиковать существующие реализации элементов управления iOS. Хотя это работает, некоторые элементы управления все еще имеют проблемы, поэтому стоит поэкспериментировать, прежде чем развертывать какой-либо код для ваших пользователей. Тем не менее, это эффективный способ перенести существующие приложения .NET из Windows в macOS. Надеемся, что, опираясь на основные библиотеки macOS, Uno позволит вашему коду работать на недавно анонсированной микросхеме Apple на базе ARM.

Поддержка Mac в Uno относительно нова, она будет запущена в мае 2020 года с повторной реализацией приложения Windows Calculator на macOS и опубликованной через магазин Apple MacOS. Для создания версии существующего кода для macOS необходимо использовать набор новых шаблонов Uno и инструмент командной строки Windows .NET. После того, как вы установили новые шаблоны для Uno 2.3 или 3.0, вы можете создать каркас приложения для приложения macOS с тем же именем, что и целевой проект.

Затем вы можете переместить этот проект в ту же папку, что и остальные файлы вашего приложения, и добавить новый проект в существующее решение Visual Studio. Скомпилируйте свой код для macOS с помощью Visual Studio для Mac и настройте параметры симулятора iPhone в соответствии с настройками устройства MacOS для разработки.

Поскольку вы не можете использовать Visual Studio для Mac для работы с приложениями Windows WinUI, рекомендуется использовать Git или аналогичную платформу управления исходным кодом для вашего полного решения, чтобы вы могли управлять изменениями кода для macOS и Windows. Если вы работаете над версией приложения WebAssembly, используйте Visual Studio Code, чтобы создать его с расширениями отладчика C # и JavaScript. Поддержка MacOS доступна как в Uno 2.4, так и в 3.0, причем последняя версия демонстрирует кроссплатформенное приложение видеоплеера на основе WinUI, доступное во всех основных магазинах приложений.

Использование WinUI 3.0 в Uno

Если вы планируете работать с WinUI 3.0, вы должны использовать последнюю версию Uno 3.0. Опять же, используйте шаблоны .NET платформы Uno для создания каркаса для вашего кода. Если вы перемещаете существующий код в WinUI 3.0, вам необходимо изменить пространство имен, которое вы используете, как для элементов управления Microsoft, так и для кода Uno - это достаточно легко сделать с помощью инструментов рефакторинга, встроенных в Visual Studio.

Одним из интересных аспектов платформы Uno является поддержка устройств с двумя экранами. Взяв существующий код в Uno и добавив его элементы управления с двумя экранами, вы сможете с минимальными изменениями переносить приложения из Windows в грядущий Surface Duo на базе Android. Поскольку Microsoft уделяет приоритетное внимание мобильным приложениям с двумя экранами и сотрудничает с Google для улучшения поддержки будущих выпусков Android, такие инструменты, как Uno, станут важным маршрутом к использованию существующих возможностей работы с большим экраном и планшетами из Windows и их переносу на складное и двухэкранное оборудование Android. .

Платформа Uno и будущее разработки приложений .NET

Ясно, что Microsoft стремится устранить путаницу в том, как создавать приложения в экосистеме .NET, используя WinUI и Project Reunion, чтобы обеспечить столь необходимую ясность в отношении будущего. Но как бы быстро ни обещала Microsoft, они будут доставлены, но для многих разработчиков они все равно будут слишком медленными. И платформа Uno, и MAUI Xamarin - это способы более быстрого доступа к этим технологиям в дополнение к существующему коду .NET.

Благодаря добавлению поддержки macOS и веб-интерфейса в .NET, Uno Platform выглядит лучшим выбором для охвата как можно большего числа пользователей с наименьшим объемом изменения кода; это путь в будущее .NET, который должен сэкономить много времени на разработку и свести к минимуму нагрузку на поддержку.

Использование Uno должно обеспечить защиту вашего существующего .NET-кода и другими способами. Встроенные в браузер приложения WebAssembly и автономные приложения WASI (WebAssembly System Interface) должны упростить процесс переноса вашего кода на новое поколение периферийного оборудования, особенно на устройства малого форм-фактора и устройства с маленьким экраном на базе ARM и других процессоров с низким энергопотреблением.