- PVSM.RU - https://www.pvsm.ru -
Разрабатывать мобильное приложение независимо для разных платформ, или изо всех сил налегать на кроссплатформенные средства? Многие скажут, что это заведомо ошибочная постановка вопроса: у обоих вариантов есть свои преимущества и недостатки, так что единственно верного ответа нет. Но это не значит, что разговоры на эту тему могут быть лишь холивором, бессмысленным и беспощадным.
Во-первых, преимущества и недостатки обоих подходов будут совершенно по-разному сказываться в разных ситуациях. Значит, этот вопрос стоит рассматривать не в вакууме, а применительно к конкретным условиям. А во-вторых, нюансы ещё и меняются со временем: например, совсем недавно Microsoft, купив Xamarin, сделали этот продукт бесплатным. Означает ли это, что привычные нам «за и против» пора пересмотреть?
Мы задали несколько вопросов трём специалистам, занимающимся мобильной разработкой на заказ и хорошо знакомым с тем же Xamarin: кому ещё оценить спектр возможных ситуаций, как не им, задействованным в проектах разного масштаба и характера? Нашими собеседниками стали:
Какой подход к кроссплатформенной разработке используют в вашей компании, и из каких соображений сделан выбор?
Денис Кретов
Наша компания занимается мобильной разработкой более 3-х лет и создавалась под отдельное отраслевое решение – мобильные приложения для интернет-магазинов. Так как у каждого интернет-магазина есть общий перечень сущностей, то и на старте решили использовать Xamarin и смогли вынести 70% общей логики в отдельные библиотеки. Это позволило создавать типовые решения для интернет-магазинов в сжатые сроки.
Максим Евтух
Мы долго и упорно шли к той архитектуре и к тем принципам разработки, которые используются сейчас в компании. В итоге каждый проект состоит из:
* API
* CORE
* UI
API – взаимодействие с сервером, CORE – бизнес логика, UI – непосредственно верстка и код, покрывающий сопутствующие UI моменты (анимация, переходы и пр.). Причём API и CORE не зависят от изменений платформы (т.е. используются и в Android'е и в iOS), что дает ощутимый прирост в скорости разработки, а главное, упрощает поддержку проекта в будущем.
Достигнуть подобного мы смогли с помощью Xamarin, а с помощью MvvmCross смогли расширить количество переносимого кода.
Михаил Самарин
Поскольку мы разрабатываем под все существующие мобильные платформы практически с первого дня существования компании Futurice, то есть 16 лет, то пробовали и продолжаем пробовать найти оптимальное решение в каждом случае. В настоящее время мы используем все варианты: нативные решения, Cordova, React Native, Xamarin Native и Xamarin Forms. Какое именно в конкретном случае — зависит от целей конкретного заказчика и особенностей проекта.
Что вы можете посоветовать другим — когда стоит использовать кроссплатформенные инструменты, а когда избегать их?
Максим Евтух
Я считаю, что нет смысла использовать кроссплатформенную разработку в двух случаях:
Исходя из текущей практики, более вероятен первый случай, т.к. большинство приложений специально сейчас задумываются похожими (архитектурно), сохраняя при этом особенности каждой платформы («плоский» дизайн на iOS и material на Android)
Денис Кретов
К словам Максима ещё могу добавить, что каждое задание на мобильную разработку нужно анализировать на возможную повторяемость кода, уникальность дизайна и использование аппаратных функций телефона. Совокупность этих факторов дает общую картинку, когда мы можем использовать кроссплатформенное решение, а когда лучше Native.
Михаил Самарин:
На нашем опыте могу сказать, что определяющими является комбинация трёх факторов: оценка возможности долговременной поддержки, бюджет заказчика и допустимые компромиссы в user experience. Для оценки последнего возможен такой критерий: какова будет частота и продолжительность использования приложения? Если пользователь будет прибегать к нему раз в неделю на пять минут, то можно идти на куда большие компромиссы и больше делать кроссплатформенными средствами, чем в приложении, которое используют каждый день и подолгу, замечая каждый недостаток.
Как вы предполагаете, изменится ли что-то в течение ближайшего года: например, повысится ли сильно популярность Xamarin из-за его перехода в новое качество?
Денис Кретов:
Я смотрю с оптимизмом. С появлением бесплатной версии Xamarin количество использований его в проектах должно резко возрасти.
Максим Евтух:
Большой плюс того, что Microsoft купил Xamarin – он сделал его бесплатным. Но кардинально ничего не изменится, разве что ошибки Xamarin будут исправляться быстрее благодаря open source (по крайней мере, я на это надеюсь). Если же возрастет популярность Xamarin – что ж, это также к лучшему, потому что хороших специалистов, знакомых с этой технологией, сейчас не хватает.
Михаил Самарин:
Да, поднимется за счет indie-разаработчиков. А в корпоративной среде, где цена лицензий никогда не была проблемой — за счёт того, что и Xamarin и Tools теперь open source. Это добавлает ощущения безопасности и степени доверия выбору. Кроме того, мы должны помнить, что C#, Xamarin Studio on Mac, Visual Studio on Windows — это очень, очень хороший набор. Мы наблюдали случаи, когда разработчик, на 100% занимающийся только iOS, после знакомства с Xamarin следующий проект, тоже на 100% для iOS, делал с Xamarin. Только из-за того, насколько комфортен язык C#.
В прошлом году Михаил Самарин на петербургской конференции Mobius говорил об этом вопросе среди многих других, и его прошлогодний доклад выложен на YouTube [3]. А 4 июня на Mobius 2016 [4] Денис Кретов и Максим Евтух в своём совместном докладе [5] покажут на реальных примерах, как именно они в своей компании реализуют выбранный ими подход с использованием Xamarin и MvvmCross — не пропустите!
Автор: JUG.ru Group
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ios/123687
Ссылки в тексте:
[1] Михаил Самарин: https://mvp.microsoft.com/en-us/PublicProfile/5000318?fullName=Michael
[2] Pocheshire: https://habrahabr.ru/users/pocheshire/
[3] выложен на YouTube: https://www.youtube.com/watch?v=nFWdocugb7w
[4] Mobius 2016: http://mobiusconf.ru
[5] совместном докладе: http://mobiusconf.com/talks/kretov/
[6] Источник: https://habrahabr.ru/post/302070/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.