Что такое Xamarin?What is Xamarin?

Снимки экрана: примеры приложений Xamarin в iOS и AndroidScreenshots of example Xamarin application in iOS and Android

Xamarin — это платформа с открытым исходным кодом, предназначенная для построения современных производительных приложений для iOS, Android и Windows с .NET.Xamarin is an open-source platform for building modern and performant applications for iOS, Android, and Windows with .NET. Платформа Xamarin представляет собой уровень абстракции, который обеспечивает управление взаимодействием между общим кодом и кодом базовой платформы.Xamarin is an abstraction layer that manages communication of shared code with underlying platform code. Xamarin выполняется в управляемой среде, которая реализует такие возможности, как выделение памяти и сборка мусора.Xamarin runs in a managed environment that provides conveniences such as memory allocation and garbage collection.

Благодаря Xamarin в среднем 90 % кода приложения может использоваться без изменений на разных платформах.Xamarin enables developers to share an average of 90% of their application across platforms. С помощью этого шаблона разработчик может написать всю бизнес-логику на одном языке (или использовать существующий код приложения), но при этом получить характеристики производительности, оформление и поведение, характерные для каждой соответствующей платформы.This pattern allows developers to write all of their business logic in a single language (or reuse existing application code) but achieve native performance, look, and feel on each platform.

Приложения Xamarin можно писать на ПК или Mac и компилировать в собственные пакеты приложений, например в файлы с расширением .apk для Android или .ipa для iOS.Xamarin applications can be written on PC or Mac and compile into native application packages, such as an .apk file on Android, or an .ipa file on iOS.

Примечание

Для компиляции и развертывания приложений для iOS на данный момент требуется компьютер с MacOS.Compiling and deploying applications for iOS currently requires a MacOS machine. Сведения о требованиях к разработке см. в разделе Требования к системе.For more information about development requirements, see system requirements.

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

Платформа Xamarin ориентирована на разработчиков, перед которыми стоят следующие задачи:Xamarin is for developers with the following goals:

  • Совместное использование кода, тестов и бизнес-логики на различных платформах.Share code, test and business logic across platforms.
  • Написание кроссплатформенных приложений на языке C# в Visual Studio.Write cross-platform applications in C# with Visual Studio.

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

Схема архитектуры платформы Xamarin

На этой схеме показана общая архитектура кроссплатформенного приложения Xamarin.The diagram shows the overall architecture of a cross-platform Xamarin application. С помощью Xamarin вы можете создавать собственный пользовательский интерфейс для каждой платформы и писать на языке C# общую бизнес-логику, которая будет использоваться на различных платформах.Xamarin allows you to create native UI on each platform and write business logic in C# that is shared across platforms. В большинстве случаев Xamarin позволяет использовать на разных платформах 80 % кода приложения.In most cases, 80% of application code is sharable using Xamarin.

В основе Xamarin лежит среда .NET, которая автоматически обрабатывает такие задачи, как выделение памяти, сборка мусора и обеспечение взаимодействия с базовыми платформами.Xamarin is built on top of .NET, which automatically handles tasks such as memory allocation, garbage collection and interoperability with underlying platforms.

Дополнительные сведения об архитектуре для конкретных платформ см. в разделах Xamarin.Android и Xamarin.iOS.For more information about platform-specific architecture, see Xamarin.Android and Xamarin.iOS.

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

