Корпоративные шаблоны приложений с помощью Xamarin.Forms eBook

Руководство по архитектуре для разработки адаптируемых, обслуживаемых и тестируемых Xamarin.Forms корпоративных приложений

Enterprise Application Patterns using Xamarin.Forms eBook

Примечание.

Эта электронная книга была опубликована весной 2017 года и с тех пор не была обновлена. Есть много в книге, которая остается ценным, но некоторые из материалов устарели.

Эта электронная книга содержит рекомендации по реализации шаблона Model-View-ViewModel (MVVM), внедрения зависимостей, навигации, проверки и управления конфигурацией при сохранении свободного подключения. Кроме того, есть рекомендации по выполнению проверки подлинности и авторизации с помощью IdentityServer, доступу к данным из контейнерных микрослужб и модульного тестирования.

Предисловие

В этой главе объясняется цель и область руководства, и кто он направлен.

Введение

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

MVVM

Шаблон Model-View-ViewModel (MVVM) помогает четко отделять бизнес-логику приложения от пользовательского интерфейса. Поддержание четкого разделения между логикой приложения и пользовательским интерфейсом помогает устранить многочисленные проблемы разработки и упростить тестирование, обслуживание и развитие приложения. Он также может значительно улучшить возможности повторного использования кода и позволяет разработчикам и конструкторам пользовательского интерфейса более легко сотрудничать при разработке соответствующих частей приложения.

Внедрение зависимостей

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

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

Взаимодействие между слабо связанными компонентами

Класс Xamarin.FormsMessagingCenter реализует шаблон публикации и подписки, позволяя обмен данными между компонентами, которые неудобны для связи по ссылкам на объекты и типы. Этот механизм позволяет издателям и подписчикам взаимодействовать без ссылки друг на друга, что помогает сократить зависимости между компонентами, а также позволяет компонентам независимо разрабатывать и тестировать их.

Xamarin.Forms включает поддержку навигации по страницам, которая обычно приводит к взаимодействию пользователя с пользовательским интерфейсом или из самого приложения в результате изменений состояния на основе внутренней логики. Однако навигация может быть сложной для реализации в приложениях, использующих шаблон MVVM.

В этой главе представлен NavigationService класс, который используется для навигации модели представления из моделей представлений. Размещение логики навигации в классах модели представления означает, что логика может выполняться с помощью автоматизированных тестов. Кроме того, модель представления может реализовать логику для управления навигацией, чтобы обеспечить применение определенных бизнес-правил.

Проверка

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

В контексте шаблона Model-View-ViewModel (MVVM) модель представления или модель часто требуется для выполнения проверки данных и сигнала о любых ошибках проверки в представлении, чтобы пользователь смог исправить их.

Управление конфигурацией

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

Контейнерные микрослужбы

Микрослужбы предлагают подход к разработке и развертыванию приложений, которые подходят для гибкости, масштабирования и надежности современных облачных приложений. Одним из основных преимуществ микрослужб является то, что они могут масштабироваться независимо, что означает, что определенная функциональная область может быть масштабирована, которая требует больше мощности обработки или пропускной способности сети для поддержки спроса, без необходимости масштабирования областей приложения, которые не испытывают повышенного спроса.

Аутентификация и авторизация

Существует множество подходов к интеграции проверки подлинности и авторизации в Xamarin.Forms приложение, которое взаимодействует с веб-приложением ASP.NET MVC. Здесь проверка подлинности и авторизация выполняются с помощью контейнерной микрослужбы удостоверений, использующего IdentityServer 4. IdentityServer — это платформа открытый код OpenID Подключение и OAuth 2.0 для ASP.NET Core, которая интегрируется с ASP.NET Core Identity для проверки подлинности маркера носителя.

Доступ к удаленным данным

Многие современные веб-решения используют веб-службы, размещенные на веб-серверах, для обеспечения функциональности удаленных клиентских приложений. Операции, предоставляемые веб-службой, представляют собой веб-API, и клиентские приложения должны иметь возможность использовать веб-API, не зная, как реализуются данные или операции, предоставляемые API.

Модульное тестирование

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

Сайт сообщества

Этот проект имеет сайт сообщества, на котором можно публиковать вопросы и предоставлять отзывы. Сайт сообщества расположен на сайте GitHub. Кроме того, отзывы об электронной книге можно отправить dotnet-architecture-ebooks-feedback@service.microsoft.comпо электронной почте.