Разница между Xamarin.Forms и кросс-платформой Xamarin

Я два года работал с Xamarin Environment и в основном использовал Xamarin.Forms. Но все же я понятия не имею, что такое Xamarin Cross Platform? Может ли кто-нибудь указать некоторые структурные различия?


person Mr Hery    schedule 26.03.2017    source источник


Ответы (4)


В Xamarin есть два способа создания мобильных приложений: Xamarin.Forms и Xamarin.Native. Оба способа позволяют писать кроссплатформенный код.

Кроссплатформенность — это всего лишь концепция. Это означает, что код, который вы написали один раз, может работать на нескольких платформах. Xamarin является кроссплатформенным (в основном Xamarin.Forms), потому что он позволяет писать код, который работает на нескольких (разных) платформах.

person jzeferino    schedule 26.03.2017
comment
Хорошо, спасибо за ваш ответ. Я спрашиваю, потому что я видел на веб-сайте Xamarin, они различаются руководством по рабочей книге между Xamarin.Forms и Xamarin Cross Platform. Мне немного любопытно. Если вы так говорите, я рад это слышать. ???? - person Mr Hery; 26.03.2017
comment
Это потому, что вы можете использовать Xamarin только для написания приложения для Android, а код не будет кросс-платформенным, если вы этого не сделаете. - person jzeferino; 26.03.2017
comment
Я видел ссылку, на которую вы ссылаетесь, и мой ответ показывает, что вы ищете. - person jzeferino; 26.03.2017

Когда мы говорим о Xamarin, есть два подхода к разработке нативных приложений:

  • Традиционный подход Xamarin
  • Xamarin.Формы

Есть хорошая цитата с веб-сайта Xamarin

Делитесь кодом везде. Используйте один и тот же язык, API и структуры данных, чтобы совместно использовать в среднем 75 % кода приложения на всех платформах мобильной разработки. Создавайте пользовательские интерфейсы с помощью Xamarin.Forms и предоставляйте общий доступ почти на 100 %.

Важно отметить, что эти цифры могут варьироваться от проекта к проекту, поэтому это некоторое предположение для общего использования Xamarin.

И, как вы можете видеть на изображении ниже, о различиях между этими двумя подходами. Традиционный подход Xamarin (Xamarin.iOS и Xamarin.Android), оба они построены на основе Mono, версии .NET Framework с открытым исходным кодом. Для разработки этих приложений вы используете C#, и есть возможность поделиться до 75% кодовой базы, как вы можете видеть на изображении ниже и в цитате из Xamarin.

введите здесь описание изображения

Используя подход Xamarin Traditional, вы можете использовать C# в качестве языка программирования для написания своих моделей, вызова веб-служб и т. д. Таким образом, вы пишете эту логику кода один раз и используете/распространяете ее в Xamarin.Android и Xamarin.iOS, и в этих отдельных проектах вы пишете код, специфичный для этой платформы, и у вас есть доступ к их API.

Также есть цитата из Xamarin о традиционном подходе:

Все, что вы можете сделать на Objective-C, Swift или Java, можно сделать на C# с помощью Xamarin с помощью Visual Studio.

А структура проекта с традиционным Xamarin выглядит так: введите здесь описание изображения

  • Проект с общим кодом: общая кодовая база, которую можно повторно использовать в других ваших проектах.
  • Xamarin.Android: проект для вашего приложения Android, в котором вы пишете код с использованием API-интерфейсов Android, пишете код пользовательского интерфейса и т. д.
  • Xamarin.iOS: проект для вашего приложения iOS, в котором вы пишете код с использованием конкретных API-интерфейсов iOS, пишете свой код пользовательского интерфейса и т. д.

Подробнее о традиционном Xamarin здесь.

Теперь о Xamarin.Forms. Лучшее определение приведено на веб-сайте Xamarin:

Xamarin.Forms — это платформа, позволяющая разработчикам быстро создавать кроссплатформенные пользовательские интерфейсы. Он предоставляет собственную абстракцию для пользовательского интерфейса, который будет отображаться с использованием собственных элементов управления в iOS, Android, Windows или Windows Phone. Это означает, что приложения могут совместно использовать большую часть кода своего пользовательского интерфейса и при этом сохранять собственный внешний вид целевой платформы.

