Xamarin: сравнение с собственными SDK и основами JS

Таким образом, одной из основных особенностей кодирования с использованием встроенного SDK, предоставляемого Android и iOS является то, что вы получаете не только лучшую производительность, но и внешний вид каждой платформы: например, на iOS , навигация по вкладкам Бар будет расположен в нижней части экрана, в то время как в Android он находится наверху (да, я знаю, он также может быть сверху и снизу, но вы понимаете мою точку зрения), а также док-станция Navigation Drawer – это стиль навигации Android В то время как (насколько я знаю) в iOS родном sdk нет ничего подобного. Судя по всему , вы можете почувствовать разницу платформ в соответствии с их руководящими принципами проектирования, что хорошо, поскольку это делает ваше приложение профессиональным.

Поэтому, принимая во внимание, с точки зрения производительности и поддержания ощущения вашего приложения, использование основанных на JS фреймворков, таких как Titanium или PhoneGap , не сделает правильный выбор.

Затем приходит Xamarin . Как я читал здесь: Xamarin, как он получает «Родной взгляд» и «Чувство»? Похоже, это оболочка C# для собственного SDK, которая, насколько я понимаю, не должна влиять на производительность. Но где это выглядит. Поскольку XML-макеты не совсем то, что дает Android или iOS , а также навигацию (которая поступает от классов контроллера), как Xamarin справляется с ними? На их веб-сайте сказано, что вы можете использовать код между платформой, но это также означает, что мне нужно использовать навигационную систему и тому подобное?

Наконец, ради того, чтобы «не писать код для каждой платформы» , не стоит ли использовать собственный SDK и идти с Xamarin (у меня нет проблем с написанием кода для iOS и Android), или это эта целевая платформа Для разработчиков C# поэтому им не нужно будет изучать Objective-C или Android.

Любое дополнительное объяснение было бы потрясающим, и спасибо заранее.

Solutions Collecting From Web of "Xamarin: сравнение с собственными SDK и основами JS"

Я создал большое приложение за последний год (2013) с различными компонентами: в основном API (ASP.NET Web API => C #), веб-сайт (ASP.NET MVC => C # + AngularJS) и оба приложения для Android (Xamarin.Android => C #) и iOS (Xamarin.iOS => C #). Решение использовать Xamarin имело свои преимущества и недостатки, но в целом я более чем доволен этим.

Как вы можете видеть в моем списке выше, почти все было сделано с C # (хорошо, сайт в основном написан на JavaScript ;-)). Это замечательный зрелый язык с действительно приятными функциями (как LINQ). В моем сценарии становится ясным: мне не нужно было изучать и совершенствовать четыре языка (Swift / Objective-C, Java, C #, JavaScript), но только два: C # и JavaScript.

Это особенно важно в отношении аспекта совместного использования кода: наши клиентские приложения не очень тонкие клиенты из-за какой-то автономной функции, которая требует много логики синхронизации, поэтому часть интерфейса из этих двух приложений является только одной стороной медали. Как оказалось, я действительно мог использовать 90% этого неинтерфейсного кода как для iOS, так и для Android. Это невероятно большое преимущество, поскольку речь идет не только о некоторых языковых версиях Swift / Objective-C или Java, но также о различных фреймворках, которые вы используете на iOS и Android. Использование .NET Framework / Mono в качестве основы каждого приложения Xamarin позволяет абстрагировать такие вещи, как доступ к данным или сетевое общение, от подстилающей ОС.

С точки зрения скорости и пользовательского интерфейса у вас нет недостатков, потому что вы используете собственные API 1: 1. Все, что доступно на iOS или Android, также доступно через Xamarin. И когда Apple, например, отправляет новую версию iOS, Xamarin отправит обновление для этого в течение нескольких дней, поэтому вам не придется ждать, чтобы использовать новые функции Apple.

Xamarin использует технику под названием Ahead of Time Compiling на iOS, поэтому все, что вы пишете на C #, скомпилировано в родной материал iOS, прежде чем будет развернуто на вашем устройстве. Это означает, что нет никакой разницы в том, что выполняется между «родным» приложением Objectice-C и приложением Xamarin (за исключением некоторых небольших накладных расходов, которые не примечательны из моего опыта).

На Android Just in Time компиляция используется как с любым другим «родным» Android-приложением.

Все это означает, что у вас есть все те же API и возможности, которые у вас были бы в противном случае, если бы вы использовали Objective-C или Java. Вы даже используете одни и те же объекты для создания своего пользовательского интерфейса с теми же типами и именами (иногда слегка оптимизированными;)). Поэтому, если вы хотите использовать панель вкладок для своего приложения, для этого вы используете UITabBarController. См. IOS против Xamarin .

После нескольких лет моего пути с Xamarin у меня только один недостаток:

Возможные утечки памяти. Их целые образцы там куча дерьма в отношении основных основ предотвращения утечек памяти. Если вы работаете с «дорогостоящими ресурсами», такими как медиафайлы в своем приложении, вы должны позаботиться с первого дня. Я должен был избавиться от всех этих проблем, когда мое приложение уже увеличилось до 35 различных (сложных) диалогов. Это заняло у меня почти два месяца или, другими словами, тысячи долларов. Они предоставляют некоторую документацию об этом, но с этой целью оборудование малоэффективно. И ошибки, вероятно, появятся и очень трудно найти ( пример ).

Но в целом это было одно из моих лучших решений пойти с Xamarin.

Я уже некоторое время программировал с Xamarin. До сих пор это было здорово. Любые проблемы, которые у меня были, я понял, потому что c # – мой родной язык. На сайте Xamarin есть много примеров и ссылок API для многих функций на всех платформах.

  1. Производительность. Вы получаете собственную производительность от использования Xamarin. Никаких вопросов не было задано. Я использую его для создания аудио, видео и функций записи фотографий для нового приложения, над которым я работаю. Xamarin обрабатывает код c # в собственный байт-код для всех платформ. Вот как это достигается.

  2. Посмотрите – внешний вид вашего приложения будет родным. Вы буквально должны использовать формат XML xml, чтобы сделать свой пользовательский интерфейс и те же Goes для IOS. Вы по-прежнему будете стилизовать свои элементы так же, как и на каждой платформе. Все Xamarin делает ссылку на событие для вас.

  3. Api – Красота Xamarin в API. Они перенесли все пространство имен Android и IOS на c #. Взгляните на их Документацию .

  4. Дорогой – Моя единственная проблема с Xamarin в том, что это дорого. Если вы проверите их цены, это возмутительно. Но ты получаешь то, за что заплатил. Премиум-продукт, который поддерживается поддержкой.

  5. C # – Sharp – отличный язык, который имеет большую поддержку. Новый асинхронный / ожидающий получает поддержку всей проблемы управления потоками. Обработка Json на платформе очень проста. Я загрузил несколько классов в Github, которые можно использовать для многих приложений.

Если вы находитесь на фоне java, очистка от ваших навыков c # будет ветерок.

Приложение rdio было создано с помощью Xamarin. Загрузите его на Android и IOS и проверьте его производительность и наслаждайтесь своим внешним видом.

Удачи

Существует гораздо больше интернет-контента, помощи и поддержки для родных. Это само по себе помогает мне сделать мой выбор. Если вы действительно хорошо разбираетесь в Xamerin, возможно, 70% кода, который вы пишете, будут использоваться обоими приложениями, вам все равно придется настраивать индивидуальные приложения для каждого приложения.

Но опять же, поддержка родного настолько обширна, что, если вы столкнулись с проблемой, то есть и кто-то другой.

С xamerin, ну, удачи.

Когда я говорю приложение, я имею в виду iOS / Android