Что такое Xamarin?

Screenshots of example Xamarin application in iOS and Android

Xamarin — это платформа с открытым исходным кодом, предназначенная для построения современных производительных приложений для iOS, Android и Windows с .NET. Платформа Xamarin представляет собой уровень абстракции, который обеспечивает управление взаимодействием между общим кодом и кодом базовой платформы. Xamarin выполняется в управляемой среде, которая реализует такие возможности, как выделение памяти и сборка мусора.

Благодаря Xamarin в среднем 90 % кода приложения может использоваться без изменений на разных платформах. С помощью этого шаблона разработчик может написать всю бизнес-логику на одном языке (или использовать существующий код приложения), но при этом получить характеристики производительности, оформление и поведение, характерные для каждой соответствующей платформы.

Приложения Xamarin можно писать на ПК или Mac и компилировать в собственные пакеты приложений, например в файлы с расширением .apk для Android или .ipa для iOS.

Примечание.

Для компиляции и развертывания приложений для iOS на данный момент требуется компьютер с MacOS. Сведения о требованиях к разработке см. в разделе Требования к системе.

На кого ориентирована платформа Xamarin

Платформа Xamarin ориентирована на разработчиков, перед которыми стоят следующие задачи:

  • Совместное использование кода, тестов и бизнес-логики на различных платформах.
  • Написание кроссплатформенных приложений на языке C# в Visual Studio.

Как работает платформа Xamarin

Diagram of Xamarin architecture

На этой схеме показана общая архитектура кроссплатформенного приложения Xamarin. С помощью Xamarin вы можете создавать собственный пользовательский интерфейс для каждой платформы и писать на языке C# общую бизнес-логику, которая будет использоваться на различных платформах. В большинстве случаев Xamarin позволяет использовать на разных платформах 80 % кода приложения.

В основе Xamarin лежит среда .NET, которая автоматически обрабатывает такие задачи, как выделение памяти, сборка мусора и обеспечение взаимодействия с базовыми платформами.

Дополнительные сведения об архитектуре для конкретных платформ см. в разделах Xamarin.Android и Xamarin.iOS.

Добавленные компоненты

Xamarin сочетает в себе возможности собственных платформ с добавлением возможностей, к которым относятся:

  1. Полная привязка для базовых пакетов SDK. Xamarin содержит привязки практически для всех базовых пакетов SDK в iOS и Android. Кроме того, эти привязки являются строго типизированными, что означает, что они удобны в навигации и использовании, а также позволяют осуществлять качественную проверку типов во время компиляции и разработки. Строго типизированные привязки, позволяющие сократить количество ошибок времени выполнения и повысить качество приложений.
  2. Взаимодействие Objective-C, Java, C и C++. Xamarin позволяет напрямую вызывать библиотеки Objective-C, Java, C и C++ для более эффективного использования разнообразного стороннего кода. Эта возможность позволяет использовать существующие библиотеки iOS и Android, написанные на Objective-C, Java или C/C++. Кроме того, Xamarin предлагает проекты привязки для привязки собственных библиотек Objective-C и Java с помощью декларативного синтаксиса.
  3. Современные конструкции языка. Приложения Xamarin написаны на современном языке C#, который характеризуется значительными улучшениями по сравнению с Objective-C и Java. Сюда входят динамические функции языка, функциональные конструкции, например лямбда-выражения, LINQ, функции параллельного программирования, универсальные шаблоны и т. д.
  4. Надежная библиотека базовых классов (BCL). Приложения Xamarin используют библиотеку BCL .NET, большую коллекцию классов со всеобъемлющими и упрощенными возможностями, включая поддержку XML, баз данных, сериализации, операций ввода-вывода, строк, сетевых функций и т. д. Существующий код C# можно скомпилировать для использования в приложениях, обеспечивая доступ к тысячам библиотек, которые содержат дополнительные функции, выходящие за рамки BCL.
  5. Современная интегрированная среда разработки (IDE). Xamarin использует современную среду Visual Studio, в которой реализованы такие возможности, как автозавершение кода, более совершенная система управления проектами и решениями, исчерпывающая библиотека шаблонов проектов, интегрированная система управления версиями и многое другое.
  6. Поддержка кроссплатформенных мобильных приложений. Xamarin предлагает усовершенствованную кроссплатформенную поддержку для трех основных платформ — iOS, Android и Windows. Объем общего кода в созданных приложениях может достигать 90 %, а библиотека Xamarin.Essentials предлагает универсальный API-интерфейс для доступа к общим ресурсам на всех трех платформах. Это позволяет значительно сократить затраты на разработку и время выпуска продуктов на рынок для разработчиков, создающих мобильные приложения.

Xamarin.Android

Xamarin.Android architecture diagram

Приложения Xamarin.Android компилируются из языка C# в промежуточный язык (IL), который при запуске приложения претерпевает Just-in-Time-компиляцию (JIT) в машинную сборку. Приложения Xamarin.Android работают в среде выполнения Mono параллельно с виртуальной машиной среды выполнения Android (ART). Xamarin предоставляет привязки .NET к пространствам имен Android.* и Java.*. Среда выполнения Mono обращается к этим пространствам имен с использованием управляемых вызываемых оболочек (MCW) и предоставляет среде выполнения ART вызываемые программы-оболочки Android (ACW), благодаря чему обе среды могут вызывать код друг друга.

Дополнительные сведения см. в разделе Архитектура Xamarin.Android.

Xamarin.iOS

Xamarin.iOS architecture diagram

Приложения Xamarin.iOS проходят полную Ahead-of-Time-компиляцию (AOT) из языка C# в собственный код сборки ARM. Xamarin использует селекторы для предоставления кода Objective-C управляемому коду C# и Registrars для предоставления управляемого кода C# коду Objective-C. Селекторы и Registrars в совокупности называются "привязками" и обеспечивают взаимодействие между Objective-C и C#.

Дополнительные сведения см. в разделе Архитектура Xamarin.iOS.

Xamarin.Essentials

Xamarin.Essentials — это библиотека, которая предоставляет кроссплатформенные API для собственных функций устройства. Как и сама платформа Xamarin, библиотека Xamarin.Essentials представляет собой абстракцию, которая упрощает процесс доступа к собственным функциям. Ниже приведены некоторые примеры функциональных возможностей, предоставляемых Xamarin.Essentials:

  • Сведения об устройстве
  • Файловая система
  • Accelerometer
  • Телефон
  • Преобразование текста в речь
  • Блокировка экрана

Дополнительные сведения см. в разделе Xamarin.Essentials.

Xamarin.Forms

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

  • Язык пользовательского интерфейса XAML
  • Привязка данных
  • Жесты
  • Произведенный эффект
  • Стили

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

Начать

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

Другие видео о Xamarin см. на Channel 9 и YouTube.