Как вы можете заключить из вышеприведенного текста, Xamarin.Forms — это фреймворк, который позволяет вам писать свой пользовательский интерфейс с помощью C# или с помощью XAML с возможностью использования MVVM... С помощью Xamarin.Forms вы можете написать свою кодовую базу и свой пользовательский интерфейс, который будет быть разделены между платформами.

введите здесь описание изображения

Примечание: это очень простая структура проекта, конечно, вы можете добавить больше проектов для разных слоев

  • Проект с общим кодом: содержит общую базу кода, а также, поскольку вы используете Xamarin.Forms, вы можете писать код для своего пользовательского интерфейса.
  • Xamarin.iOS и Xamarin.Android: код для этой конкретной платформы, а также некоторые дополнительные темы, такие как настраиваемые средства визуализации и службы зависимостей.

Конечно, есть некоторые ограничения, если вы используете Xamarin.Forms, например, из коробки вы можете использовать только элементы управления пользовательского интерфейса, которые являются общими для всех платформ. Вы можете прочитать мою запись в блоге о плюсах и минусах Xamarin.Forms здесь .

Дополнительные сведения о Xamarin.Forms здесь.

Я надеюсь, что этот ответ не сбивает вас с толку, и в качестве заключения в одном или двух предложениях... Используя Xamarin Traditional, вы можете поделиться своей логикой кода между проектами для конкретных платформ. , а с помощью Xamarin.Forms вы можете совместно использовать логику кода, а также код для пользовательского интерфейса в своих проектах.

Примечание. Для стратегии общего проекта и совместного использования кода вы можете использовать общий проект и PCL, это тема для другого вопроса... поэтому в этом ответе я упростил это и использовал термин общий проект для этого типа проекта в Xamarin. приложение.

ОБНОВЛЕНИЕ, лето 2020:

.NET Maui анонсирован в мае 2020 года, вопрос о разнице между MAUI и Xamarin.Forms можно найти в ветке StackOverflow здесь: Что такое MAUI? и в чем разница между MAUI и Xamarin

person Almir Vuk    schedule 07.07.2017
comment
Проголосовал за два параллельных графика, которые говорят сами за себя для людей, которые изо всех сил пытаются найти tldr. - person callisto; 10.01.2018
comment
@Almir Vuk, мне нравятся все ваши блоги, связанные с xamarin. ваш стиль объяснения с примером из реальной жизни и простым примером кода, чтобы лучше понять эту конкретную тему, потрясающий. ) - person Neelam Prajapati; 20.04.2018
comment
Спасибо! @NeelamPrajapati - person Almir Vuk; 23.04.2018
comment
@NeelamPrajapati, вы можете найти мою информацию в моем блоге. - person Almir Vuk; 27.04.2018

Если вы говорите о Xamarin.iOS и Xamarin.Android (Xamarin Native), я бы сказал, что основное различие заключается в том, что в Xamarin Forms, вы разделяете НЕ ТОЛЬКО бизнес-логику, но также и пользовательский интерфейс. В формах Xamarin вы будете использовать базовые компоненты на всех платформах (кнопка, метка и т. д.). Вот почему он называется Xamarin.Forms, потому что он подходит для базовых форм.

Но для Xamarin Native вы создадите пользовательский интерфейс для каждой платформы (один для iOS, один для Android). Вы можете сделать гораздо больше с помощью Xamarin Native, поскольку будете использовать нативные компоненты.

Надеюсь, поможет!

person mindOfAi    schedule 26.03.2017
comment
Я знаю разницу между Native и Forms (общая/портативная библиотека). Но немного любопытно на Xamarin Cross Platform и Xamarin Forms. Я видел, что они отличаются на портале Xamarin. По моему мнению, я действительно не видел этих двух различий. Но до сих пор не знаю точно. - person Mr Hery; 26.03.2017
comment
Ссылочкой не поделитесь, мне тоже интересно. - person mindOfAi; 26.03.2017

Я думаю, что Xamarin Cross Platform относится к технологии, которая компилирует общий код (ваш PCL или общий проект), чтобы его можно было использовать на разных платформах, таких как Xamarin.Android или Xamarin.IOS, прежде чем он будет окончательно скомпилирован на собственные платформы.

Таким образом, я бы сказал, что Xamarin.Forms — это один из инструментов, которые вы используете для создания кода, совместимого с кросс-платформой, который затем можно скомпоновать с помощью кросс-платформенной технологии Xamarin. Имеет ли смысл?

person Ada Orajiaku    schedule 26.03.2017