Xamarin — какво е, платформи и разработка с C#

Автор: IT Sectr Публикувано: 2026-05-01 Време за четене: 9 мин

Xamarin — е платформа на Microsoft за създаване на мобилни приложения на езика C#, обявена през 2011 г. Според Microsoft Xamarin Documentation, 2024, Xamarin позволява писане на приложения за iOS, Android и Windows с обща кодова база на C# и .NET, използвайки Mono Runtime за компилиране в естествен код. От 2024 г. Xamarin.Forms е заменен от .NET MAUI.

Основни моменти

  • Xamarin — мобилна платформа на Microsoft за разработка с C# на iOS, Android и Windows
  • Два подхода: Xamarin.Forms (общ UI чрез XAML) и Xamarin.Native (отделни естествени екрани)
  • Mono Runtime компилира C# в естествен ARM код за iOS и Android
  • XAML — декларативен език за маркиране за изграждане на потребителски интерфейс
  • .NET MAUI — наследник на Xamarin.Forms, пуснат от Microsoft през 2022 г.

Какво е Xamarin

Xamarin — е платформа, базирана на .NET и Mono, която позволява използването на C# за създаване на междуплатформени мобилни приложения. Компанията Xamarin е основана през 2011 г. и закупена от Microsoft през 2016 г. за 400 милиона долара. След покупката Xamarin става част от екосистемата на Visual Studio и Azure.

Преди покупката от Microsoft, Xamarin беше търговски продукт с лиценз Enterprise. Microsoft го направи безплатен в рамките на Visual Studio Community, а също така отвори изходния код на Mono Runtime и SDK обвързванията. Това доведе до ръст на популярността: до 2020 г. Xamarin се използваше в 15% от междуплатформените проекти, според доклада на SlashData.

Основната идея на Xamarin — разделяне на кода на три слоя: обща бизнес логика (C#, .NET Standard), платформени проекти (iOS, Android) и опционален общ UI чрез Xamarin.Forms. Този подход позволяваше повторно използване на до 75% от кода при запазване на естествен достъп до API на всяка платформа.

История и развитие на Xamarin

Първата версия Xamarin 1.0 беше пусната през 2012 г. само с поддръжка на iOS. През 2013 г. беше добавена поддръжка на Android. Xamarin.Forms — декларативната UI рамка — беше представен през 2014 г. на конференцията Evolve. Xamarin 4.0 (2016) включва поддръжка на watchOS и tvOS. Xamarin 5.0 (2019) въведе CSS стилове и тема Material Design.

Последната голяма версия Xamarin.Forms 5.0 беше пусната през 2021 г. Microsoft обяви, че Xamarin преминава в режим на поддръжка (край на живота — 1 май 2024 г.) и препоръча мигриране към .NET MAUI (Multi-platform App UI), който е част от .NET 6+. Xamarin.Forms 5.0 вече не получава нови функции, само критични корекции на сигурността.

Xamarin.Forms срещу Xamarin.Native

Xamarin.Forms — е UI рамка, която абстрахира интерфейса чрез унифициран набор от елементи. XAML маркирането (ContentPage, StackLayout, Label, Button) се картографира към естествените контроли на всяка платформа чрез рендери. Label се превежда на UILabel в iOS и TextView в Android. Този подход осигурява до 95% общ UI код.

Xamarin.Native (също Xamarin.iOS и Xamarin.Android) — е подход без общ UI. Разработчикът създава отделни екрани за iOS (Interface Builder или Storyboard) и Android (AXML), използвайки един C# бекенд. Това дава пълен контрол върху външния вид на всяка платформа, но увеличава обема на дублирания UI код до 50–60%.

Според Microsoft Developer Survey 2023, 70% от проектите на Xamarin използваха Xamarin.Forms, 20% — Xamarin.Native с общи услуги, 10% — хибриден подход с персонализирани рендери за платформени оптимизации.

Архитектура на Xamarin

Архитектурата на Xamarin се състои от две нива. Долното ниво — Mono Runtime, който изпълнява C# IL (Intermediate Language) на платформата. Горното ниво — Managed Callable Wrappers (MCW) за iOS и Android Bindings за Android, които осигуряват достъп до естествени API от управляван C# код.

Mono Runtime и платформени обвързвания

Mono — е имплементация с отворен код на .NET Framework. В Xamarin, Mono работи като среда за изпълнение на Common Language Runtime (CLR), зареждайки C# сборки и компилирайки ги в машинен код. На iOS, Mono компилира Ahead-of-Time (AOT) — в машинен код ARM64, тъй като Apple забранява JIT компилацията в потребителски приложения. На Android, Mono използва JIT компилация с AOT профилиране.

iOS Bindings (Xamarin.iOS) — са C# обвивки над Objective-C средата за изпълнение. Всеки UIKit клас (UIView, UIViewController) е представен от управляван клас в сборката Xamarin.iOS.dll. Objective-C селекторите се извикват чрез MessageUI механизма. На Android, Xamarin.Android използва Android Callable Wrappers (ACW) — JNI мост между C# и Java/Kotlin. Kotlin библиотеките се обвиват чрез Android Bindings Library.

XAML и C# в Xamarin

XAML (eXtensible Application Markup Language) — декларативен език за описание на UI. В Xamarin.Forms, XAML определя структурата на екрана: страници (ContentPage), контейнери (StackLayout, Grid, FlexLayout) и елементи (Label, Entry, Button, ListView). Бекенд кодът на C# обработва събития (Clicked, PropertyChanged) и управлява свързването на данни (Binding, Data Binding).

MVVM модел — препоръчителната архитектура за Xamarin.Forms. Моделът съдържа данни, ViewModel имплементира INotifyPropertyChanged и команди (ICommand), View (XAML) се свързва чрез BindingContext. Имплементацията на ICommand чрез RelayCommand или Prism DelegateCommand осигурява тестване на ViewModel без UI зависимости. Библиотеката Prism.Forms предоставя NavigationService, DialogService и модулност.

Пример за приложение в Xamarin.Forms

csharp
using Xamarin.Forms;

namespace XamarinApp
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            
            var label = new Label
            {
                Text = "Hello, Xamarin!",
                FontSize = 24,
                VerticalOptions = LayoutOptions.Center,
                HorizontalOptions = LayoutOptions.Center
            };
            
            Content = new StackLayout
            {
                Children = { label }
            };
        }
    }
}

