Разработка больших проектов на Xamarin: в чем выгода

Ноябрь 2020
~5 мин
Все публикации
Павел Кузнецов, руководитель мобильной разработки DD Planet
Источник: vc.ru

Вас могут заинтересовать услуги:

Разработка приложений на Xamarin
Подробнее
Разработка приложений под Android
Подробнее
Разработка приложений под iOS
Подробнее
Разработка мобильных приложений для Android
Подробнее
Разработка мобильных приложений
Подробнее

Разработчики используют кроссплатформенный фреймворк Xamarin в основном для создания небольших проектов или прототипов. Мы в DD Planet часто сталкиваемся с мифом, что для крупных бизнес-приложений он не подходит. Наша многолетняя практика показывает обратное — основные преимущества этого фреймворка проявляются именно в разработке масштабных проектов. В этой статье я на реальном примере покажу, как с помощью Xamarin можно экономить код, время и деньги.

Несколько слов о Xamarin

Xamarin — это современный кроссплатформенный фреймворк разработки мобильных приложений на языке C# для устройств на iOS, Android и Windows.

Американская компания Xamarin основана в 2011 году. Ее разработчики адаптировали платформу .NET Framework, изначально рассчитанную на работу с Microsoft Windows, под другие мобильные платформы. В 2016 году компанию купил Microsoft и инструментарий стал бесплатным.

Он ориентирован на разработчиков, которые:

  • хотят переиспользовать код, тесты и бизнес-логики на различных платформах;
  • пишут кроссплатформенные приложения на C#.

Преимущества фреймворка:

  1. Это инструмент .NET, поэтому он подходит тем, кто специализируется именно на .NET разработке. Например, DD Planet: мы работаем на этой платформе уже 17 лет и стали использовать Xamarin одними из первых на российском рынке.
  2. Позволяет использовать большое количество .NET библиотек. У .NET огромный репозиторий библиотек. Разработчику там трудно чего-то не найти.
  3. В разработке используется язык C#, он позволяет строить объектно-ориентированную модель и изолировать уровни. Это значит, что можно выстраивать архитектуру с упором на переиспользование кода.
  4. UI настраивается для каждой платформы по отдельности нативными инструментами.
  5. В целом на базе 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 виден на разработке именно крупных проектов.

Найдем решение вашей задачи

Заполнить бриф
Форматы: jpg, png, xsl, PDF, doc. Размер до 10 МБ
Нажимая кнопку «Отправить», Вы принимаете условия обеспечения конфиденциальности персональных данных.
Отправить