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% проектов, логическое ядро продукта можно легко сделать общим на всех платформах.

    Источник: www.altexsoft.com/blog/mobile/the-good-and-the-bad-of-xamarin-mobile-development
    Поделиться публикацией

    Похожие публикации

    Комментарии 38

      –1
      Если рассматривать два подхода (гибридный и Xamarin)

      А почему нет сравнения с основным конкурентом — Rad Studio? И старичком QT? Перечисленные в статье — не конкуренты, а параллельные технологии. А интересно сравнение с конкурентами.
      И кстати как сейчас код C# трансформируется в например apk? Своя виртуальная машина, натив или?
        0
          +1
          RAD Studio с FMX-мутацией в геноме — это местами работает, и даже иногда можно получить что-то более-менее (если это «что-то» не сложнее простого списка, с которым, увы, даже после всех обновлений происходят глюки, что несколько смущает) работающее, а по факту в большинстве случаев самому смотреть на это и стыдно, и страшно. Про то, чтобы кому-то это показывать (и уж тем более давать/продавать) и речи нет, разве что исключительно ради глумления. Если, конечно, у программиста есть совесть, честь и чувства вкуса и собственного достоинства. Мнение вообще не в пику Delphi, просто из личного опыта.

          И при этом всём, заметьте, ни слова про адскую ценовую политику…
            +1
            Ручки бы кому-то поправить. У других всё работает. И работает без проблем. В т.ч. и сервисы.
              0
              Последняя Starter-версия не смогла после установки собрать пустой проект с пустой формой — сборка валилась с какой-то невнятной ошибкой.
              Да и вообще в Сети встречается очень много жалоб на нестабильность и глюки FMX-компонентов, так что, видимо, это не проблем рук комментатора выше.
                –1
                Стартером не пользуюсь. Ничего сказать не могу. Архитекты начиная с XE2 работают нормально. Точнее косячки в IDE есть, но по сравнению с той-же андроид студио считай всё идеально.
                Что же до не стабильности и глюков в FMX — это всё было до примерно XE6. Пользоваться в те времена ими было не просто. XE 8,10.x — вполне себе нормально работают.
                P.S. Напомнить, что 2017 студия от MS вообще не ставится в половине случаев? И ничего, все воспринимают это как должное. А тут что-то криво встало, не разобравшись что начинаете хаить продукт. Как-то не серьёзно.
                  0
                  Напомнить, что 2017 студия от MS вообще не ставится в половине случаев?
                  Мне напомните. В первый раз такое слышу.
                    0
                    Аналогично, не сталкивался с подобными проблемами и ни от кого не слышал (хотя пользователей VS среди знакомых очень немало)
                      0
                      Начнём с того, что без триллиона обновлений её тупо нельзя поставить на 7. И без 2/3 из них на 8.1. ну и конечно х86/64 путаница в самом дистрибе. Даже на хабре писали. Так что в след за радом не плохо было бы её слить не умехам, которые не способны даже ПО поставить с помощью инсталлятора.
                        0
                        1) по вашей ссылке 2015 студия
                        2) неумехам, которые винду не обновляют я бы тоже чего-нить пообломал.
                          0
                          В верхнем сообщении у меня опечатка. 2015 конечно. Хотя 17 не сильно лучше.
                          А винду ни кто не обновляет по своей воле. На безопасности это ни как не сказывается, а проблем из-за обновлений куча. Чего стоит только насильное обновление до 10, от которого не возможно отказаться, с последующей не работой важного оборудования. А так же постоянные BSOD, циклические перезагрузки и прочие ништяки.
                            0
                            винду ни кто не обновляет… На безопасности это ни как не сказывается

                            Ничего личного, но с такими заявлениями я бы вам дал ачивку «шутник года».
                              0
                              Ага. Сегодня новая плюха от последних обновлений iOS, вот если бы я был фанатиком яблок, фанатиком обновлений то как миниум денег на этом потерял. И вот зачем мне это?
                                0
                                12 мая 2017 — эпидемия WannaCry
                                14 марта 2017 — закрыта дырка, через которую оно работает.
                                А вы продолжайте говорить, что отсутствие обновлений не сказывается на безопасности…
                                  0
                                  Всегда будут 0-day уязвимости, которые штатными средствами не закрыть. WannaCry распространялся по сети через дырку, которая должна быть закрыта by default, но даже проникнув на комп зверёк не должен мочь ничего сделать, так как он обязан быть запущен в sand box. Если у кого-то это не так — это проблемы кривизны рук. Не более. Так что тут виноваты не отсутствие обновлений, а админы сетей, где были поражения. Особенно когда идёт целевая атака на конкретную контору — там не будет известных вирусов. Т.е. антивирус в этой ситуации бесполезен. Так же как и обновления в системе. Но так как эту проблему решать не хотят/не могут вот и получаем эти эпидемии.
                                  Но в данном случае хозяину они могут объяснить почему не работает что-то, а вот если разрешить обновления, получив скажем, циклическую перезагрузку или BSOD — вот тут хозяину объяснить вряд-ли что-то удастся. И потери всего бизнеса могут лечь на З/П горе-админов.
                                    +1
                                    Всегда будут 0-day уязвимости
                                    Я не понимаю, почему бы тогда под досом не сидеть, зечем все эти эмбаркадеро и прочее…

                                    а вот если разрешить обновления, получив скажем, циклическую перезагрузку или BSOD — вот тут хозяину объяснить вряд-ли что-то удастся.
                                    Все бы хорошо, если бы не возможность апрувить обновления после проверки их на тестовом стенде.

                                    Но мне нравится, как вы строите из себя Энтерпрайз-гуру, который не верит в существование мира за пределами его предприятия.
                  0
                  А где можно посмотреть на этих «других», у которых «всё работает», если не секрет? А то я кого ни вижу на fire-monkey.ru и stackoverflow.com — все они постоянно на что-то жалуются, и и при этом никто ничем не хвастается. Либо стесняются, либо боятся, видимо. А если что-то и показывают, что сделали сами — так на это даже просто смотреть порой стыдно, не то что этим пользоваться :-/
                    0
                    Как бы примерчик бы не помешал. А то слишком голословно. Интересно посмотреть на реальные проблемы с FMX на версиях старше 8 студии.
                      0
                      Ссылки на места, где публично и вслух обсуждают настоящие проблемы и «примерчики» RAD Studio я дал выше — там материала на месяцы чтения, и без всякого «голословия».

                      А вот от вас, я так понимаю, ссылок на Google Play в подтверждение ваших же слов «У других всё работает. И работает без проблем» можно уже не ждать, да? Хотя, конечно, это был риторический вопрос: те, кто рьяно защищает RAD Studio, при вопросе о живых примерах, как показывает опыт (+ наш текущий диалог), обычно обходятся без ссылок на готовые продукты, и при повторном уточнении/напоминании про магазины мобильных приложений куда-то теряются :(
                        0
                        Иди смотри в гугле, мне лень. Классный ответ! На вышеперечисленных сайтах решаются рабочие моменты. И судя по количеству ответов решаются успешно.
                        Моих разработок в гугл плее нет, и пока не будет. У меня свой сервак обновлений. За остальными проектами я не слежу.
                        Ещё раз повторюсь: аналогов RAD Studio в текущий момент просто нет. Xamarin и Qt — это даже не смешно. У меня в текущем проекте на единой кодовой базе крутится сервер, и куча клиентов под win/android, работающие с периодически отваливающимся интернетом (курьеры например). Ни на чём больше это реализовать не возможно. На этом можно поставить точку.
                        Xamarin сейчас у майкрософта. Судя по тому, что они уничтожают всё, к чему прикасаются (скайп, нокия, манкрафт и т.д.) нужно 10 раз подумать, прежде чем связываться с этим.
                          0


                          — RAD Studio это крутая штука, аналогов ей нет!

                          — Странно, а у меня она не работает как надо, периодически глючит в самый неожиданный момент :-/

                          — Так выпрями свои руки. У других же она работает. И работает без проблем. А то, что форумы завалены жалобами и проблемами: так это и не проблемы вовсе, а просто «рабочие моменты».

                          — А у кого это «у других»? Можно ссылки на эти работающие приложения в мобильных магазинах?

                          — Нет, нельзя, я за остальными проектами я не слежу. И свои проекты я тоже никому не покажу, они у меня на собственном закрытом сервере.


                          Вот и поговорили. Впрочем, всё как всегда :)
                            0
                            Это на религиозный фанатизм похоже, вот да. Причем, как ни странно, на хабре чаще всего этим страдают именно embarcadero-фанбои (наделать много восхваляющих заявлений без каких-либо пруфов и игнорируя контраргументы).
                              0
                              Итак примеров неработоспособности не будет.
                              Вот и поговорили. Впрочем, всё как всегда :)

                              Мне только одно не понятно. Вот эта Ваша религиозная упёртость из-за того, что студия дорогая, или язык сложный?
                                0
                                Подозреваю, что у комментатора выше не религиозная упертость, а здравый смысл и реальный опыт. Вы, кстати, тоже не предоставили ни одного хоть какого-то пруфа что «у всех все без проблем работает».
                                Язык я бы сложным не назвал, но на том же stackoverflow, что интересно, Delphi по результатам опросов стабильно в тройке самых нелюбимых языков программирования у разработчиков.
                                  0
                                  А я и не собираюсь ничего доказывать. Меня эта среда разработки в целом устраивает. Далеко не полностью, но ещё раз повторюсь, что аналогов в моей ситуации нет. А прозвучало заявление, что delphi — гэ. Я попросил обосновать это заявление. Но в результате много пены у рта и ничего адекватного.
                                  то интересно, Delphi по результатам опросов стабильно в тройке самых нелюбимых языков программирования у разработчиков.

                                  Зато там самый любимый это java/c# и прочая хрень, которая у конечных пользователей вызывает только отторжение. Ну не все готовы себе покупать i7 32Гб RAM и ssd на 320Gb. Особенно когда аналогичным приложениям написанным на нормальных языках хватает HDD и 1Gb RAM.
                                  Так что тут палка о двух концах. У моего нынешнего заказчика в требованиях для отображения в его нынешней ERP системе данных из sql базы значится i3, и то это при высокой нагрузке безбожно тормозит. Причём отчасти нехватает сервера, отчасти этого i3(!). Просто для отображается нескольких табличек в хроме не хватает i3 на правильной мамке(!). Зато зуб даю — «программисты» написавшие эту систему были самые что ни на есть тру. Но как можно умудриться за 5 лет не смочь обеспечить во время пиковых нагрузок достаточную латентность обновления 5-6 таблиц и отображения этого на других филиалах — я ума не дам… Возможно всё дело в любимых языках программирования, а не в тех, что дадут нормальное юзабилити это потом. Ну то есть архитектуре…
                                  Ну и в результате надо писать не на том, что проще, а на том, что работает. Не у всех денег ка у фейсбука на кучу распределённых серверов.
                                  Ладно. За сим умолкаю. Я лишь хотел сравнения поделки от мелко-мягких с конкурентами, а не эту белиберду, что в статье. Этого не будет. А пустое в порожнее переливать не люблю.
                                    0
                                    Ещё раз: приложения на FMX — это в большинстве своём либо поделка на коленке, либо откровенный стыд, и любой может убедиться в этом лично. Ну не позволяет FMX прыгать выше головы, и это данность, мириться с которой могут немногие, включая и вас. Смирения в вашей душе нет или от узости мышления и кругозора, или от фанатизма, о котором уже упомянули выше. К слову, вы ниже (а вас там за язык никто не тянул) чудесно сказали следующее:

                                    Когда нужно сделать что-то кросс-платформенное, то сразу вспоминаются 2 варианта обеспечения UI: html или rad studio. Ну если мы говорим про большие, серьёзные проекты.

                                    Слова красивые, вот только примеров «больших и серьёзных проектов» вы, увы, привести не смогли. Почему? Не знаю, наверное, потому что вас в порыве задетых чувств понесло совсем не туда, и вы позволили себе солгать. Ведь вы даже свой проект показать не можете — о чём это говорит? О том, что у вас либо нет этого мифического приложения, либо оно всё-таки есть, но у вас элементарно нет денег на его публикацию в магазине. Выходит, даже заработать с помощью RAD Studio у вас не получается, чтобы хотя бы оплатить годовую Apple/Google подписку. И приложение ваше (если оно реально есть) — очередная поделка на коленке, которой вы пытаетесь гордиться на людях. Но которая, очевидно, не выдержит никакой критики при ближайшем рассмотрении, поэтому её нужно столь тщательно от нас оберегать :)

                                    И не нужно тут про якобы закрытую от посторонних информацию и строгие корпоративные правила песню заводить — это всё работает совсем не так, как вы себе представляете, и уж точно не так, как вы настроили на своём персональном «закрытом» сервере ;)

                                    Ну и, наконец, давайте о том, что вы не верите в существование проблем :) Понимаете ли, вера в наличие/отсутствие чужих багов, равно как и своих богов — это ваше личное и глубоко деликатное дело, я вашу веру нарушать никак не смею (кто я такой?), но я вам советую на досуге почитать официальный форум и блоги непосредственно от автора, там масса интересного (вот как раз недавняя заметка сильно упростит наш диалог). Чтобы, как говорится, вы минимум поверхностно были в теме о продукте, если уж вы вызвались его защищать на людях ;)

                                    p.s.
                                    Кстати, могу показать яркий пример типичного такого, я бы даже сказал среднестатистического FMX-приложения: "Мобильный приемщик Альфа-Авто". В этом примере прекрасно всё — от даты последнего обновления и отзывов до количества загрузок и оценок :D
                  0
                  Rad Studio и Qt тоже параллельные, там свои рендеры UI.

                    0
                    Нет. Тут речь идёт о единой кодовой базе под все платформы которая может собираться в exe/apk/… работая как нативное приложение, но с полным доступом к api каждой платформы. Сейчас тут «царь горы» здесь многими ненавистный Rad Studio. У Qt куча заморочек с интерфейсом, у Xamarin — глюков. Больше аналоги мне не известны. Соответственно и сравнивать надо их между собой, а не с реактом, который банальный яваскрипт и винду не умеет.
                      0
                      Сейчас тут «царь горы» здесь многими ненавистный Rad Studio.
                      Тут это где?

                      реактом, который банальный яваскрипт и винду не умеет.
                      Положим не банальный, а тоже нативный рендер использует. ну и github.com/Microsoft/react-native-windows

                      Вы ещё 1С вспомните, там тоже можно кросс-платформенные мобилки делать. Думаю, среди разработчиков 1С, тоже популярный вариант.
                        0
                        Тут это где?

                        В мире IT? Когда нужно сделать что-то кросс-платформенное, то сразу вспоминаются 2 варианта обеспечения UI: html или rad studio. Ну если мы говорим про большие, серьёзные проекты. Не зря embarcadero такие ценники на свои продукты выставляет. И люди покупают, так как аналогов нет. Вот мне и интересно появляется ли аналог, в лице Xamarin, или MS уничтожило очередной замечательный проект? Потому что по весне этого года что-то рабочее собрать под андроид было… ну скажем так — тяжело.
                        Положим не банальный, а тоже нативный рендер использует.

                        Это такой троллинг, или вы серьёзно это рассматриваете как что-то типа плюса данной технологии?
                        1C ничего не умеет по сути.
                          0
                          В мире IT?
                          т.е. вы за весь мир говорите?

                          Это такой троллинг, или вы серьёзно это рассматриваете как что-то типа плюса данной технологии?
                          Да, когда интерфейс приложения состоит из нативных контролов платформы это безусловный плюс.

                          Вот мне и интересно появляется ли аналог, в лице Xamarin
                          а это троллинг или что?
                            0
                            Не зря embarcadero такие ценники на свои продукты выставляет. И люди покупают, так как аналогов нет.

                            Подозреваю, что основные клиенты — это все-таки компании, имеющие большую легаси-кодовую базу в проектах на Delphi/C++ Builder, и теперь переводящие свои разработки на новые рельсы и другие платформы. Поэтому и покупают, потому что переписывать все с нуля выйдет дороже.
                            Потому что по весне этого года что-то рабочее собрать под андроид было… ну скажем так — тяжело.

                            Невольно хочется процитировать ваш же комментарий выше про прямоту рук. У меня лично после того как RAD Studio Berlin зафейлил все еще на старте (см. выше), на разработку прототипа андроидового приложения с Xamarin с нуля и без начального опыта ушла пара вечеров — к самой технологии нареканий нет никаких, к IDE были нарекания, но проблемы решались простым гуглежом на Stackoverflow.
                            +1

                            Слушайте а может быть Вам и освятить RAD Studio и опыт разработки под мобилку и ваши проекты ???
                            Было бы Интересно, и никаких опять глупых холиваров !

                              0
                              Мне? ОсвЯтить?
                                +1
                                Кстати да. Было бы чудесно увидеть статью про какой-нибудь реальный проект на этой технологии, с разбором юзкейсов, достоинств и недостатков.
                        0
                        Тем не менее существует мобильный инструмент разработки на базе JavaScript, который превосходит гибридные решения, по крайней мере, с точки зрения UI. Речь идет о NativeScript.

                        То есть React Native с нативным рендерером по-вашему гибридные решения не превосходит? :)
                        Или вы по какой-то причине относите React Native к гибридным решениям? Если так, то это не правда, ибо RN компилируется в нативные приложения.
                          0
                          Все проблемы React Native можно видеть в новом Skype на iOS (на Android наверное тоже). Страдает RN такой же болезнью, что и Appcelerator Titanium когда-то. Весь JS работает в отдельном от UI потоке, что иногда хорошо, а иногда не очень.

                          RN считает, что DOM (иерархию view) никто кроме него не изменяет, потому что diff иначе сгенерировать невозможно. Но большая часть контролов об этом не знает и сами генерируют свои внутренности по своим алгоритмам. Например, UITableView вставляет/удаляет в иерархию view ячейки по мере скролинга, обрабатывает всякие свайпы изменяя ячейки и т.п. Решить эти проблемы можно только делая нативные контролы, которые заточены под React. По сути рождается слой костылей для адаптации нативных контролов под ожидания React.

                          Возможно RN когда-нибудь допилят, но пока я за Xamarin, так как он ближе к платформе.
                            0
                            Спасибо за развернутый ответ.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое