Разработка мобильных приложений на Xamarin: за и против
За последние 2 года (с февраля 2013 года) технология разработки кросс-платформенных мобильных приложений Xamarin достигла уровня, когда на ней стало возможно разрабатывать мощные мобильные приложения.
Мы за это время реализовали на ней около 10 проектов и можем экспертно судить о ее достоинствах и недостатках.
Достоинства:
- Сокращение затрат времени за счет выделения общей для всех платформ (Android, iOS, Windows Phone) части мобильного приложения. К такому коду можно отнести бизнес-логику, работу с локальной базой данных и с сетью. Практически это около 25-35% от кода проекта, и это код нужно будет писать и отлаживать однократно, и он будет вести себя одинаково на всех платформах.
- Разработка мобильных приложений на одном языке C#, не зная (до поры) тонкостей Java и Objective-C. Можно сэкономить время, нужное для изучения конкретного языка и борьбу с его проблемами.
- Весь проект на одном языке программирования. В случае крупного проекта, если его бэкенд и смежные системы создаются на .NET и C#, то очень разумно весь проект создавать на одном языке программирования. Это упрощает его поддержку и развитие в будущем, сокращает зависимость от разнородных специалистов.
- Единообразие поведения. При правильной организации работы можно добиться того, чтобы на разных платформах поведение приложения было максимально единообразным, чтобы не было своих специфических дефектов на разных платформах.
- Проще организация поддержки. Это достоинство является логическим следствием трёх предыдущих.
Недостатки:
- Биндинг готовых библиотек. К сожалению, пока еще очень сложно использовать готовые нативные решения тех или иных задач, оформленные в виде нативных библиотек. Их биндинг занимает много времени и не всегда бывает удачным. Это ограничивает нас в выборе решений, лишает гибкости.
- Проблемы со сборкой мусора. Из-за особенностей архитектуры и реализации платформы программистам, разрабатывающим на Xamarin, приходится больше заботиться о сборке мусора, чем нативным разработчикам. Но в этом есть и небольшой плюс – приходится лучше понимать жизненный цикл твоего приложения, его архитектуру и навигацию, чтобы правильно организовать работу с неиспользуемыми ресурсами.
- Кросс-платформенная часть не такая большая, как хотелось бы. Все-таки хотелось бы еще сократить платформенно-зависимую часть. 25-35% - это мало, на наш взгляд. В идеале вообще от нее избавиться. Возможно, в этом уже скоро поможет Xamarin.Forms, но пока мы не готовы рекомендовать его для сложных проектов.
- Необходимо знать API, жизненный цикл мобильных приложений, прочие особенности каждой платформы, под которую приходится писать, понимать код на языках для нативной разработки, и как он работает. Поэтому создать стоящее приложение, не зная ничего кроме C#, не выйдет. Но разве плохо, когда разбираешься в платформе, для которой создаешь приложение? Так что этот минус тоже имеет в себе большой плюс.
- Стоимость. Честно говоря, стоимость лицензий нам кажется завышенной. Но мы надеемся, что со временем ценовая политика станет более демократичной, и приверженцам этой технологии она будет обходиться дешевле.
- Форум и сообщество. Количество разработчиков нативных приложений всегда будет больше, чем пользующихся кроссплатформенными средствами. Соответственно, выше вероятность найти ответ для обычных языков и технологий. А если проблема специфична именно для Xamarin, то ситуация существенно осложняется. Но это ли не повод быть активнее на форуме Xamarin и, найдя хорошее решение, публиковать его и помогать другим разработчикам, а также авторам платформы делать ее лучше?
Резюмируя все вышеизложенное, можно сделать такие выводы:
- Xamarin хорошо помогает в больших проектах, созданных на C#, которые ищут выход в мобильную среду. В этом случае Xamarin - практически идеально решение.
- У Xamarin пока еще хватает проблем и болезней роста, с которыми приходится мириться и которые приходится решать нам, его пользователям.
- При принятии решения «использовать Xamarin или нет» нужно хорошо подумать. Прежде всего вот о чем: сколько мобильных платформ Вам нужно поддерживать, на какой платформе реализована серверная часть, будут ли активно использоваться сторонние библиотеки (сколько и какие), есть ли у Вас разработчики, хорошо владеющие Objective-C и Java в команде?
Мы надеемся, что со временем технология Xamarin будет становиться только лучше, а мы будем помогать ей в этом и продолжать использовать её в своих проектах.
"ИТ-Грандс" - разработка мобильных приложений
Отличная рекомендация. Казалось бы, очевидное решение, но никогда и не... читать >>