Предимства и недостатъци на Xamarin

Единен език C# — основното предимство на Xamarin. Разработчиците на C# и .NET могат да създават мобилни приложения без да учат Swift, Kotlin или Objective-C. Бизнес логиката, работата с мрежа, базите данни (SQLite чрез ORM), криптирането и регистрирането се пишат веднъж и се използват повторно на всички платформи. Това опростява поддръжката и тестването на кода.

Достъп до естествени API — Xamarin предоставя 100% достъп до API на iOS (Cocoa Touch) и Android (Android SDK) чрез обвързвания. При излизане на нова версия на iOS или Android, Microsoft публикува актуализирани обвързвания в рамките на 24–48 часа. За липсващи обвързвания (персонализирани Objective-C или Kotlin библиотеки) се създава ръчно Android Bindings Library или iOS Binding Library.

Интеграция с екосистемата на Microsoft — Xamarin поддържа Visual Studio, Azure DevOps, App Center (CI/CD, тестване, мониторинг) и Enterprise Mobility + Security (Intune, ADAL, MSAL). App Center Analytics и Crashes събират данни от живи приложения. Visual Studio App Center автоматизира изграждането, тестването на устройство и публикуването в магазините за приложения.

Недостатъци на Xamarin включват размера на приложението — APK на Xamarin.Forms с празен екран тежи 25–35 MB срещу 5–8 MB за естествено Android приложение. Времето за компилиране също е по-високо: проект със среден размер се изгражда за 2–5 минути срещу 30–60 секунди в естественото Android Studio. Mono Runtime добавя 15–20 MB към крайния двоичен файл.

Вторият недостатък е забавянето на нови API. Новите функции на iOS/Android се появяват веднага в естествената разработка, а в Xamarin — 1–2 месеца след пускането на обвързванията. iOS 17 SDK (2023) беше напълно поддържан от Xamarin 3 седмици след пускането. За спешни проекти това може да бъде критично. .NET MAUI решава този проблем чрез директна интеграция с .NET 8.

КритерийXamarin.NET MAUI
ПлатформиiOS, Android, WindowsiOS, Android, Windows, macOS, Tizen
Основна рамкаMono + .NET Standard.NET 6+ (единен BCL)
UI рамкаXamarin.Forms.NET MAUI (наследник)
Режим на поддръжкаКрай на живота от 1 май 2024 г.Активна разработка на Microsoft
Hot ReloadОграниченXAML Hot Reload + C# Reload

Преход към .NET MAUI

.NET MAUI (Multi-platform App UI) — е еволюцията на Xamarin.Forms, пусната от Microsoft през 2022 г. заедно с .NET 6. MAUI обединява iOS, Android, Windows и macOS в един проект без отделни проекти за всяка платформа. За разлика от Xamarin.Forms, MAUI използва .NET 6+ BCL, а не Mono и .NET Standard.

