Общие сведения о .NET MAUI
Совет
Это содержимое является фрагментом из электронной книги, шаблонов корпоративных приложений с помощью .NET MAUI, доступных в .NET Docs или в виде бесплатного скачиваемого PDF-файла, который можно прочитать в автономном режиме.
Независимо от платформы разработчики корпоративных приложений сталкиваются с несколькими проблемами:
- Требования к приложению, которые могут меняться с течением времени.
- Новые бизнес-возможности и проблемы.
- Постоянные отзывы во время разработки, которые могут значительно повлиять на область и требования приложения.
Учитывая эти аспекты, важно создавать приложения, которые можно легко изменять или расширять с течением времени. Проектирование такой адаптации может быть сложно, так как требует архитектуры, которая позволяет отдельным частям приложения независимо разрабатываться и тестироваться в изоляции, не влияя на остальную часть приложения.
Многие корпоративные приложения достаточно сложны, чтобы требовать более одного разработчика. Это может быть значительный вызов, чтобы решить, как разработать приложение, чтобы несколько разработчиков могли эффективно работать над различными частями приложения независимо, обеспечивая, что части объединяются легко при интеграции в приложение.
Традиционный подход к проектированию и созданию приложения приводит к тому, что называется монолитным приложением, где компоненты тесно связаны без четкого разделения между ними. Как правило, этот монолитный подход приводит к приложениям, которые являются трудными и неэффективными для обслуживания, так как это может быть трудно устранить ошибки без нарушения других компонентов в приложении, и это может быть трудно добавить новые функции или заменить существующие функции.
Эффективное средство устранения этих проблем заключается в секционирование приложения на дискретные, слабо связанные компоненты, которые можно легко интегрировать в приложение. Такой подход предлагает несколько преимуществ:
- Она позволяет разрабатывать, тестировать, расширять и поддерживать отдельные функциональные возможности различными лицами или командами.
- Он способствует повторному использованию и чистому разделения проблем между горизонтальными возможностями приложения, такими как проверка подлинности и доступ к данным, а также вертикальные возможности, такие как специальные бизнес-функции приложения. Это позволяет более легко управлять зависимостями и взаимодействиями между компонентами приложения.
- Это помогает поддерживать разделение ролей, позволяя разным лицам или командам сосредоточиться на конкретной задаче или части функциональности в соответствии с их опытом. В частности, это обеспечивает более четкое разделение между пользовательским интерфейсом и бизнес-логикой приложения.
Однако существует множество проблем, которые необходимо устранить при секционирование приложения на дискретные, слабо связанные компоненты. Например:
- Решение о том, как обеспечить чистое разделение проблем между элементами управления пользовательским интерфейсом и их логикой. Одно из наиболее важных решений при создании корпоративного приложения .NET MAUI заключается в том, следует ли размещать бизнес-логику в файлах кода или создавать четкое разделение проблем между элементами управления пользовательским интерфейсом и их логикой, чтобы сделать приложение более управляемым и тестируемым. Дополнительные сведения см. в разделе Model-View-ViewModel.
- Определение того, следует ли использовать контейнер внедрения зависимостей. Контейнеры внедрения зависимостей сокращают связь зависимостей между объектами, предоставляя объект для создания экземпляров классов с внедренными зависимостями и управления их временем существования на основе конфигурации контейнера. Дополнительные сведения см. в разделе Введение зависимостей.
- Выбор между платформой предоставленного событиями и слабо связанной связью между компонентами, которые неудобны для связи с объектами и типами ссылок. Дополнительные сведения см. в разделе "Общие сведения о взаимодействии между слабо связанных компонентов".
- Выбор способа перехода между страницами, включая вызов навигации и расположение логики навигации. Дополнительные сведения см. в разделе Переходы.
- Определение способа проверки входных данных пользователей для правильности. Это решение должно включать проверку входных данных пользователей и уведомление пользователя об ошибках проверки. Дополнительные сведения см. в разделе "Проверка".
- Решение о том, как выполнять проверку подлинности и как защитить ресурсы с помощью авторизации. Дополнительные сведения см. в разделе "Проверка подлинности и авторизация".
- Определение способа доступа к удаленным данным из веб-служб, включая надежное получение данных и способ кэширования данных. Дополнительные сведения см. в разделе "Доступ к удаленным данным".
- Выбор способа тестирования приложения. Дополнительные сведения см. в разделе Модульное тестирование.
В этом руководстве приводятся рекомендации по этим вопросам и основное внимание уделяется основным шаблонам и архитектуре для создания кроссплатформенного корпоративного приложения с помощью .NET MAUI. Руководство призвано помочь создать адаптируемый, поддерживаемый и тестируемый код, обращаясь к общим сценариям разработки корпоративных приложений .NET MAUI , а также разделяя проблемы презентации, логики презентации и сущностей через поддержку шаблона Model-View-ViewModel (MVVM).
Пример приложения
Это руководство содержит пример приложения, eShop, который является интернет-магазином, который включает в себя следующие функции:
- Проверка подлинности и авторизация для серверной службы.
- Просмотр каталога элементов.
- Фильтрация каталога.
- Упорядочивание элементов из каталога.
- Просмотр журнала заказов пользователя.
- Настройка параметров.
Пример архитектуры приложения
Ниже приведен общий обзор архитектуры примера приложения.
Пример приложения поставляется с:
- Размещение приложений и оркестрация .NET Aspire
- Веб-приложение Blazor, разработанное с помощью ASP.NET Core.
- Мультиплатформенное приложение, разработанное с помощью .NET MAUI, которое поддерживает iOS, Android, macOS через Mac Catalyst и Windows.
Пример приложения включает следующие серверные службы:
- Микрослужба удостоверений, которая использует ASP.NET Core Identity и IdentityServer.
- Микрослужба каталога, которая является управляемой данными службой создания, чтения, обновления, удаления (CRUD), которая использует базу данных SQL Server с помощью EntityFramework Core.
- Микрослужба, упорядоченная в домене, которая использует шаблоны проектирования на основе домена.
- Микрослужба корзины, которая является управляемой данными службой CRUD, которая использует кэш Redis.
Эти серверные службы реализуются как микрослужбы с помощью ASP.NET Core и развертываются в качестве уникальных контейнеров с помощью .NET Aspire. В совокупности эти серверные службы называются эталонным приложением eShop. Клиентские приложения взаимодействуют со службами серверной части через веб-интерфейс передачи репрезентативного состояния (REST). Дополнительные сведения о микрослужбах и контейнерах см. в разделе "Контейнерные микрослужбы".
Многоплатформенное приложение
В этом руководстве основное внимание уделяется созданию кроссплатформенных корпоративных приложений с помощью .NET MAUIи использованию мультиплатформенного приложения eShop в качестве примера. На рисунке ниже показаны страницы из мультиплатформенного приложения eShop, предоставляющего функциональные возможности, описанные ранее.
Приложение с несколькими платформами использует серверные службы, предоставляемые эталонным приложением eShop. Однако ее можно настроить для использования данных из макетных служб для тех, кто хочет избежать развертывания внутренних служб.
Приложение eShop с несколькими платформами выполняет следующие функции .NET MAUI :
- XAML
- Элементы управления
- Привязки
- Преобразователи
- Стили
- Анимации
- Команды
- Поведение
- Триггеры
- Произведенный эффект
- Пользовательские элементы управления
Дополнительные сведения об этой функции см. в документации по .NETMAUI.
Кроме того, модульные тесты предоставляются для некоторых классов в приложении eShop с несколькими платформами.
Решение для мультиплатформенных приложений
Решение для мультиплатформенного приложения eShop упорядочивает исходный код и другие ресурсы в несколько проектов. Все основные мобильные компоненты содержатся в единственном проекте с именем eShopContainers. Это функция, представленная в .NET 6, которая позволяет проекту использовать несколько выходных данных, что помогает устранить необходимость в нескольких проектах платформы, которые мы использовали бы в Xamarin.Forms и более ранних версиях .NET. Дополнительный проект включен для модульного тестирования.
Хотя этот проект содержит все его компоненты, хранящиеся в единственном проекте, стоит рассмотреть возможность разделения его на несколько проектов в зависимости от ваших потребностей. Например, если у вас есть несколько реализаций поставщиков услуг, основанных на службе с собственными зависимостями, это может иметь смысл разорвать реализацию этих поставщиков услуг в собственный отдельный проект. Хорошие кандидаты на разделение проектов включают общие модели, реализации служб, клиентские компоненты API, уровни базы данных или кэширования. Любое место, где вы чувствуете, что бизнес может повторно использовать компонент в другом проекте является потенциальным кандидатом на разделение. Затем эти проекты можно упаковыть с помощью NuGet для простого распространения и управления версиями.
Все проекты используют папки для упорядочивания исходного кода и других ресурсов в категории. Классы из мультиплатформенного приложения eShop можно повторно использовать в любом приложении .NET MAUI без изменений.
Проект eShop
Проект eShop содержит следующие папки:
Папка | Description |
---|---|
Анимации | Содержит классы, позволяющие использовать анимации в XAML. |
Поведения | Содержит поведение, которое предоставляется для просмотра классов. |
Элементы управления | Содержит пользовательские элементы управления, используемые приложением. |
Конвертеры | Содержит преобразователи значений, которые применяют настраиваемую логику к привязке. |
Исключения | Содержит настраиваемую службу ServiceAuthenticationException. |
Расширения | Содержит методы расширения для VisualElement классов и IEnumerable<T> классов. |
Помощники | Содержит вспомогательные классы для приложения. |
Модели | Содержит классы модели для приложения. |
Свойства | Содержит AssemblyInfo.cs, файл метаданных сборки .NET. |
Сервисы; | Содержит интерфейсы и классы, реализующие службы, предоставляемые приложению. |
Триггеры | Содержит триггер BeginAnimation, который используется для вызова анимации в XAML. |
Validations | Содержит классы, участвующие в проверке входных данных. |
ViewModels | Содержит логику приложения, доступную для страниц. |
Представления | Содержит страницы для приложения. |
Итоги
Кроссплатформенные средства разработки приложений и платформы майкрософт предоставляют комплексное решение для мобильных клиентских приложений B2E, B2B и B2C, предоставляя возможность совместного использования кода на всех целевых платформах (iOS, macOS, Android и Windows) и помогает снизить общую стоимость владения. Приложения могут предоставлять общий доступ к пользовательскому интерфейсу и коду логики приложений, сохраняя внешний вид и ощущение собственной платформы.
Разработчики корпоративных приложений сталкиваются с несколькими проблемами, которые могут изменить архитектуру приложения во время разработки. Поэтому важно создать приложение, чтобы его можно было изменить или расширить с течением времени. Проектирование такой адаптации может быть сложным, но обычно включает секционирование приложения на дискретные, слабо связанные компоненты, которые можно легко интегрировать в приложение.