Платформа Xamarin, успешно работающая с набором «облачных» протоколов Microsoft, с шаблонами и пакетами Office 365 API, SharePoint, OneDrive для бизнеса и мобильными службами Windows Azure, безусловно обеспечивает более широкие возможности, чем просто проектирование мобильных программ. В этой ознакомительной статье речь пойдет о компонентах пользовательского интерфейса, которые могут связываться с любыми внутренними механизмами по вашему выбору.

Основное внимание в статье будет уделено управляемым данными мобильным приложениям и использованию Xamarin.Forms для быстрой разработки программ, ориентированных на конкретные целевые платформы (iOS, Android, Windows Phone). Контент приложений, предназначенных для взаимодействия с целевой аудиторией и пользователями, должен быть разнообразным и своевременно обновляться. Достичь этого позволяет, в частности, динамическое управление контентом, и тогда на первый план выходят задачи непрерывного ввода данных и выдачи контента в реальном времени.

Xamarin — платформа, с помощью которой программисты C# могут строить кросс-платформенные мобильные приложения с мощной функциональностью, используя хорошо знакомые язык программирования и интегрированную среду разработки (ИСР). Таким образом упрощается освоение продуктов и сокращается время их выпуска на рынок. В составе Xamarin есть также тестовая платформа, собственный университет для обучения и многое другое (http://www.xamarincom/).

Общая база программного кода

Одна из сильных сторон Xamarin — гибкость.

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

Приведу несколько примеров.

  • iOS: ObjectiveC или SWIFT с использованием XCode в качестве интегрированной среды разработки.
  • Android: Java с использованием Eclipse в качестве ИСР.
  • Windows Phone: C# или любой язык. NET с использованием Visual Studio в качестве интегрированной среды разработки.

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

С появлением Xamarin картина меняется.

Как показано на рисунке 1, благодаря Xamarin появляется одна большая «общая» база программного кода для всех трех основных мобильных платформ. На эту общую базу приходится примерно 75% кода, не зависящего от границ между платформами.

 

«Общая» база программного кода
Рисунок 1. «Общая» база программного кода

Это выгодно, и ваши приложения удастся выпустить в продажу гораздо быстрее, чем при отдельном программировании для каждой платформы, но остается вопрос: как быть с остальными 25%?

Блоки на рисунке, относящиеся к средам iOS, Android и Windows, нуждаются в специфическом коде, который не может быть общим для всех платформ. Обычно они относятся к пользовательскому интерфейсу и связаны с уникальными элементами управления, то есть представлениями (view), макетами (layout) и страницами (page). Подробнее обо всем этом будет рассказано ниже, а кроме того вы можете прочитать другие материалы по теме в моем персональном блоге (http://www.fabiangwilliams.com/2015/06/18/xamarin-forms-basic-stuff-to-wams-expert/).

С помощью Xamarin.Forms можно построить не только общий код для внутренних компонентов, но и общий код для пользовательского интерфейса (см. рисунок 2). В результате доля общего кода разных платформ увеличивается и достигает от 90 до 95%. Таким образом, однажды спроектированный код пригоден для трех наиболее распространенных платформ.

 

Общий код для пользовательского интерфейса
Рисунок 2. Общий код для пользовательского интерфейса

В центре внимания — пользовательский интерфейс

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

Xamarin обеспечивает следующие преимущества:

  • более 400 макетов и элементов управления;
  • двунаправленная привязка данных;
  • несколько подключаемых модулей и пакетов NuGet почти для любых целей.

Рассмотрим элементы пользовательского интерфейса по отдельности.

Страницы

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

  • iOS: страница называется View Controller.
  • Windows Phone: страница называется страницей (Page).
  • Android: страница аналогична пространству, занимаемому основным действием (Main Activity), но это не Main Activity.

На рисунке 3 мы видим несколько различных страниц; каждой соответствует собственный уровень удобства использования и эффективности, в зависимости от назначения приложения.

  • ContentPage: отображает одно представление, часто контейнер, такой как StackLayout или ScrollView.
  • MasterDetail: страница, которая управляет двумя панелями с информацией.
  • Navigation: управляет перемещениями и взаимодействием пользователя с набором других страниц.
  • Tabbed: страница, обеспечивающая перемещение между дочерними страницами с использованием вкладок.
  • Carousel: позволяет переходить между страницами с помощью жестов прокрутки, как в галерее.

 

Варианты страниц
Рисунок 3. Варианты страниц

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

Макеты

Макеты (layout) — подкласс представлений (view), который функционирует как контейнер для других макетов и представлений. Обычно он содержит логику для назначения позиции и размера дочерних элементов на странице.

Как и страницы, макеты можно комбинировать. Я обычно помещаю StackLayout в Scroll View, чтобы обеспечить единообразный вид и поведение своих приложений и убрать прокрутку со страницы. Остальные макеты обычно не требуют дополнительных объяснений; более подробную информацию можно найти на сайте Xamarin (http://developer.xamarin.com/guides/cross-platform/xamarin-forms).

Элементы управления (представления)

Элементы управления, также известные как представления (view), — это все объекты, помещаемые пользователем на страницу, в том числе кнопки, ярлыки, поля для ввода данных (текстовые поля) и изображения. Большое достоинство Xamarin.Forms состоит в том, что все эти элементы сводятся к специфическим элементам каждой платформы. На сегодня существует довольно много элементов управления (см. рисунок 4) и постоянно выпускаются новые.

 

Элементы управления
Рисунок 4. Элементы управления

Преимущества Xamarin.Forms

Итак, мы ознакомились с основными принципами Xamarin.Forms. Как Xamarin.Forms повлияют на взаимодействие платформы с базой данных?

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

Базовая архитектура Model View ViewModel (MVVM) позволяет сопоставить элементы Xamarin.Forms с объектами данных и службами данных для выполнения операций Create Read Update Delete Query (CRUD-Q) с RDMS и отличными от SQL базами данных.

В следующей статье я покажу, как создать практическое приложение для работы с базой данных SQL и MongoDB, размещенной на Microsoft Azure.