Microsoft предоставя инструмент за миграция — .NET Upgrade Assistant за Visual Studio. Той анализира Xamarin.Forms проекта, заменя именни пространства (Xamarin.Forms.* -> Microsoft.Maui.*), актуализира .csproj файлове (SDK-style формат) и мигрира настройките на Android и iOS в единна конфигурация. След миграцията проектът може да използва всички нови възможности на .NET 8: Native AOT, CodeQL за сигурност и подобрена производителност на изграждане.

Ключова промяна — единен проект. Докато Xamarin.Forms изискваше 3 отделни проекта (iOS, Android, .NET Standard), .NET MAUI използва един проект с папки Platforms/iOS, Platforms/Android, Platforms/Windows и Platforms/MacCatalyst. Всяка платформа се компилира от общ код с платформени условни директиви (#if ANDROID, #if IOS).

За съществуващи кодови бази, .NET MAUI осигурява 90% обратна съвместимост с Xamarin.Forms. API съвместимостта обхваща ContentView, ContentPage, Shell, NavigationPage, DependencyService и MessagingCenter. Основните промени засегнаха Device.StartTimer (заменен от IDispatcher), Platform API (преместен в Microsoft.Maui.ApplicationModel) и остарелите рендери (заменени от Handlers).

Процесът на миграция включва пет стъпки. Първа — актуализиране на Xamarin.Forms до последната версия 5.0. Втора — замяна на .NET Standard 2.0 с .NET 6 или 8. Трета — стартиране на Upgrade Assistant за автоматично конвертиране на проекта. Четвърта — коригиране на платформен код в папките Platforms. Пета — тестване, особено на персонализирани рендери и платформени услуги.

Често задавани въпроси

Какво е Xamarin?

Xamarin — е мобилна платформа на Microsoft за разработка с C# на iOS, Android и Windows. Тя използва Mono Runtime за компилиране на общ код и предлага два подхода: Xamarin.Forms (единен UI чрез XAML) и Xamarin.Native (естествени екрани на платформата). От 2024 г. Xamarin е в режим на поддръжка.

С какво Xamarin се различава от Flutter?

Xamarin използва C# и .NET, рендерира чрез естествени контроли (UIKit, View), но чрез обвързвания. Flutter използва Dart и собствен двигател за рендериране (Impeller), без да разчита на естествени UI компоненти. Flutter осигурява единен външен вид на всички платформи, Xamarin — естествен вид на всяка операционна система. Flutter се поддържа от Google и има 46% срещу 15% за Xamarin.

Струва ли си да започнете нов проект на Xamarin през 2024 г.?

Не. Microsoft прекрати поддръжката на Xamarin на 1 май 2024 г. Всички нови проекти трябва да се стартират на .NET MAUI — неговия наследник, който е вграден в .NET 8 и ще получава актуализации заедно с платформата .NET. За съществуващи проекти на Xamarin.Forms се препоръчва миграция в рамките на 12–18 месеца.

Xamarin.Forms по-бавен ли е от естественото приложение?

Разликата е незначителна за обикновени приложения. Xamarin.Forms добавя 5–10% допълнително натоварване на рендерирането поради обвивките Managed-Wrapper-Native. Проблеми възникват при тежки списъци (ListView срещу RecyclerView) и анимации (средства на Xamarin.Forms без платформени API). Препоръчва се използването на CollectionView (замени ListView) и естествени анимации.

Могат ли да се използват Kotlin библиотеки в Xamarin?

Да, чрез Android Bindings Library. Този тип .NET проект обвива AAR или JAR архив в C# обвързвания с автоматично генериране на класове и методи. За Kotlin библиотеки са необходими допълнителни обработчици за корутини и sealed class, които се конфигурират чрез Metadata.xml в Binding Library.

Резюме

  • Xamarin — платформа на Microsoft за мобилна разработка с C#, базирана на Mono Runtime
  • Xamarin.Forms осигурява 90–95% общ код чрез XAML маркиране с естествени рендери
  • Xamarin.Native дава пълен контрол над UI на всяка платформа чрез отделни екрани
  • Недостатъци: размер на APK 25–35 MB, време за компилиране 2–5 минути, забавяне на нови API
  • .NET MAUI — наследник на Xamarin.Forms с единен проект, .NET 8 и поддръжка на 5 платформи
  • Миграцията към .NET MAUI се извършва чрез Upgrade Assistant за 1–2 дни за среден проект
  • За нови проекти използвайте .NET MAUI — Xamarin достигна края на живота си през май 2024 г.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също