Xamarin, нативные iOS/Android и гибридные инструменты разработки
В последнее время многие разработчики приложений склонны соглашаться с тем, что Xamarin может считаться нативным инструментом разработки. В самом деле, существует мнение, что «все, что можно сделать в приложении iOS с использованием Objective-C или Swift, и все, что можно сделать в приложении Android с помощью Java, можно сделать и на языке C# при помощи Xamarin».
Тем не менее существует много подводных камней в соперничестве нативной платформы и платформы Xamarin. Итак, давайте сравним Xamarin с нативными инструментами разработки и разработкой гибридных платформ (Ionic, PhoneGap/Cordova).
Xamarin
Стек технологий: один стек, одна кодовая база (C#, .Net framework + нативные библиотеки)
Совместное использование кода: да, до 96% с использованием Xamarin.Forms
UI/UX (User Interface/User Expierence): возможна полная настройка UI для каждой платформы
Производительность: хорошая, близкая к родной
Возможности аппаратных средств: высокие. Xamrin использует платформо-зависимые API и поддерживает связь с нативными библиотеками
TTM (время выхода на рынок): c Xamarin.Forms TTM происходит быстро из-за ограниченной настройки и расширенного обмена кодами.
Нативный
Стек технологий: разные стеки для каждой платформы
Совместное использование кода: нет, разные кодовые базы
UI/UX (User Interface/User Expierence): только платформо-зависимые UI
Производительность: отличная
Возможности аппаратных средств: высокие. Нативные инструменты имеют полную поддержку для возможностей системы OOTB
TTM (время выхода на рынок): Xamarin,iOS и Xamarin.Android требуют больше времени по мере того, как увеличивается количество пользовательского кода.
Гибридный
Стек технологий: один стек, одна кодовая база (JavaScript, HTML5, CCS)
Совместное использование кода: да, 100%
UI/UX (User Interface/User Expierence): общий UI для всех платформ (ограниченные возможности настройки)
Производительность: средняя — низкая
Возможности аппаратных средств: средние. Возможности могут быть доступны через сторонние API и плагины, хотя есть некоторые риски из-за низкого качества и ненадежности большинства из этих инструментов
TTM (время выхода на рынок): TTM для нативных приложений Android или iOS может быть таким же, что и для Xamarin.Forms или гибридных инструментов. Тем не менее создание приложений для множества платформ может потребовать от вас либо продлить время выхода на рынок, либо увеличить количество заинтересованных разработчиков
Благодаря единой кодовой базе и минимальной настройке, гибридные решения быстрей выходят на рынок. Эти инструменты используются даже для макетирования концептуальных проектов
Есть ли альтернатива Xamarin сегодня?
Гибридные инструменты мобильной разработки развиваются довольно быстро, но им по-прежнему не хватает производительности и собственных возможностей, которые предлагает Xamarin. При этом затраты остаются сопоставимыми. Если рассматривать два подхода (гибридный и Xamarin), то самая популярная дилемма — это Xamarin против Ionic и Xamarin против React. Однако React Native теряет популярность из-за ряда ограничений в базовых технологиях (стек веб-технологий).
Тем не менее существует мобильный инструмент разработки на базе JavaScript, который превосходит гибридные решения, по крайней мере, с точки зрения UI. Речь идет о NativeScript. Этот кроссплатформенный фреймворк с открытым исходным кодом при поддержке Telerik и при помощи единой базы кода позволяет вам реализовывать нативный UI и подключаться к родным API для лучшего использования мобильных устройств. Его главное отличие заключается в том, что он использует разметку XML, которая компилируется не в веб-браузере HTML, а в нативных эквивалентах Android и iOS.
Этот подход заполняет пробелы между нативными и гибридными разработками, и его методы похожи на то, что делает Xamarin. Основное различие между этими двумя инструментами заключается в языке программирования. Поэтому сравнение Xamarin и NativeScript, должно стать предметом более подробных исследований.
В то же время обсуждения преимуществ и недостатков Xamarin и нативных разработок Android/iOS кажутся более сложными: оба варианта доказывают, что они ценны с точки зрения качества и производительности. Поэтому выбор обычно зависит от типа приложения, которое вы хотите создать.
Советы по использованию Xamarin
При сравнении всех за и против нетрудно прийти к выводу, что перечисленные недостатки могут нанести ущерб разработке. Большинство владельцев бизнеса выбирают платформу Xamarin, так как это сокращает время выхода на рынок (Time-To-Market) и инженерных затрат за счет совместного использования кода и использования единого стека технологий.
Основываясь на опыте нашей команды, можно заключить, что лучшим вариантом использования Xamarin является разработка мобильных приложений для бизнеса. Со стандартным интерфейсом, который охватывает 90% проектов, логическое ядро продукта можно легко сделать общим на всех платформах.
- xamarin
- xamarin.android
- xamarin.ios
- Разработка мобильных приложений
- Xamarin
Что такое Xamarin.Forms?

Xamarin.Forms — это платформа пользовательского интерфейса с открытым кодом. С помощью Xamarin.Forms разработчики могут создавать приложения для Xamarin.Android, Xamarin.iOS и Windows на основе общей базы кода.
Xamarin.Forms позволяет разработчикам создавать пользовательские интерфейсы в XAML с помощью кода программной части в C#. Эти интерфейсы на каждой платформе подготавливаются к просмотру как собственные элементы управления.
Для кого предназначена платформа Xamarin.Forms
Платформа Xamarin.Forms ориентирована на разработчиков, перед которыми стоят следующие задачи:
- Совместное использование макета пользовательского интерфейса и разработка на различных платформах.
- Совместное использование кода, тестов и бизнес-логики на различных платформах.
- Написание кроссплатформенных приложений на языке C# в Visual Studio.
Как работает Xamarin.Forms

Xamarin.Forms предоставляет согласованный API для создания элементов пользовательского интерфейса на разных платформах. Этот API может быть реализован в XAML либо C# и поддерживает привязку данных для шаблонов, таких как «Модель — представление — модель представления» (MVVM).
Во время выполнения Xamarin.Forms использует отрисовщики платформы для преобразования кроссплатформенных элементов пользовательского интерфейса в собственные элементы управления в Xamarin.Android, Xamarin.iOS и UWP. Позволяет разработчикам добиться привычного внешнего вида, поведения и уровня производительности, а также реализовать преимущества совместного использования кода на разных платформах.
Приложения Xamarin.Forms обычно состоят из общей библиотеки .NET Standard и проектов отдельных платформ. Общая библиотека содержит представления XAML или C# и всю бизнес-логику, например службы, модели или другой код. Проекты платформы содержат всю зависящую от платформы логику или пакеты, необходимые приложению.
Xamarin.Forms использует платформу Xamarin для выполнения приложений .NET на разных платформах собственными средствами. Дополнительные сведения о Xamarin см. в статье Что такое Xamarin?.
Дополнительные функциональные возможности
Xamarin.Forms имеет большую экосистему библиотек, которые добавляют разнообразные функциональные возможности для приложений. В этом разделе описываются некоторые из этих дополнительных функций.
Xamarin.Essentials
Xamarin.Essentials — это библиотека, которая предоставляет кроссплатформенные API для собственных функций устройства. Как и сама платформа Xamarin, библиотека Xamarin.Essentials представляет собой абстракцию, которая упрощает процесс доступа к собственным служебным программам. Ниже приведены некоторые примеры служебных программ, предоставляемых Xamarin.Essentials:
- Сведения об устройстве
- Файловая система
- Акселерометр
- Телефон
- Преобразование текста в речь
- Блокировка экрана
Для получения дополнительной информации см. Xamarin.Essentials.
Оболочка
Оболочка Xamarin.Forms упрощает разработку мобильных приложений, предоставляя основные возможности, которые необходимы для большинства приложений. Ниже приведены некоторые примеры функций, предоставляемых этой оболочкой:
- Общие возможности навигации
- Схема навигации на основе URI
- Обработчик интегрированного поиска
Дополнительные сведения см. в разделе Оболочка Xamarin.Forms.
Особенности платформы
Xamarin.Forms предоставляет общий API, осуществляющий отрисовку собственных элементов управления на разных платформах, но конкретная платформа может иметь функции, отсутствующие на других платформах. Например, платформа Android имеет собственную функцию для быстрой прокрутки в ListView , а iOS — нет. Особенности платформы Xamarin.Forms позволяют использовать функции, доступные только на определенной платформе, без создания пользовательских отрисовщиков или эффектов.
Xamarin.Forms включает готовые решения для различных функций, характерных для определенных платформ. Дополнительные сведения можно найти в разделе
- Особенности платформы Xamarin.Forms
- Особенности платформы Android
- Особенности платформы iOS
- Особенности платформы Windows
Визуальный элемент материала
Визуальный элемент материала Xamarin.Forms используется для применения правил проектирования материалов к приложениям Xamarin.Forms. Визуальный элемент материала Xamarin.Forms использует свойство Visual для выборочного применения пользовательских отрисовщиков к пользовательскому интерфейсу, что обеспечивает единообразный внешний вид и поведение в iOS и Android.
Связанные ссылки
- Начало работы с Xamarin.Forms
- Xamarin.Essentials
- Оболочка Xamarin.Forms
- Визуальный элемент материала Xamarin.Forms
Xamarin.Native и Xamarin.Forms: в чем отличия
В статье рассматривается применение Xamarin.Forms — платформы, используемой для создания кросс-платформенных приложений таких операционных систем, как: Android, iOS и Windows. Также выявляются различия в применении Xamarin.Forms и Xamarin.Native.
Xamarin.Forms — это платформа пользовательского интерфейса, которая используется для разработки собственных кросс-платформенных мобильных приложений для Android, iOS и Windows UWP с использованием языка программирования C#. Появилась в 2014 году и со временем завоевала популярность среди определенного круга IT-разработчиков.
Что такое Xamarin.Forms
Xamarin была создана Натом Фридманом, Мигелем де Иказа и Джозефом Хиллом в мае 2011 года, а позже была приобретена компанией Microsoft в 2016 году. Изначально Xamarin Studio использовалась при работе с Mac, а отдельный плагин для Visual Studio применялся на операционной системе Windows. В зависимости от операционной системы, на которой планируется разработка, необходимо выбрать приложение для вашей ОС — Visual studio для Windows или для Mac.
Популярность платформы обусловлена наличием следующих аспектов:
- Использование одного языка программирования;
- Экономия средств. Создание приложения для любой операционной системы занимает меньше времени;
- С 2016 года лицензию на использование можно приобрести по разумной цене, также можно воспользоваться бесплатной демо-версией.
В то же время выделяется ряд минусов при работе с данной платформой:
- Задержки с обновлениями
Несмотря на то, что компания Microsoft стремится обеспечить незамедлительный выпуск необходимых обновлений, требуется некоторое время, чтобы внедрить новые изменения, новые плагины и т. д. Данная ситуация может негативно повлиять на качество и скорость выполнения работы в случае частого повторения.
- Ограниченный доступ к open-source библиотекам
Использование Xamarin Native для создания приложений отдельно для ОС Apple и Android предполагает больше преимуществ. Набор предлагаемых инструментов не настолько обширный, как при разработке мобильных приложений под каждую операционную систему, но в то же время платформа Xamarin предоставляет множество вариантов элементов интерфейса, в том числе диаграммы и графики, темы и другие удобные и полезные функции. В случае если будет необходимо использовать инструменты, не представленные в стандартном пакете, придется перейти на разработку отдельно для каждого типа ОС.
- Ограниченность экосистемы
Несмотря на то, что данный инструмент был выпущен уже в 2014 году, количество специалистов, разбирающихся в специфике данной программы, значительно до сих пор меньше, чем тех, кто привык работать с собственными платформами iOS или Android. Как следствие, найти разработчика, специализирующегося в большей степени на Forms, достаточно сложно. Анализируя данные, представленные в различных источниках, можно прийти к выводу, что количество специалистов, имеющих навыки работы с Xamarin, составляет не более 10% от всего количества мобильных разработчиков. Вместе с тем, создатели платформы стремятся поддерживать IT-специалистов, которые нацелены на использование их программы в дальнейшем. Так, например, было открыто специальное образовательное учреждение Xamarin University, которое предоставляет разнообразные ресурсы и возможности для практической подготовки специалистов в этой отрасли.
- Больший вес приложений
Приложения, созданные с помощью Xamarin.Forms, весят больше по сравнению с приложениями, созданными на Xamarin Native. Данный аспект был выявлен в ходе анализа приложений, созданных с помощью разных платформ. Большой вес приложения может стать существенной проблемой для пользователя, который подключается не по сети Wi-Fi. Это обстоятельство может побудить его отказаться от скачивания и установки определенного приложения.
- Не подходит для создания приложений с высокопроизводительной графикой.
Xamarin.Forms не рассчитан на создание приложений, где важность высокого уровня графики преобладает над предоставляемой информацией.
Xamarin Native
Xamarin.Android и Xamarin.iOS часто называют Xamarin.Native или традиционный Xamarin. Это кроссплатформенный инструментарий, который позволяет разработчикам создавать мобильные приложения с использованием C # и .NET framework. Независимый от платформы код нативных приложений Xamarin хранится либо в переносимой библиотеке классов (PCL), либо в общем проекте. Данные инструменты помогают в реализации функций, зависящих от платформы, и собственного UI.
Платформа Xamarin предоставляет доступ к широкому набору элементов управления, плагинов и API для ОС Apple и Android. Также программа оснащена средой разработки UI для Xamarin Studio и Visual Studio, что упрощает разработчикам создание безупречных проектов для UI и UX. Если ваше приложение требует сложного графического интерфейса, то Xamarin Native — это подходящая платформа для вас. Также важен тот факт, что с Xamarin Native разработчикам необходимо работать над базовым кодом, а затем над кодом пользовательского интерфейса, зависящим от платформы. Разработчикам, которые планируют использовать данный инструмент при создании программ для мобильных телефонов, необходимо ознакомиться с особенностями Xamarin.Android и Xamarin.iOS.
Xamarin.Android
Данный инструмент позволяет разработчикам создавать приложения для Android, используя языки программирования C # или F # вместо Kotlin. Android SDK полностью интегрирован в среду C # + NET – разработчикам не нужно изучать нативные языки. Также поддерживает различные настройки для 2D-графики, поэтому разработчики и дизайнеры могут создавать пользовательские анимации и графику прямо в фреймворке и интегрировать их в UI приложения. Кроме того, поддерживает 32-разрядную и 64-разрядную архитектуру процессора и позволяет поддерживать несколько из них одновременно. Созданную программу, например, игру, можно загрузить в Google Play непосредственно из рабочей платформы – предварительно убедившись, что приложение соответствует всем предъявляемым требованиям от Google Play.
Xamarin.iOS
Как и в Android, ОС Apple также обладает набором нативных приложений. Разработчики могут использовать готовые шаблоны для UI страницы, навигации и элементов управления. Xamarin.iOS поддерживает Apple Pay, позволяя пользователям оплачивать физические и онлайн-покупки со своего мобильного телефона. Проблем с поддержкой не возникает, можно установить на всех iPhone, начиная с iPhone 6, а теперь и на устройствах Apple Watch. Xamarin позволяет публиковать приложения для iOS путем распространения в App Store, развертывания IPA, распространения Ad hoc и распространения in-house.
Когда применяют Xamarin.Forms
Для того, чтобы понять, подходит ли вам данная платформа, необходимо определить, к какой разновидности приложений будет относится ваше. Xamarin.Forms может использоваться для создания следующих видов приложений:
- Прототипы — для визуализации того, как ваше приложение будет выглядеть на разных устройствах;
- Приложения, которым не требуются специфичные для платформы функции (например, API), но обратите внимание, что Xamarin усердно работает над обеспечением максимально возможной кросс-платформенной совместимости;
- Приложения, в которых совместное использование кода является более важным аспектом, чем UI;
- Приложения, в которых отображаемые данные важнее, чем расширенная функциональность.
Также необходимо принимать во внимание следующий ряд факторов:
- Кто будет отвечать за разработку — если ваша команда состоит из опытных мобильных разработчики смогут легко работать с данной программой. Но если в вашем штате сотрудников только один разработчик на платформу, использование Xamarin.Forms может вызвать затруднения.
- Быть готовым к тому, что с Xamarin.Forms иногда могут возникать некоторые проблемы, потому как программа совершенствуется каждый день.
- Использование Xamarin.Forms позволяет сократить затраты на разработку.
- Будет отличным вариантом при разработке корпоративных приложений без какой-либо расширенной функциональности.
Таким образом, использование платформы Xamarin.Forms. предоставляет возможность создавать приложения для нескольких операционных систем, используя при этом один язык программирования. Наиболее часто используемая платформа Xamarin Native имеет ряд плюсов и минусов в использовании, также, как и Xamarin.Forms, поэтому при разработке важно учитывать требования, которые будут предъявляться к создаваемому приложению. В то же время IT-специалисты, использующие в своей работе относительно новую платформу, получают преимущества по количеству затраченного времени и использованию одного языка программирования.
Оглавление
- Что такое Xamarin.Forms
- Xamarin Native
- Xamarin.Android
- Xamarin.iOS
- Когда применяют Xamarin.Forms
Сравнение Xamarin с нативными iOS/Android и гибридными разработками
В последнее время многие разработчики приложений склонны соглашаться с тем, что Xamarin может считаться нативным инструментом разработки. В самом деле, существует мнение, что «все, что можно сделать в приложении iOS с использованием Objective-C или Swift, и все, что можно сделать в приложении Android с помощью Java, можно сделать и на языке C # при помощи Xamarin».
Тем не менее существует много подводных камней в соперничестве нативной платформы и платформы Xamarin. Итак, давайте сравним Xamarin с нативными инструментами разработки и разработкой гибридных платформ (Ionic, PhoneGap/Cordova).
Один стек, одна кодовая база (C#, .Net framework + нативные библиотеки)
Разные стеки для каждой платформы
Один стек, одна кодовая база (JavaScript, HTML5, CCS)
Совместное использование кода
Да, до 96% с использованием Xamarin.Forms
Нет, разные кодовые базы
UI/UX (User Interface/User Expierence)
Возможна полная настройка UI для каждой платформы
Только платформо-зависимые UI
Общий UI для всех платформ (ограниченные возможности настройки)
Хорошая, близкая к родной
Возможности аппаратных средств
Высокие. Xamrin использует платформо-
и поддерживает связь с нативными библиотеками
Высокие. Нативные инструменты имеют полную поддержку для возможностей системы OOTB
Средние. Возможности могут быть доступны через сторонние API и плагины, хотя есть некоторые риски из-за низкого качества и ненадежности большинства из этих инструментов
TTM (время выхода на рынок)
С Xamarin.Forms TTM происходит быстро из-за ограниченной настройки и расширенного обмена кодами.
Xamarin,iOS и Xamarin.Android требуют больше времени по мере того, как увеличивается количество пользовательского кода.
TTM для нативных приложений Android или iOS может быть таким же, что и для Xamarin.Forms или гибридных инструментов. Тем не менее создание приложений для множества платформ может потребовать от вас либо продлить время выхода на рынок, либо увеличить количество заинтересованных разработчиков
Благодаря единой кодовой базе и минимальной настройке, гибридные решения быстрей выходят на рынок. Эти инструменты используются даже для макетирования концептуальных проектов
Есть ли альтернатива Xamarin сегодня?
Гибридные инструменты мобильной разработки развиваются довольно быстро, но им по-прежнему не хватает производительности и собственных возможностей, которые предлагает Xamarin. При этом затраты остаются сопоставимиыми. Если рассматривать два подхода (гибридный и Xamarin), то самая популярная дилемма — это Xamarin против Ionic и Xamarin против React. Однако React Native теряет популярность из-за ряда ограничений в базовых технологиях (стек веб-технологий).
Тем не менее существует мобильный инструмент разработки на базе JavaScript, который превосходит гибридные решения, по крайней мере, с точки зрения UI. Речь идет о NativeScript. Этот кроссплатформенный фреймворк с открытым исходным кодом при поддержке Telerik и при помощи единой базы кода позволяет вам реализовывать нативный UI и подключаться к родным API для лучшего использования мобильных устройств. Его главное отличие заключается в том, что он использует разметку XML, которая компилируется не в веб-браузере HTML, а в нативных эквивалентах Android и iOS.
Этот подход заполняет пробелы между нативными и гибридными разработками, и его методы похожи на то, что делает Xamarin. Основное различие между этими двумя инструментами заключается в языке программирования. Поэтому сравнение Xamarin и NativeScript, должно стать предметом более подробных исследований.
В то же время обсуждения преимуществ и недостатков Xamarin и нативных разработок Android/iOS кажутся более сложными: оба варианта доказывают, что они ценны с точки зрения качества и производительности. Поэтому выбор обычно зависит от типа приложения, которое вы хотите создать.
Советы по использованию Xamarin
При сравнении всех за и против нетрудно прийти к выводу, что перечисленные недостатки могут нанести ущерб разработке. Большинство владельцев бизнеса выбирают платформу Xamarin, так как это сокращает время выхода на рынок (Time-To-Market) и инженерных затрат за счет совместного использования кода и использования единого стека технологий.
Основываясь на опыте нашей команды, можно заключить, что лучшим вариантом использования Xamarin является разработка мобильных приложений для бизнеса. Со стандартным интерфейсом, который охватывает 90% проектов, логическое ядро продукта можно легко сделать общим на всех платформах.
В случае создания приложений со сложным интерфейсом, количество общего кода кардинально уменьшается. Таким образом, кроссплатформенная разработка Xamarin теряет своё главное преимущество и может сравняться по затратам с отдельными нативными решениями для каждой целевой платформы. Но это не делает приложения на Xamarin менне качественными, просто несколько увеличивает трудозатраты. И если вы ищете альтернативу платформе Xamarin для создания кроссплатформенных мобильных приложений, вы, скорее всего, разочаруетесь. Так, наиболее широко используемыми кроссплатформенными мобильными инструментами для разработки являются PhoneGap/Apache Cordova, Ionic Framework, Appcelerator/Titanium, а они, в первую очередь, опираются на веб-технологии, такие как HTML5 или JavaScript. Именно поэтому ни один из этих инструментов не может иметь такой же уровень производительности и нативные функциональные возможности, какие нам предлагает платформа Xamarin.