Xamarin сочетает в себе все возможности существующих платформ и ряд собственных, включая следующие:Xamarin combines the abilities of native platforms and adds a number of features, including:

  1. Полная привязка для базовых пакетов SDK. Xamarin содержит привязки практически для всех базовых пакетов SDK в iOS и Android.Complete binding for the underlying SDKs – Xamarin contains bindings for nearly the entire underlying platform SDKs in both iOS and Android. Кроме того, эти привязки являются строго типизированными, что означает, что они удобны в навигации и использовании, а также позволяют осуществлять качественную проверку типов во время компиляции и разработки.Additionally, these bindings are strongly-typed, which means that they’re easy to navigate and use, and provide robust compile-time type checking and during development. Строго типизированные привязки, позволяющие сократить количество ошибок времени выполнения и повысить качество приложений.Strongly-typed bindings lead to fewer runtime errors and higher-quality applications.
  2. Взаимодействие Objective-C, Java, C и C++ . Xamarin позволяет напрямую вызывать библиотеки Objective-C, Java, C и C++ для более эффективного использования разнообразного стороннего кода.Objective-C, Java, C, and C++ Interop – Xamarin provides facilities for directly invoking Objective-C, Java, C, and C++ libraries, giving you the power to use a wide array of third party code. Эта возможность позволяет использовать существующие библиотеки iOS и Android, написанные на Objective-C, Java или C/C++.This functionality lets you use existing iOS and Android libraries written in Objective-C, Java, or C/C++. Кроме того, Xamarin предлагает проекты привязки для привязки собственных библиотек Objective-C и Java с помощью декларативного синтаксиса.Additionally, Xamarin offers binding projects that allow you to bind native Objective-C and Java libraries using a declarative syntax.
  3. Современные конструкции языка. Приложения Xamarin написаны на современном языке C#, который характеризуется значительными улучшениями по сравнению с Objective-C и Java. Сюда входят динамические функции языка, функциональные конструкции, например лямбда-выражения, LINQ, функции параллельного программирования, универсальные шаблоны и т. д.Modern language constructs – Xamarin applications are written in C#, a modern language that includes significant improvements over Objective-C and Java such as dynamic language features, functional constructs such as lambdas, LINQ, parallel programming, generics, and more.
  4. Надежная библиотека базовых классов (BCL) . Приложения Xamarin используют библиотеку BCL .NET, большую коллекцию классов со всеобъемлющими и упрощенными возможностями, включая поддержку XML, баз данных, сериализации, операций ввода-вывода, строк, сетевых функций и т. д.Robust Base Class Library (BCL) – Xamarin applications use the .NET BCL, a large collection of classes that have comprehensive and streamlined features such as powerful XML, Database, Serialization, IO, String, and Networking support, and more. Существующий код C# можно скомпилировать для использования в приложениях, обеспечивая доступ к тысячам библиотек, которые содержат дополнительные функции, выходящие за рамки BCL.Existing C# code can be compiled for use in an app, which provides access to thousands of libraries that add functionality beyond the BCL.
  5. Современная интегрированная среда разработки (IDE) . Xamarin использует современную среду Visual Studio, в которой реализованы такие возможности, как автозавершение кода, более совершенная система управления проектами и решениями, исчерпывающая библиотека шаблонов проектов, интегрированная система управления версиями и многое другое.Modern Integrated Development Environment (IDE) – Xamarin uses Visual Studio, a modern IDE that includes features such as code auto completion, a sophisticated project and solution management system, a comprehensive project template library, integrated source control, and more.
  6. Поддержка кроссплатформенных мобильных приложений. Xamarin предлагает усовершенствованную кроссплатформенную поддержку для трех основных платформ — iOS, Android и Windows.Mobile cross-platform support – Xamarin offers sophisticated cross-platform support for the three major platforms of iOS, Android, and Windows. Объем общего кода в созданных приложениях может достигать 90 %, а библиотека Xamarin.Essentials предлагает универсальный API-интерфейс для доступа к общим ресурсам на всех трех платформах.Applications can be written to share up to 90% of their code, and Xamarin.Essentials offers a unified API to access common resources across all three platforms. Это позволяет значительно сократить затраты на разработку и время выпуска продуктов на рынок для разработчиков, создающих мобильные приложения.Shared code can significantly reduce both development costs and time to market for mobile developers.

Xamarin.AndroidXamarin.Android

Схема архитектуры Xamarin.AndroidXamarin.Android architecture diagram

