Ответ 1
Некоторые хорошие моменты от Ли Уитни Блог: Почему я не рекомендую Xamarin для мобильной разработки:
Накладные расходы приложений
Приложения на базе Xamarin имеют встроенные накладные расходы, что делает их более в среднем. Это влияет на время загрузки и хранение, используемые на устройстве. Минимальный дополнительный размер обычно составляет несколько мегабайт и может расти пропорционально, поскольку код использует больше API. Это связано с тем, что путь от сборников .NET статически связан (как собственный код) в приложениях, на которые ссылаются сборки. На Android есть также дополнительная задержка запуска для приложений по конкретным причинам ОС. к Xamarins кредит, что накладные расходы были намного больше, и компания добился больших успехов в его сокращении. Однако влияние на приложение пользователей по-прежнему можно измерить.
Ограниченный доступ к UI-коду через iOS и Android
Разработка пользовательского интерфейса не переносится между iOS и Android.
Это означает, что необходимо использовать API, логику событий, виджеты и дизайнеры и закодированные по-разному для каждой платформы. Есть несколько исключений для это для обычных операций низкого уровня.Xamarin будет утверждать, что попытки абстрагировать API интерфейса API через различные платформы могут создать ненужную сложность или привести к плохой пользовательский интерфейс с дизайном LCD (самый низкий общий знаменатель). У них есть точка здесь. Титан пытается сделать это частично, и результат заставил многих разработчиков недовольны несогласованными или непредсказуемые результаты. Приложения HTML5 более успешны при выводе это абстракция пользовательского интерфейса, не заставляя дизайн ЖК-дисплея, но они не имеют собственные характеристики Xamarin.
Проблемы с пользовательским интерфейсом могут быть одними из наиболее трудоемких разработка мобильных приложений. Несмотря на хорошее обоснование, Важным выводом является то, что для многих мобильных пользовательских интерфейсов Xamarin будет не сохранять время разработчиков или дизайнеров.
Ограниченный доступ к коду за пределами Xamarin
Xamarin не позволяет создавать повторно используемые компоненты или модули вне его собственной среды. Например, код, написанный на Xamarin не может использоваться в приложениях native или HTML5. Это означает, что любой разработанный код команда, использующая Xamarin, не может использоваться совместно или повторно использоваться командами, использующими любой другой инструмент для iOS и Android. Насколько это важно на ситуацию, но проблема с развитием - мы не можем предсказать все наши ситуации. Поэтому его неудобное ограничение прямо из ворот.
Экосистема и сообщество
Это то, что на самом деле не является ошибкой Xamarins. Какая компания имеет мобильную экосистему, которая соответствует Apple, Google или HTML5? Однако, это важно. Когда разработчикам в 10 раз больше шансов найти результаты при поиске в Интернете о проблеме он напрямую влияет на производительность. Экосистема доступной поддержки, услуг и 3-й партийные компоненты и связанные с ними инструменты являются и будут по-прежнему оставаться, значительно меньше, чем для родных или HTML5-приложений.
Третий кривая обучения
Некоторые концепции и методы требуют специальных знаний, специфичных для Среда Xamarin. Это фактически добавляет третью кривую обучения для разработчиков за пределами языка программирования и собственных API. Например, разработчики должны понимать учетную запись iOS, чтобы избежать проблемы с сборкой мусора Xamarins (Это ошибка в MonoTouch GC?). Другим примером являются структуры данных и дженерики, работающие в тонком различные пути (http://docs.xamarin.com/guides/ios/advanced_topics/limitations). Это те типы проблем, которые трудно увидеть, прежде чем вы на самом деле принять новую платформу, поэтому они заслуживают особого внимания.
Больше движущихся частей
Xamarin представляет свой собственный набор ошибок, которые влияют на качество продукции и производительность разработчиков. Проблема не в том, что у Xamarin есть плохой продукт, но при этом добавление какой-либо большой или сложной системы в приложение toolchain имеет проблемы и ошибки, которых нет в Программы.
Историческая запись этих ошибок может быть рассмотрена с использованием Xamarins (https://bugzilla.xamarin.com).
Да, у всего программного обеспечения есть ошибки. Дело в том, что вы измеряете преимущество добавления новых инструментов; недостаток новых проблем должен факторизуем.
Резюме
В конце концов, мы должны попытаться количественно оценить преимущества разработки абстракции, такие как Xamarin над другими абстракциями, или над родными развитие. Является ли С# лучше, чем Objective-C? Да, безусловно, в моей мнение, но это только один фактор. Когда вы добавляете все это подсчитывает весы от Xamarin в пользу других подходов к мобильная разработка. С 2013 года (этот материал может быстро меняться). Я склонен выбрать решение для собственного кода или решение HTML5/Cordova. мне нравится как по разным причинам, так и попытаться объяснить некоторые из факторов принятия решений в другой статье.