Описание архитектуры .NET MAUI
- 5 мин
Распространенный шаблон для кроссплатформенной разработки приложений, — отделить реализацию бизнес-логики от пользовательского интерфейса, а затем создать разные пользовательские интерфейсы и разную логику для них для каждой платформы. Хотя бизнес-логика остается неизменной для каждого типа устройства, код управления приложением и отображения данных может различаться. Эта дисперсия обусловлена различными возможностями, API и функциями, предоставляемыми устройствами. Создание мультиплатформенного приложения таким образом включает в себя не только отдельные пакеты средств разработки программного обеспечения (SDK), но и совершенно разные языки и наборы инструментов.
Цель .NET MAUI (Пользовательский интерфейс многоплатформенного приложения) — упростить разработку мультиплатформенных приложений. С помощью .NET MAUI вы создаете мультиплатформенные приложения с помощью одного проекта, но при необходимости можно добавить исходный код и ресурсы для конкретной платформы. Основной целью .NET MAUI является реализация максимальной части логики приложения и макета пользовательского интерфейса в одной базе кода.
В этом уроке вы узнаете об архитектуре .NET MAUI и средствах, необходимых для создания приложений .NET MAUI.
Что собой представляет технологический стек .NET MAUI?
.NET предоставляет ряд платформ для создания приложений: .NET для Android, .NET для iOS (и iPadOS), .NET для Mac и WinUI 3 (с помощью пакета SDK для приложений Windows). Все эти платформы имеют доступ к одной библиотеке базовых классов .NET (BCL). Эта библиотека предоставляет функциональные возможности для создания ресурсов и управления ими, а также для абстрагирования сведений о базовом устройстве от кода. Библиотека BCL имеет зависимость от среды выполнения .NET, в которой выполняется код приложения. Mono, реализация среды выполнения .NET с открытым кодом, реализует среды Android, iOS (и iPadOS) и macOS. Для Windows ту же роль выполняет win32, которая оптимизирована для платформы Windows.
Хотя BCL позволяет приложениям, работающим на разных типах устройств, совместно использовать общую бизнес-логику, различные платформы имеют различные способы определения пользовательского интерфейса приложения. Платформы предоставляют различные модели для указания взаимодействия и взаимодействия элементов пользовательского интерфейса. Вы можете создать пользовательский интерфейс для каждой платформы отдельно с помощью соответствующей платформы (.NET для Android, .NET для iOS, .NET для Mac или WinUI 3). Но этот подход требует поддержания базы кода для каждого отдельного семейства устройств. .NET MAUI предоставляет единую платформу для создания пользовательских интерфейсов в мобильных и классических приложениях. Вы создаете пользовательский интерфейс с помощью этой платформы (со стрелкой 1 на следующей схеме), и .NET MAUI заботится о преобразовании его на соответствующую платформу (стрелка 2).
Может возникнуть время, когда необходимо реализовать функцию для конкретной платформы. В этих ситуациях можно вызывать методы в платформе для конкретной платформы, как выделено стрелкой 3 на следующей схеме.
Как работает .NET MAUI?
.NET MAUI абстрагирует реализацию элемента пользовательского интерфейса из его логического описания. Вы можете описать пользовательский интерфейс с помощью XAML (расширяемого языка разметки приложений), нейтрального от платформы языка на основе XML. Например, следующий фрагмент XAML показывает описание элемента управления кнопкой:
<Button Text="Click me"
SemanticProperties.Hint="Counts the number of times you click"
Clicked="OnCounterClicked"
HorizontalOptions="Center" />
В этом примере определяется метка кнопки ("Щелкнуть меня") и указывает, что метод с именем OnCounterClicked
должен выполняться, когда пользователь выбирает кнопку. Другие свойства могут изменять макет кнопки и формат текста, например здесь текст выравнивается по центру кнопки. Семантические свойства обеспечивают поддержку специальных возможностей для пользователей с нарушениями зрения.
.NET MAUI всегда создает машинный код для каждого целевого устройства, поэтому гарантирует оптимальную производительность. В .NET MAUI используются обработчики , относящиеся к каждой платформе и элементу пользовательского интерфейса, для выполнения операции. Например, если вы нацелены на iOS для приложения, обработчик .NET MAUI сопоставляет этот код с iOS UIButton
. Если вы работаете на Android, вы получите Android AppCompatButton. Эти обработчики получают доступ косвенно через интерфейс, зависящий от элемента управления, предоставляемый .NET MAUI, например IButton
для кнопки.
Примечание.
При желании вы можете динамически создавать пользовательский интерфейс в коде C#. Такой подход позволяет изменять макет с учетом среды. Например, может потребоваться, чтобы определенные элементы управления отображались, если у пользователя нет соответствующего уровня авторизации.
.NET MAUI упрощает использование кнопок и других типичных элементов управления. Другие распространенные элементы управления, такие как поля ввода текста, метки и средства выбора дат, так же просты. Однако отдельные элементы управления недостаточно, чтобы сделать хорошую платформу для создания богатых приложений. .NET MAUI также предоставляет следующие возможности:
- Продуманный механизм визуализации для проектирования страниц.
- Несколько типов страницы для создания полнофункциональных типов навигации, таких как панели.
- Поддержка привязки данных для более элегантных и обслуживаемых шаблонов разработки.
- Возможность создавать пользовательские обработчики для улучшения способа представления элементов пользовательского интерфейса.
- Доступ к собственным API напрямую и абстракции многих распространенных потребностей мобильных и классических приложений, которые отделены от пользовательского интерфейса. Библиотека основных компонентов позволяет приложению получать доступ к таким вещам, как GPS, акселерометр и состояния батареи и сети. В этой библиотеке также доступны десятки датчиков и служб, типичных для разработки мобильных приложений.