Я два года работал с Xamarin Environment и в основном использовал Xamarin.Forms. Но все же я понятия не имею, что такое Xamarin Cross Platform? Может ли кто-нибудь указать некоторые структурные различия?
Разница между Xamarin.Forms и кросс-платформой Xamarin
Ответы (4)
В Xamarin есть два способа создания мобильных приложений: Xamarin.Forms и Xamarin.Native. Оба способа позволяют писать кроссплатформенный код.
Кроссплатформенность — это всего лишь концепция. Это означает, что код, который вы написали один раз, может работать на нескольких платформах. Xamarin является кроссплатформенным (в основном Xamarin.Forms), потому что он позволяет писать код, который работает на нескольких (разных) платформах.
Когда мы говорим о 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
Если вы говорите о Xamarin.iOS и Xamarin.Android (Xamarin Native), я бы сказал, что основное различие заключается в том, что в Xamarin Forms, вы разделяете НЕ ТОЛЬКО бизнес-логику, но также и пользовательский интерфейс. В формах Xamarin вы будете использовать базовые компоненты на всех платформах (кнопка, метка и т. д.). Вот почему он называется Xamarin.Forms, потому что он подходит для базовых форм.
Но для Xamarin Native вы создадите пользовательский интерфейс для каждой платформы (один для iOS, один для Android). Вы можете сделать гораздо больше с помощью Xamarin Native, поскольку будете использовать нативные компоненты.
Надеюсь, поможет!
Я думаю, что Xamarin Cross Platform относится к технологии, которая компилирует общий код (ваш PCL или общий проект), чтобы его можно было использовать на разных платформах, таких как Xamarin.Android или Xamarin.IOS, прежде чем он будет окончательно скомпилирован на собственные платформы.
Таким образом, я бы сказал, что Xamarin.Forms — это один из инструментов, которые вы используете для создания кода, совместимого с кросс-платформой, который затем можно скомпоновать с помощью кросс-платформенной технологии Xamarin. Имеет ли смысл?