Приложения Xamarin.Android компилируются из языка C# в промежуточный язык (IL) , который при запуске приложения претерпевает Just-in-Time-компиляцию (JIT) в машинную сборку.Xamarin.Android applications compile from C# into Intermediate Language (IL) which is then Just-in-Time (JIT) compiled to a native assembly when the application launches. Приложения Xamarin.Android работают в среде выполнения Mono параллельно с виртуальной машиной среды выполнения Android (ART).Xamarin.Android applications run within the Mono execution environment, side by side with the Android Runtime (ART) virtual machine. Xamarin предоставляет привязки .NET к пространствам имен Android.* и Java.*.Xamarin provides .NET bindings to the Android.* and Java.* namespaces. Среда выполнения Mono обращается к этим пространствам имен с использованием управляемых вызываемых оболочек (MCW) и предоставляет среде выполнения ART вызываемые программы-оболочки Android (ACW) , благодаря чему обе среды могут вызывать код друг друга.The Mono execution environment calls into these namespaces via Managed Callable Wrappers (MCW) and provides Android Callable Wrappers (ACW) to the ART, allowing both environments to invoke code in each other.

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

Xamarin.iOSXamarin.iOS

Схема архитектуры Xamarin.iOSXamarin.iOS architecture diagram

Приложения Xamarin.iOS проходят полную Ahead-of-Time-компиляцию (AOT) из языка C# в собственный код сборки ARM.Xamarin.iOS applications are fully Ahead-of-Time (AOT) compiled from C# into native ARM assembly code. Xamarin использует селекторы для предоставления кода Objective-C управляемому коду C# и регистраторы для предоставления управляемого кода C# коду Objective-C.Xamarin uses Selectors to expose Objective-C to managed C# and Registrars to expose managed C# code to Objective-C. Селекторы и регистраторы в совокупности называются "привязками" и обеспечивают взаимодействие между Objective-C и C#.Selectors and Registrars collectively are called "bindings" and allow Objective-C and C# to communicate.

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

Xamarin.Essentials

Xamarin.Essentials — это библиотека, которая предоставляет кроссплатформенные API для собственных функций устройства. is a library that provides cross-platform APIs for native device features. Как и сама платформа Xamarin, библиотека Xamarin.Essentials представляет собой абстракцию, которая упрощает процесс доступа к собственным функциям.Like Xamarin itself, Xamarin.Essentials is an abstraction that simplifies the process of accessing native functionality. Ниже приведены некоторые примеры функциональных возможностей, предоставляемых Xamarin.Essentials:Some examples of functionality provided by Xamarin.Essentials include:

  • Сведения об устройствеDevice info
  • Файловая системаFile system
  • АкселерометрAccelerometer
  • ТелефонPhone dialer
  • Преобразование текста в речьText-to-speech
  • Блокировка экранаScreen lock

Дополнительные сведения см. на веб-сайте Xamarin.Essentials.For more information, see Xamarin.Essentials.

Xamarin.Forms

Xamarin.Forms — это платформа пользовательского интерфейса с открытым кодом. is an open-source UI framework. С помощью Xamarin.Forms разработчики могут создавать приложения для Xamarin.iOS, Xamarin.Android и Windows на основе общей базы кода.Xamarin.Forms allows developers to build Xamarin.iOS, Xamarin.Android, and Windows applications from a single shared codebase. Xamarin.Forms позволяет разработчикам создавать пользовательские интерфейсы в XAML с помощью кода программной части в C#. allows developers to create user interfaces in XAML with code-behind in C#. Эти пользовательские интерфейсы на каждой платформе подготавливаются к просмотру как собственные элементы управления.These user interfaces are rendered as performant native controls on each platform. Ниже приведены некоторые примеры функций, предоставляемых Xamarin.Forms:Some examples of features provided by Xamarin.Forms include:

  • Язык пользовательского интерфейса XAMLXAML user-interface language
  • Привязка данныхDatabinding
  • ЖестыGestures
  • Произведенный эффектEffects
  • Задание стиляStyling

Дополнительные сведения см. на веб-сайте Xamarin.Forms.For more information, see Xamarin.Forms.

Начало работыGet started

Ниже представлены руководства, которые помогут вам в создании первого приложения с использованием Xamarin:The following guides will help you build your first app using Xamarin:

Другие видео о Xamarin см. на Channel 9 и YouTube.Find more Xamarin videos on Channel 9 and YouTube.