Преимущества и особенности при работе с технологией Xamarin
Несомненные преимущества Xamarin для создания мобильных приложений делают ее номером один среди большого выбора стеков технологий. Есть и некоторые особенности, но для профессионалов это скорее плюс, чем минус, так как эти особенности отрезают ленивых и некомпетентных разработчиков.
Преимущества использования Xamarin для разработки мобильных приложений
Существует несколько веских причин, по которым Xamarin используется многими компаниями, включая Trello, Slack и GitHub.
+ Единый стек технологий для разработки на всех платформах
Xamarin использует язык C# и .NET Framework, чтобы создавать приложения для любой мобильной платформы. Таким образом, вы можете повторно использовать до 30% исходного кода, ускоряя процесс разработки. Xamarin также не требует переключения между средами разработки: все приложения Xamarin могут создаваться средствами Visual Studio. Кроссплатформенные инструменты разработки предоставляются как встроенная часть IDE без каких-либо дополнительных затрат.
Обзор приложения, написанного на C# и Xamarin. Смотрим возможность Xamarin
+ Производительность близка к нативной
Кроссплатформенное приложение, созданное с помощью Xamarin, можно классифицировать как нативное, в отличие от традиционных гибридных решений, базирующиеся на веб-технологиях. Показатели производительности сопоставимы с показателями Java под Android и Objective-C или Swift для разработки приложений под iOS. Более того, показатели производительности Xamarin постоянно улучшаются и совершенствуются, чтобы полностью соответствовать стандартам отечественной разработки. Платформа Xamarin предлагает комплексное решение вопросов тестирования и отслеживания производительности приложения: Xamarin Test Cloud в сочетании с инструментом Xamarin Test Recorder позволяет запускать автоматические тесты пользовательского интерфейса и находить проблемы производительности еще до выпуска приложения. Однако эта услуга предоставляется за дополнительную плату.
+ Собственный пользовательский опыт
Используя платформо-зависимые элементы UI, Xamarin позволяет создавать интерфейс. Для большего удобства разработки пользовательского интерфейса приложения рекомендуется использовать Xamarin.iOS и Xamarin.Android отдельно. Это обеспечивает лучший результат.
+ Полная поддержка оборудования
Xamarin устраняет все проблемы совместимости оборудования, используя плагины и различные API для работы с функциями общих устройств на всех платформах. Наряду с доступом к особым API-платформам, Xamarin можно компоновать с библиотеками, нативными для конкретной платформы. Это позволяет проводить более тонкую настройку и поддерживать функциональность родного для платформы слоя с небольшими накладными расходами.
+ Open Source-технологии с корпоративной поддержкой
После того как в феврале 2016 года компанию приобрела Microsoft, лицензионная политика Xamarin подверглась радикальным изменениям. Xamarin SDK, включая библиотеки и инструменты командной строки, стал открытым и доступным для всех под лицензией MIT, как часть Visual Studio. Путём устранения основной преграды в виде стоимости лицензии, Microsoft обеспечила наилучшие условия для дальнейшего развития платформы. Кроме того, во главе с Microsoft и при поддержке Unity, JetBrains, Red Hat, .NET Foundation, Xamarin стал надёжным и мощным стеком технологий для разработки мобильных приложений.
Я выучил C# и Xamarin за 4 часа
+ Простая поддержка
Благодаря кроссплатформенности, Xamarin упрощает поддержку и обновление программного обеспечения. Вы можете просто внести изменения в один исходный файл, и они будут применяться к приложениям как iOS, так и Android. Но это имеет отношение только к приложениям, использующим общую бизнес-логику, а также общий код для приложений Xamarin.iOS и Xamarin.Android. Таким образом, это поможет вам сэкономить время и деньги, при этом сохраняя ваши приложения в рабочем состоянии.
+ Полная экосистема развития
Xamarin поставляется в одном наборе с полным пакетом инструментов разработки: собственная система IDE (Visual Studio), Xamarin SDK, тестирование (Xamarin Test Cloud), распространение и аналитика (Hockeyapp and Xamarin.Insights). Таким образом, не нужно вкладываться в дополнительные инструменты или же интегрировать другие приложения для создания, тестирования и развертывания ваших приложений Xamarin.
Особенности Xamarin
Однако все же существует ряд особенностей, о которых следует знать при разработке на Xamarin.
— Обновления поддержки платформ не день в день
Это целиком и полностью зависит от команды разработчиков Xamarin. Невозможно, чтобы «сторонние» инструменты обеспечивали немедленную поддержку выхода последних обновлений iOS и Android: требуется некоторое время, чтобы внедрить новые изменения, новые плагины и т. д. Хотя Xamarin утверждает, что обеспечивает поддержку в тот же день, но все же могут быть задержки в один-два дня.
— Доступны не все существующие библиотеки
Нативная разработка широко использует технологии с открытым исходным кодом. С Xamarin придется пользоваться компонентами, предоставляемыми платформой и некоторыми .NET ресурсами, которые используются разработчиками и потребителями. Выбор, конечно, не так велик, как при разработке мобильных приложений под iOS и Android, однако, компоненты Xamarin предоставляют тысячи разных элементов интерфейса: диаграммы и графики, темы и другие удобные и полезные функции, которые можно добавить в любое приложение всего в несколько кликов. Эта платформа включает в себя функции встроенной обработки платежей (такую, как Stripe), поддержку маячков и носимых устройств, служб Push уведомлений, решений для облачных хранилищ, возможностей мультимедиа, стриминга и многое другое.
— Развивающаяся экосистема
Хоть платформа Xamarin растет и развивается, а также поддерживается со стороны Microsoft, но очевидно, что сообщество специалистов, разбирающихся в специфике Xamarin, значительно меньше, чем у iOS или Android, поэтому найти опытного разработчика может оказаться непросто. Судя по информации из разных источников, сообщество Xamarin составляет 10% от общего количества мобильных разработчиков. Несмотря на то что число инженеров Xamarin не сравнится с числом профессионалов iOS или Android, создатели платформы оказывают поддержку своим специалистам. Например, существует специальное образовательное учреждение Xamarin University, которое предоставляет разнообразные ресурсы и возможности для практической подготовки специалистов в этой отрасли. Благодаря такой поддержке, кривая обучаемости минимальна для опытных программистов C#.
— Требование к базовым знаниям языка программирования
При использовании Xamarin.iOS и Xamarin.Android для создания мобильных приложений с нативным интерфейсом приходится писать платформо-зависимый слой кода. Следовательно, требуются, по крайней мере, базовые знания нативных технологий (Java/Kotlin для Android и Objective-C/Swift для iOS). Однако они не применяются для Xamarin.Forms.
— Xamarin не подходит для игр с высокопроизводительной графикой
Главное преимущество Xamarin — это возможность использовать код на разных платформах. Тем не менее речь идет только о логике, код UI будет в основном уникален для платформы. Это позволит создавать игры на Xamarin, но богатый пользовательский интерфейс или же сложные анимации с небольшим количеством общего кода делают Xamarin непригодным.
— Требуется дополнительная оптимизация размера приложения
В зависимости от типа и сложности, приложения Xamarin обычно больше, чем нативные, иногда даже в два раза. На Android простое «Hello, World» может занимать до 16 MB, причем большая часть его используется связанными библиотеками, окружением Mono и базовыми библиотеками (Base Class Library, BCL). Таким образом, приложение обычно нуждается в дополнительной оптимизации, чтобы размер его файла был не слишком большим.
— Качество интеграции зависит от разработчика
Есть вероятность того, что могут возникнуть некоторые проблемы с интеграцией сторонних ресурсов с Xamarin. Хотя большинство инструментов и библиотек предлагают полную поддержку для нативных технологий, совместимость с Xamarin не может быть гарантирована компанией-производителем. Хотя у Xamarin есть собственный арсенал компонентов, всегда есть вероятность, что вам может потребоваться конкретная функция или интеграция в вашем приложении, которая не предоставляется платформой.
Источник: wellsoft.pro
Что такое Xamarin?
Xamarin — это платформа с открытым исходным кодом, предназначенная для построения современных производительных приложений для iOS, Android и Windows с .NET. Платформа Xamarin представляет собой уровень абстракции, который обеспечивает управление взаимодействием между общим кодом и кодом базовой платформы. Xamarin выполняется в управляемой среде, которая реализует такие возможности, как выделение памяти и сборка мусора.
Благодаря Xamarin в среднем 90 % кода приложения может использоваться без изменений на разных платформах. С помощью этого шаблона разработчик может написать всю бизнес-логику на одном языке (или использовать существующий код приложения), но при этом получить характеристики производительности, оформление и поведение, характерные для каждой соответствующей платформы.
Приложения Xamarin можно писать на ПК или Mac и компилировать в собственные пакеты приложений, например в файлы с расширением .apk для Android или .ipa для iOS.
Для компиляции и развертывания приложений для iOS на данный момент требуется компьютер с MacOS. Сведения о требованиях к разработке см. в разделе Требования к системе.
На кого ориентирована платформа Xamarin
Платформа Xamarin ориентирована на разработчиков, перед которыми стоят следующие задачи:
- Совместное использование кода, тестов и бизнес-логики на различных платформах.
- Написание кроссплатформенных приложений на языке C# в Visual Studio.
Как работает платформа Xamarin
На этой схеме показана общая архитектура кроссплатформенного приложения Xamarin. С помощью Xamarin вы можете создавать собственный пользовательский интерфейс для каждой платформы и писать на языке C# общую бизнес-логику, которая будет использоваться на различных платформах. В большинстве случаев Xamarin позволяет использовать на разных платформах 80 % кода приложения.
В основе Xamarin лежит среда .NET, которая автоматически обрабатывает такие задачи, как выделение памяти, сборка мусора и обеспечение взаимодействия с базовыми платформами.
Дополнительные сведения об архитектуре для конкретных платформ см. в разделах Xamarin.Android и Xamarin.iOS.
Добавленные компоненты
Xamarin сочетает в себе возможности собственных платформ с добавлением возможностей, к которым относятся:
- Полная привязка для базовых пакетов SDK. Xamarin содержит привязки практически для всех базовых пакетов SDK в iOS и Android. Кроме того, эти привязки являются строго типизированными, что означает, что они удобны в навигации и использовании, а также позволяют осуществлять качественную проверку типов во время компиляции и разработки. Строго типизированные привязки, позволяющие сократить количество ошибок времени выполнения и повысить качество приложений.
- Взаимодействие Objective-C, Java, C и C++ . Xamarin позволяет напрямую вызывать библиотеки Objective-C, Java, C и C++ для более эффективного использования разнообразного стороннего кода. Эта возможность позволяет использовать существующие библиотеки iOS и Android, написанные на Objective-C, Java или C/C++. Кроме того, Xamarin предлагает проекты привязки для привязки собственных библиотек Objective-C и Java с помощью декларативного синтаксиса.
- Современные конструкции языка. Приложения Xamarin написаны на современном языке C#, который характеризуется значительными улучшениями по сравнению с Objective-C и Java. Сюда входят динамические функции языка, функциональные конструкции, например лямбда-выражения, LINQ, функции параллельного программирования, универсальные шаблоны и т. д.
- Надежная библиотека базовых классов (BCL) . Приложения Xamarin используют библиотеку BCL .NET, большую коллекцию классов со всеобъемлющими и упрощенными возможностями, включая поддержку XML, баз данных, сериализации, операций ввода-вывода, строк, сетевых функций и т. д. Существующий код C# можно скомпилировать для использования в приложениях, обеспечивая доступ к тысячам библиотек, которые содержат дополнительные функции, выходящие за рамки BCL.
- Современная интегрированная среда разработки (IDE) . Xamarin использует современную среду Visual Studio, в которой реализованы такие возможности, как автозавершение кода, более совершенная система управления проектами и решениями, исчерпывающая библиотека шаблонов проектов, интегрированная система управления версиями и многое другое.
- Поддержка кроссплатформенных мобильных приложений. Xamarin предлагает усовершенствованную кроссплатформенную поддержку для трех основных платформ — iOS, Android и Windows. Объем общего кода в созданных приложениях может достигать 90 %, а библиотека Xamarin.Essentials предлагает универсальный API-интерфейс для доступа к общим ресурсам на всех трех платформах. Это позволяет значительно сократить затраты на разработку и время выпуска продуктов на рынок для разработчиков, создающих мобильные приложения.
Xamarin.Android
Приложения Xamarin.Android компилируются из языка C# в промежуточный язык (IL) , который при запуске приложения претерпевает Just-in-Time-компиляцию (JIT) в машинную сборку. Приложения Xamarin.Android работают в среде выполнения Mono параллельно с виртуальной машиной среды выполнения Android (ART). Xamarin предоставляет привязки .NET к пространствам имен Android.* и Java.*. Среда выполнения Mono обращается к этим пространствам имен с использованием управляемых вызываемых оболочек (MCW) и предоставляет среде выполнения ART вызываемые программы-оболочки Android (ACW) , благодаря чему обе среды могут вызывать код друг друга.
Дополнительные сведения см. в разделе Архитектура Xamarin.Android.
Xamarin.iOS
Приложения Xamarin.iOS проходят полную Ahead-of-Time-компиляцию (AOT) из языка C# в собственный код сборки ARM. Xamarin использует селекторы для предоставления кода Objective-C управляемому коду C# и Registrars для предоставления управляемого кода C# коду Objective-C. Селекторы и Registrars в совокупности называются «привязками» и обеспечивают взаимодействие между Objective-C и C#.
Дополнительные сведения см. в разделе Архитектура Xamarin.iOS.
Xamarin.Essentials
Xamarin.Essentials — это библиотека, которая предоставляет кроссплатформенные API для собственных функций устройства. Как и сама платформа Xamarin, библиотека Xamarin.Essentials представляет собой абстракцию, которая упрощает процесс доступа к собственным функциям. Ниже приведены некоторые примеры функциональных возможностей, предоставляемых Xamarin.Essentials:
- Сведения об устройстве
- Файловая система
- Акселерометр
- Телефон
- Преобразование текста в речь
- Блокировка экрана
Для получения дополнительной информации см. Xamarin.Essentials.
Xamarin.Forms
Xamarin.Forms — это платформа пользовательского интерфейса с открытым кодом. С помощью Xamarin.Forms разработчики могут создавать приложения для Xamarin.iOS, Xamarin.Android и Windows на основе общей базы кода. Xamarin.Forms позволяет разработчикам создавать пользовательские интерфейсы в XAML с помощью кода программной части в C#. Эти пользовательские интерфейсы на каждой платформе подготавливаются к просмотру как собственные элементы управления. Ниже приведены некоторые примеры функций, предоставляемых Xamarin.Forms:
- Язык пользовательского интерфейса XAML
- Привязка данных
- Жесты
- Произведенный эффект
- Задание стиля
Для получения дополнительной информации см. Xamarin.Forms.
Начало работы
Ниже представлены руководства, которые помогут вам в создании первого приложения с использованием Xamarin:
- Начало работы с Xamarin.Forms
- Начало работы с Xamarin.Android
- Начало работы с Xamarin.iOS
- Начало работы с Xamarin.Mac
Связанные видео
Другие видео о Xamarin см. на Channel 9 и YouTube.
Источник: learn.microsoft.com
Разработка крупных приложений на Xamarin: в чем выгода
Разработчики используют кроссплатформенный фреймворк Xamarin в основном для создания небольших проектов или прототипов. Мы в DD Planet часто сталкиваемся с мифом, что для крупных бизнес-приложений он не подходит. Наша многолетняя практика показывает обратное — основные преимущества этого фреймворка проявляются именно в разработке масштабных проектов. В этой статье я на реальном примере покажу, как с помощью Xamarin можно экономить код, время и деньги.
Несколько слов о Xamarin
Xamarin — это современный кроссплатформенный фреймворк разработки мобильных приложений на языке C# для устройств на iOS, Android и Windows.
Американская компания Xamarin основана в 2011 году. Ее разработчики адаптировали платформу .NET Framework, изначально рассчитанную на работу с Microsoft Windows, под другие мобильные платформы. В 2016 году компанию купил Microsoft и инструментарий стал бесплатным.
Он ориентирован на разработчиков, которые:
- хотят переиспользовать код, тесты и бизнес-логики на различных платформах;
- пишут кроссплатформенные приложения на C#.
- Это инструмент .NET, поэтому он подходит тем, кто специализируется именно на .NET разработке. Например, DD Planet: мы работаем на этой платформе уже 17 лет и стали использовать Xamarin одними из первых на российском рынке.
- Позволяет использовать большое количество .NET библиотек. У .NET огромный репозиторий библиотек. Разработчику там трудно чего-то не найти.
- В разработке используется язык C#, он позволяет строить объектно-ориентированную модель и изолировать уровни. Это значит, что можно выстраивать архитектуру с упором на переиспользование кода.
- UI настраивается для каждой платформы по отдельности нативными инструментами.
- В целом на базе Xamarin можно выстроить любое архитектурное решение. Игры на нем особо не попишешь, но некоторые делают и это.
Основное преимущество Xamarin для бизнеса состоит в том, что он позволяет существенно (почти в 2 раза) сократить сроки и затраты на разработку при сохранении всего необходимого функционала и качества. То есть на выходе получается такое же приложение, как с помощью разработки на нативных языках программирования, только дешевле и быстрее.
Давайте посмотрим, за счет чего это происходит.
Ценность для крупных приложений
Главная особенность масштабных приложений: сложность дизайна и функциональности способствует увеличению количества кода. В результате возрастают время на разработку и бюджеты. Ведь если говорить о нативной разработке, компания сталкивается с необходимостью подключить к работе две команды разработчиков: отдельно на iOS и на Android, и фактически платит за два приложения вместо одного. В этом случае кроссплатформенные фреймворки, позволяющие писать код единожды и переиспользовать его на разных платформах, становятся важной альтернативой.
Так, возможность переиспользовать общий код — главный аргумент в пользу Xamarin. При разработке крупных приложений мы часто сталкиваемся с тем, что большие куски бизнес-логики приходится перетаскивать между разными частями приложения. Xamarin хорош тем, что позволяет пользоваться общей кодовой базой Core проекта и перетаскивать большие пласты логики с экрана на экран.
В среднем с его помощью до 90% общего кода приложения без изменений программисты могут переиспользовать на разных платформах. Разработку можно вести под Windows или MacOS и компилировать в нативные пакеты приложений: в.apk для Android или .ipa для iOS.
В результате мы можем в общем коде делать что угодно, выстраивать любую архитектуру так, как удобно нам. Чем масштабнее проект, тем больше процент переиспользованного кода экономит ресурсы.
Использование Xamarin в разработке приложения «Вместе.ру»
Один из ярких примеров — наш крупный интеграционный проект, который мы реализуем совместно с клиентом уже более трех лет. Это экосистема для соседей по всей России «Вместе.ру» — мобильное приложение на Android и iOS, созданное с помощью Xamarin.
Сервисом пользуются десятки тысяч человек, подключены управляющие компании и много разных партнеров. В нем доступны:
- Регистрация недвижимости, подтверждение права владения через Росреестр и личности через Госуслуги.
- Высоконагруженный мессенджер с тремя уровнями чатов: контекстными, групповыми и личной перепиской. Важная часть приложения, ежедневно обрабатывает тысячи сообщений.
- Новостная лента, уведомления и группы по интересам.
- Сервисы для оплаты ЖКУ и связи с управляющей компанией.
- Интеграция с сервисами: Госуслуги, Росреестр, ГИС ЖКХ, ФИАС, 2 Gis, DaData. Совсем недавно подключили сервис «Добродел», мы передаем им из нашей системы жалобы жильцов.
- Управление парковочными местами и шлагбаумами.
Приложение огромное — реализовано больше 200 экранных форм: кабинеты пользователей и партнеров, множество разных новостных лент, сервисов оплаты и прочее.
Представьте, если бы для каждого экрана нам пришлось описывать бизнес-логику отдельно, да еще и для двух платформ. Сейчас около 50% кода мы переиспользуем с помощью Xamarin.
Принципы разработки проекта:
- Мы работаем с Xamarin.Native — оберткой над нативными SDK, позволяющей писать код на C#. Но мы также продолжаем использовать нативные инструменты для описания UI так, как это было задумано платформой, и проводим четкую линию между UI и бизнес-логикой.
- У нас есть как отдельные проекты для Android и iOS, так и общие, которые переиспользуются на каждой платформе — всего таких проектов 15.
- Эти проекты мы изолируем друг от друга в том числе с помощью паттерна проектирования архитектуры приложения MVVM. Это и дает нам возможность быстро перетаскивать их с одного решения на другое, с одного экрана на другой.
- Приложение самостоятельно инспектирует работу с API — это позволяет нам быстро замечать неполадки или сбои. Также в него встроены инструменты тестирования и отладки, у тестировщиков прямо в приложении есть доступ к служебным экранам для диагностики.
- Мы выстраиваем архитектуру таким образом, чтобы код приложения был разбит на переиспользуемые модули, которые можно использовать отдельно друг от друга и собирать новый функционал из готовых модулей «по кирпичикам».
Такой подход позволил в десятки раз сэкономить время на разработку новых экранов, использовать единую логику поведения контентных лент во всем проекте и снизить риск возникновения багов при работе с ними. Профита такого уровня было бы невозможно добиться без использования Xamarin и общего кода.
Мы написали всего 250 тысяч строк чистого кода. Из них:
- Core: 110 тысяч;
- iOS: 80 тысяч;
- Android: 60 тысяч.
Без применения Xamarin пришлось бы дважды писать Core: Core iOS (110 тысяч) и Core Android (110 тысяч). В нашем случае Core написан единожды и используется и для Android и для iOS. Таким образом, мы сэкономили 40% кода.
Рецепт успеха
Выбирая технологию, обращайте внимание, в чем ее преимущества. Следует научиться ими жонглировать, чтобы получить наибольшую выгоду. Мы получили от Xamarin плюс — возможность использовать общий код. Раз Xamarin дает такую возможность, надо сделать на этом упор. Если приложить достаточно усилий, из этого можно получить серьезный выигрыш.
Можно экономить каждую строчку кода, дробить проект на мелкие переиспользуемые модули, чтобы разработка базовых вещей представляла собой не описание одного и того же ежедневно, а больше была похожа на конструктор. Это проще для разработчиков, дешевле для заказчиков, экономит время и код. Таким образом, когда процент переиспользованного кода растет, наибольший выигрыш от Xamarin виден на разработке именно крупных проектов.
19 комментариев
Написать комментарий.
3 года назад отказался от Xamarin в пользу Flutter и не жалею. Xamarin – прошлый век.
Развернуть ветку
А какого рода проекты вы делаете на Flutter? Он не очень подходит для сложных приложений, где нужно разрабатывать серьезный функционал.
Развернуть ветку
Применение Flutter-а никак не связано с «серьезностью» приложений! И Flutter – это только UI и ничего больше! Причем такие мощные UI, что иногда бывает сложно себе представить, что оказывается, что так «можно было» :)). Все остальное остается в нативе.
Почему именно Flutter, а не другие фреймворки и даже не «натив»?
Единая база исходного кода для iOS и Android платформ – это огромный «плюс» в пользу использования любых кроссплатформенных фреймворков (четкая организация кода и поддержка в разы дешевле).
WEB- и JS- кроссплатформенные фреймворки типа: Ionic, ReactNative, Xamarin, Cordova (PhoneGap), Qt. работают через WebView-мост, что делает такие приложения очень «медленными» и «негибкими» для реализации нестандартного функционала!
Flutter – это принципиально другой подход в кроссплатформенной мобильной разработке. Если кратко, то можно сказать, что отрисовка UI на Flutter работает без всяких WebView-мостов и вся отрисовка UI происходит средствами операционной системы. Т.е. UI обычных приложений на Flutter-е даже на Android-е работают напрямую с видеоускорителем (как работают игры), что делает их такими же быстрыми, какими всегда были приложения для iOS.
Flutter — это SDK, который предназначен для создания самых высокопроизводительных UI для мобильных приложений под iOS и Android из единой кодовой базы, с открытым исходным кодом, созданный Google. Также Flutter является пока единственным инструментом для создания приложений для новейшей OS от Google – Fuchsia.
Источник: vc.ru
Xamarin: что это такое, кому стоит использовать и ответы на другие важные вопросы о фреймворке
При кроссплатформенной разработке код и элементы дизайна для одной платформы используются при работе над следующей, и это обещает неплохую экономию. Xamarin позиционируется как лучший инструмент для таких решений. Рассказываем, как он работает и для кого.
Кто выигрывает с Xamarin?
Бизнес-логика приложения редко меняется при смене платформы. Ваш любимый интернет-банкинг проводит платежи и сообщает баланс вне зависимости от того, работаете вы на смартфоне или ноутбуке. Подобные приложения со сложной бизнес-логикой и стандартным интерфейсом — прерогатива Xamarin.
Алгоритмы, разработанные на C# для одной платформы, программисты используют и для всех остальных платформ. Например, при работе на Xamarin.Android и Xamarin.iOS, до 75% кода можно переиспользовать: приложение работает одинаково и на iPhone, и на Android-смартфоне.
Если в приложении главное — функциональность, а из дизайна всего пара кнопок и красивый график — вам повезло, Xamarin подходит. На проектах со сложным интерфейсом стоимость доработки иногда сопоставима с разработкой двух-трёх нативных решений. Но бизнес-логика равно не меняется и с каждой новой версией приложения разрабатывать ещё будет проще — все нюансы требований заказчика уже известны. В сухом остатке затраты на доработку зависят от команды и сложности дизайна.
Какие плюсы?
Экономия ресурсов, переиспользование кода и простота добавления версий для новых платформ. Код на C# доступен всей команде и при достаточной квалификации может быть использован на любой другой платформе: как мобильной, так и десктопной.
Ваша команда подходит?
Для программистов, уже работающих с несколькими платформами отдельно, переход на кроссплатформенные решения покажется рутиной. Разобраться в Xamarin легко, а вот изучить документацию, гайдлайны, SDK и API каждой платформы с нуля — гораздо сложнее.
Для тех же Xamarin.Android и Xamarin.iOS требуется знание iOS Storyboards и синтаксис Android XML. Конечно, обучать сотрудников всегда полезно, но готовы ли вы делать эти вложения прямо сейчас? В любом случае, лучше иметь на проекте пару iOS-Android разработчиков, которые ускорят процесс обучения коллег. В команде одни десктоп-специалисты, а приложение должно работать и на смартфонах? Без дополнительной помощи мобильных разработчиков вы вряд ли почувствуете экономию от Xamarin.
Сколько это стоит?
Ещё в начале 2016 года разработчики тратили на лицензию Xamarin до $999 в год. Но после поглощения компанией Microsoft большая часть продуктов Xamarin стала доступна по лицензии Visual Studio 2013 или Visual Studio 2015. Скачивайте всё необходимое с официального сайта Xamarin или прямо в Visual Studio 2015 (Update 2) и начинайте работу.
Доплачивать надо, например, за Xamarin Test Cloud. Но будем честны: без этого сервиса может обойтись подавляющее большинство проектов.
Стоит учитывать стоимость оборудования. Вам понадобятся устройства с macOS для разработки на iOS SDK и Windows для Windows Phone SDK, а Android SDK работает и там, и там.
О чем стоит беспокоиться?
Xamarin сравнительно молодой — на специфические вопросы не всегда удаётся найти ответы в документации или на форуме. Но можно спросить у разработчиков на конкретных платформах. В Xamarin используются нативные SDK, даже название методов и классов в Xamarin наследуется, так что проблем с поиском возникнуть не должно.
Раздел для разработчиков на сайте Xamarin содержит детальную документацию, API и примеры всех методов и процедур — этого достаточно, чтобы начать разработку. Для всего остального есть Stackoverflow с ответами на любые вопросы по Xamarin, iOS, Android.
Первые Xamarin-специалисты жаловались на проблемы при работе со сторонними библиотеками. Сегодня SQLite.NET, loC фреймворки Autofac, MVVC фреймворки и другие популярные библиотеки поддерживают кроссплатформенную разработку. Если вы не собираетесь использовать на проекте исключительно редкие инструменты, то волноваться не о чем.
Xamarin.Forms или Xamarin.IOS + Xamarin.Android?
Зависит от возможностей и желаний. Xamarin.Forms — это инструмент для разработки единого интерфейса для всех платформ. Дизайн описывается в XML-файле, используя синтаксис XAML. Это оценят .NET-разработчики, которые обычно уверенно работают с XAML.
Проблема в том, что программисту будет доступен всего лишь небольшой набор стандартных элементов управления, внешняя оболочка, связанная с нативными кнопками, чекбоксами и прочим. Теоритически, в Xamarin.Forms используется до 100% общего кода, но только для приложений с совсем уж простым интерфейсом, вроде «Hello world». Если вам захочется что-то, чего нет в наборе, то придётся перерабатывать и сами элементы на каждой платформе по-отдельности. Выбирайте Xamarin.Forms для проектов, где вы готовы сэкономить на гибкости настройки интерфейса.
Чаще «схалявить» не получается и нужно использовать Xamarin.iOS и Xamarin.Android. Так у вас будет прямой доступ к API платформ и полный набор элементов управления, а каждая платформа будет представлена отдельным решением.
Так подойдет мне Xamarin или нет?
Ответьте на три вопроса и станет ясно, подходит ли вам Xamarin:
- Интерфейс приложения без сложной логики взаимодействия и нестандартных элементов управления?
- У вас в команде есть мобильные разработчики?
- Вы планируете другие кроссплатформенные проекты (пусть даже не на Xamarin) в ближайшее время?
Если вы ответили «да» на все вопросы, тогда Xamarin — хорошее вложение для вашей команды и проекта в долгосрочной перспективе.
Мария работает в Itransition более трех лет, отвечая за планирование проектов, выбор технологий под бизнес-требования заказчика, управление развертыванием и пост-проектной поддержкой и т.п. Участвовала в разработке самых разных систем, как мобильных, так и десктопных. Сфера особого интереса — базы данных.
Источник: tproger.ru
Xamarin и кросс-платформенная разработка
Xamarin.Forms представляет платформу, которая нацелена на создание кроссплатформенных приложений под Android, iOS и Windows 10. Зачем использовать именно данную платформу, какие преимущества она несет? Есть определенные статистические данные, что значительная часть мобильных приложений создается более чем для одной платформы, например, для Android и iOS. Однако неизбежно разработчики сталкиваются со следующими трудностями:
- различие в подходах построение графического интерфейса так или иначе влияет на разработку. Разработчики вынуждены подстраивать приложение под требования к интерфейсу на конкретной платформе
- разные API — различие в программных интерфейсах и реализациях тех или иных функциональностей также требует от программиста учет этих специфических особенностей
- разные платформы для разработки. Например, чтобы создавать приложения для iOS нам необходима соответствующая среда — Mac OS X и ряд специальных инструментов, типа XCode. А в качестве языка программирования выбирается Objective-C или Swift. Для Androidа мы можем использовать самый разный набор сред — Android Studio, Eclipse и т.д. Но здесь для подавляющего большинства приложений применяется Java или Kotlin. А для создания приложений под Windows используется Visual Studio, а в качестве языков — C#, F#, VB.NET, C++
Такой диапазон платформ, средств разработки и языков программирования не может положительно сказываться на сроках создания приложений, и, в конечном счете, на денежных средствах, выделяемых на разработку. Было бы очень эффективно иметь один инструмент, который позволял легко и просто создавать приложения сразу для всех платформ. И именно таким инструментом и является платформа Xamarin (произносится как «зэмарин»).
Xamarin позволяет создавать одну единcтвенную логику приложения с применением C# и .NET сразу для всех трех платформ — Android, iOS, UWP.
Преимущества использования Xamarin.Forms:
- В процессе разработки создается единый код для всех платформ
- Xamarin предоставляет прямой доступ к нативным API каждой платформы
- При создании приложений мы можем использовать платформу .NET и язык программирования C# (а также F#), который является достаточно производительным, и в тоже время ясным и простым для освоения и применения
- Xamarin Forms поддерживает несколько платформ. Основные платформы: Android, iOS, UWP, Tizen. Дополнительные платформы, которые развиваются сообществом: MacOS, WPF, GTK#.
5 января 2021 года вышла последняя версия данной платформы — Xamarin Forms 5.0 и собственно она и будет рассматриваться в данном руководстве.
Как работает Xamarin
Работу Xamarin графически можно представить следующим образом:
Xamarin работает поверх фреймворка Mono, который предоставляет opensource-реализацию .NET Framework. Mono может работать поверх разных платформ — Linix, MacOS и т.д.
На уровне каждой отдельной платформы Xamarin полагается на ряд субплатформ. В частности:
- Xamarin.Android — библиотеки для создания приложений на ОС Android
- Xamarin.iOS — библиотеки для создания приложений для iOS
Эти субплатформы играют большую роль — через них приложения могут напрявлять запросы к прикладным интерфейсам на устройствах под управлением ОС Android или iOS. Вкратце это выглядит следующим образом.
С помощью Xamarin.Android код C# с использованием Xamarin компилируется в Intermediate Language (IL), который затем при запуске приложения компилируется в нативную сборку. Xamarin-приложения запускаются в среде выполнения Mono. Напрямую код не может обращаться к API Android. Для этого надо обратиться к функциональность пространств имен Android.* и Java.*, которые прдоставляются виртуальной машиной Android Runtime (ART). Специальная прослойка Managed Callable Wrappers (MCW) позволяет транслировать вызова managed-кода в нативные вызовы и обращаться к функциональности пространств имен Android.* и Java.*
И наоборот, когда Android Runtime (ART) обращается к приложению с кодом Xamarin, то все вызовы проходят через обертку Android Callable Wrappers (ACW) .
Приложения Xamarin.iOS в отличие от Xamarin.Android, который использует JIT-компиляцию, применяют AOT-компиляцию (Ahead-of-Time) кода C# в нативный ARM-код. Xamarin использует промежуточный слой Selectors (селекторы) для трансляции вызовов кода Objective-C в код на C# и слой Registrars (регистраторы) для трансляции кода C# в Objective-C. В итоге слои Selectors и Registrars в целом представляют премежуточный слой, который на иллюстрации выше обозначен как «bindings» и который собственно позволяет взаимодействовать коду Objective-C с кодом C#.
В итоге благодаря этим платформам мы можем создавать отдельно приложения для Android, отдельно для iOS, но наиболее важной особенностью Xamarin является возможность создавать кроссплатформенные приложения — то есть одна логика для всех платформ. Данная возможность представлена технологией Xamarin.Forms и которая работает как бы уровнем выше Xamarin.Android и Xamarin.iOS. То есть с помощью Xamarin.Forms мы один раз можем определить визуальный интерфейс, один раз к нему привязать какую-то логику на C#, и все это будет работать на Android, iOS и Windows. Затем Xamarin.Forms с помощью рендереров (renderer) — специальных объектов для связи контроллов на XAML/C# с нативными контроллами транслируют визуальные компоненты Xamarin.Forms в графический интерфейс, специфичный для каждой платформы.
Установка Xamarin
Для разработки кроссплатформенных приложений на Xamarin нам нужна среда разработки. Для Windows такой средой является Visual Studio. То есть, если нашей ОС является Windows, то нам вначале надо установить Visual Studio 2019. При этом можно использовать в том числе и бесплатный выпуск Visual Studio 2019 Community.
При установке Visual Studio 2019 в программе для установщика обязательно надо выбрать пункт «Разработка мобильных приложений на .NET»:
После инсталляции мы сможем в меню Help -> About Microsoft Visual Studio увидеть отметку о Xamarin:
Если целевой операционной системой является Mac OS X, то в этом случе нам надо установить Visual Studio for Mac.
Кроме того, для разработки на Mac OS X требуется установить XCode, который доступен в AppStore.
Источник: metanit.com