Xamarin — nedir, platformlar ve C# ile geliştirme

Yazar: IT Sectr Yayınlanma: 2026-05-01 Okuma süresi: 9 dk

Xamarin, 2011 yılında duyurulan, C# ile mobil uygulamalar oluşturmak için bir Microsoft platformudur. Microsoft Xamarin Documentation, 2024'e göre Xamarin, Mono Runtime'ı kullanarak yerel koda derleme yaparak C# ve .NET'te ortak bir kod tabanıyla iOS, Android ve Windows için uygulamalar yazmanıza olanak tanır. 2024'ten itibaren Xamarin.Forms'un yerini .NET MAUI almıştır.

Önemli Noktalar

  • Xamarin — iOS, Android ve Windows için C# geliştirmeye yönelik Microsoft'un mobil platformu
  • İki yaklaşım: Xamarin.Forms (XAML aracılığıyla paylaşımlı UI) ve Xamarin.Native (ayrı yerel ekranlar)
  • Mono Runtime, C# kodunu iOS ve Android için yerel ARM koduna derler
  • XAML — kullanıcı arayüzleri oluşturmak için bildirimsel bir işaretleme dili
  • .NET MAUI — Microsoft tarafından 2022'de yayınlanan Xamarin.Forms'un halefi

Xamarin Nedir

Xamarin, .NET ve Mono tabanlı bir platformdur ve çapraz platform mobil uygulamalar oluşturmak için C# kullanmanıza olanak tanır. Xamarin şirketi 2011 yılında kuruldu ve 2016 yılında Microsoft tarafından 400 milyon dolara satın alındı. Satın almanın ardından Xamarin, Visual Studio ve Azure ekosisteminin bir parçası haline geldi.

Satın alınmadan önce Xamarin, Enterprise lisansına sahip ticari bir üründü. Microsoft, onu Visual Studio Community'nin bir parçası olarak ücretsiz hale getirdi ve ayrıca Mono Runtime ve SDK bağlamalarının kaynak kodunu açık kaynak olarak yayınladı. Bu, popülaritesinin artmasına yol açtı: SlashData raporuna göre 2020 yılına kadar Xamarin, çapraz platform projelerinin %15'inde kullanılıyordu.

Xamarin'in ana fikri, kodu üç katmana ayırmaktır: paylaşılan iş mantığı (C#, .NET Standard), platforma özel projeler (iOS, Android) ve Xamarin.Forms aracılığıyla isteğe bağlı paylaşımlı UI. Bu yaklaşım, her platformun API'sine yerel erişimi korurken kodun %75'ine kadar yeniden kullanılmasına olanak tanıyordu.

Xamarin'in Tarihi ve Gelişimi

İlk sürüm Xamarin 1.0, 2012 yılında yalnızca iOS desteğiyle yayınlandı. Android desteği 2013 yılında eklendi. Bildirimsel bir UI çerçevesi olan Xamarin.Forms, 2014 yılında Evolve konferansında tanıtıldı. Xamarin 4.0 (2016), watchOS ve tvOS desteğini içeriyordu. Xamarin 5.0 (2019), CSS stilleri ve Material Design temasını tanıttı.

Son ana sürüm Xamarin.Forms 5.0, 2021 yılında yayınlandı. Microsoft, Xamarin'in destek moduna geçtiğini (kullanım ömrü sonu — 1 Mayıs 2024) duyurdu ve .NET 6+'nın bir parçası olan .NET MAUI'ye (Multi-platform App UI) geçiş yapılmasını önerdi. Xamarin.Forms 5.0 artık yeni özellik almamakta, yalnızca kritik güvenlik düzeltmeleri almaktadır.

Xamarin.Forms vs Xamarin.Native

Xamarin.Forms, birleşik bir bileşen seti aracılığıyla arayüzü soyutlayan bir UI çerçevesidir. XAML işaretlemesi (ContentPage, StackLayout, Label, Button), oluşturucular aracılığıyla her platformdaki yerel kontrollere eşlenir. Label, iOS'ta UILabel'e ve Android'de TextView'e dönüşür. Bu yaklaşım, %95'e kadar paylaşımlı UI kodu sağlar.

Xamarin.Native (ayrıca Xamarin.iOS ve Xamarin.Android), paylaşımlı UI olmayan bir yaklaşımdır. Geliştirici, tek bir C# arka ucu kullanarak iOS (Interface Builder veya Storyboard) ve Android (AXML) için ayrı ekranlar oluşturur. Bu, her platformun görünümü üzerinde tam kontrol sağlar ancak UI kodu tekrarını %50–60'a çıkarır.

Microsoft Developer Survey 2023'e göre, Xamarin projelerinin %70'i Xamarin.Forms, %20'si paylaşımlı hizmetlerle Xamarin.Native ve %10'u platforma özel optimizasyonlar için özel oluşturucularla hibrit bir yaklaşım kullanıyordu.

Xamarin Mimarisi

Xamarin Mimarisi iki seviyeden oluşur. Alt seviye, platformda C# IL'yi (Intermediate Language) çalıştıran Mono Runtime'dır. Üst seviye, iOS için Managed Callable Wrappers (MCW) ve Android için Android Bindings'den oluşur ve yönetilen C# kodundan yerel API'lere erişim sağlar.

Mono Runtime ve Platform Bağlamaları

Mono, .NET Framework'ün açık kaynaklı bir uygulamasıdır. Xamarin'de Mono, Common Language Runtime (CLR) olarak çalışır, C# derlemelerini yükler ve bunları makine koduna derler. iOS'ta Mono, Önceden Derleme (AOT) yapar — ARM64 makine koduna, çünkü Apple kullanıcı uygulamalarında JIT derlemeyi yasaklar. Android'de Mono, AOT profilleme ile JIT derleme kullanır.

iOS Bağlamaları (Xamarin.iOS), Objective-C çalışma zamanı üzerindeki C# sarmalayıcılarıdır. Her UIKit sınıfı (UIView, UIViewController), Xamarin.iOS.dll derlemesinde yönetilen bir sınıf tarafından temsil edilir. Objective-C Seçicileri, MessageUI mekanizması aracılığıyla çağrılır. Android'de Xamarin.Android, Android Callable Wrappers (ACW) — C# ve Java/Kotlin arasında bir JNI köprüsü kullanır. Kotlin kitaplıkları, Android Bindings Library aracılığıyla sarılır.

Xamarin'de XAML ve C#

XAML (eXtensible Application Markup Language), UI'yi tanımlamak için bildirimsel bir dildir. Xamarin.Forms'ta XAML, ekran yapısını tanımlar: sayfalar (ContentPage), kaplar (StackLayout, Grid, FlexLayout) ve öğeler (Label, Entry, Button, ListView). C# dilindeki kod-arkası, olayları (Clicked, PropertyChanged) işler ve veri bağlamayı (Binding, Data Binding) yönetir.

MVVM Deseni, Xamarin.Forms için önerilen mimaridir. Model verileri içerir, ViewModel INotifyPropertyChanged ve komutları (ICommand) uygular, View (XAML) ise BindingContext aracılığıyla bağlanır. RelayCommand veya Prism DelegateCommand aracılığıyla ICommand uygulaması, UI bağımlılıkları olmadan ViewModel'in test edilmesini sağlar. Prism.Forms kitaplığı, NavigationService, DialogService ve modülerlik sağlar.

Xamarin.Forms Uygulama Örneği

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'in Avantajları ve Dezavantajları

Birleşik C# Dili — Xamarin'in ana avantajı. C# ve .NET geliştiricileri, Swift, Kotlin veya Objective-C öğrenmeden mobil uygulamalar oluşturabilir. İş mantığı, ağ iletişimi, veritabanları (ORM aracılığıyla SQLite), şifreleme ve günlükleme bir kez yazılır ve tüm platformlarda yeniden kullanılır. Bu, kod bakımını ve testini basitleştirir.

Yerel API'lere Erişim — Xamarin, bağlamalar aracılığıyla iOS (Cocoa Touch) ve Android (Android SDK) API'lerine %100 erişim sağlar. Yeni bir iOS veya Android sürümü yayınlandığında, Microsoft 24–48 saat içinde güncellenmiş bağlamaları yayınlar. Eksik bağlamalar (özel Objective-C veya Kotlin kitaplıkları) için Android Bindings Library veya iOS Binding Library manuel olarak oluşturulur.

Microsoft Ekosistemiyle Entegrasyon — Xamarin, Visual Studio, Azure DevOps, App Center (CI/CD, test, izleme) ve Enterprise Mobility + Security'yi (Intune, ADAL, MSAL) destekler. App Center Analytics ve Crashes, canlı uygulamalardan veri toplar. Visual Studio App Center, derleme, cihaz testi ve uygulama mağazalarına yayınlamayı otomatikleştirir.

Dezavantajlar arasında uygulama boyutu bulunur — boş ekranlı bir Xamarin.Forms APK'sı 25–35 MB iken yerel bir Android uygulaması 5–8 MB'dir. Derleme süresi de daha uzundur: orta büyüklükteki bir proje, yerel Android Studio'da 30–60 saniyeye karşılık 2–5 dakikada derlenir. Mono Runtime, son ikili dosyaya 15–20 MB ekler.

İkinci dezavantaj ise yeni API gecikmesidir. Yeni iOS/Android özellikleri yerel geliştirmede hemen görünürken, Xamarin'de bağlama yayınlarından 1–2 ay sonra gelir. iOS 17 SDK (2023), yayınlanmasından 3 hafta sonra Xamarin tarafından tamamen desteklendi. Acil projeler için bu kritik olabilir. .NET MAUI, .NET 8 ile doğrudan entegrasyon yoluyla bu sorunu çözer.

KriterXamarin.NET MAUI
PlatformlariOS, Android, WindowsiOS, Android, Windows, macOS, Tizen
Temel ÇerçeveMono + .NET Standard.NET 6+ (birleşik BCL)
UI ÇerçevesiXamarin.Forms.NET MAUI (halef)
Destek Durumu1 Mayıs 2024'ten itibaren kullanım ömrü sonuAktif Microsoft geliştirmesi
Hot ReloadSınırlıXAML Hot Reload + C# Reload

.NET MAUI'ye Geçiş

.NET MAUI (Multi-platform App UI), Microsoft tarafından 2022'de .NET 6 ile birlikte yayınlanan Xamarin.Forms'un evrimidir. MAUI, iOS, Android, Windows ve macOS'u her platform için ayrı projeler olmadan tek bir projede birleştirir. Xamarin.Forms'un aksine MAUI, Mono ve .NET Standard yerine .NET 6+ BCL kullanır.

Microsoft bir geçiş aracı sağlar — Visual Studio için .NET Upgrade Assistant. Xamarin.Forms projesini analiz eder, ad alanlarını değiştirir (Xamarin.Forms.* -> Microsoft.Maui.*), .csproj dosyalarını günceller (SDK stili format) ve Android ile iOS ayarlarını birleşik bir yapılandırmaya taşır. Geçişten sonra proje, .NET 8'in tüm yeni yeteneklerinden yararlanabilir: Native AOT, güvenlik için CodeQL ve geliştirilmiş derleme performansı.

Anahtar değişiklik tek bir projedir. Xamarin.Forms 3 ayrı proje (iOS, Android, .NET Standard) gerektirirken, .NET MAUI Platforms/iOS, Platforms/Android, Platforms/Windows ve Platforms/MacCatalyst klasörleriyle tek bir proje kullanır. Her platform, platforma özel koşullu yönergelerle (#if ANDROID, #if IOS) paylaşılan koddan derlenir.

Mevcut kod tabanları için .NET MAUI, Xamarin.Forms ile %90 geriye dönük uyumluluk sağlar. API uyumluluğu ContentView, ContentPage, Shell, NavigationPage, DependencyService ve MessagingCenter'ı kapsar. Ana değişiklikler Device.StartTimer'ı (IDispatcher ile değiştirildi), Platform API'sini (Microsoft.Maui.ApplicationModel'a taşındı) ve kullanımdan kaldırılan oluşturucuları (Handlers ile değiştirildi) etkiledi.

Geçiş süreci beş adım içerir. Birinci — Xamarin.Forms'u en son sürüm 5.0'a güncelleyin. İkinci — .NET Standard 2.0'ı .NET 6 veya 8 ile değiştirin. Üçüncü — otomatik proje dönüşümü için Upgrade Assistant'ı çalıştırın. Dördüncü — Platforms klasörlerindeki platforma özel kodu düzeltin. Beşinci — özellikle özel oluşturucular ve platform hizmetlerini test edin.

Sıkça Sorulan Sorular

Xamarin nedir?

Xamarin, iOS, Android ve Windows için C# geliştirmeye yönelik bir Microsoft mobil platformudur. Paylaşılan kod derlemesi için Mono Runtime kullanır ve iki yaklaşım sunar: Xamarin.Forms (XAML aracılığıyla birleşik UI) ve Xamarin.Native (platforma özgü yerel ekranlar). 2024'ten itibaren Xamarin destek modundadır.

Xamarin, Flutter'dan nasıl farklıdır?

Xamarin, C# ve .NET kullanır, bağlamalar aracılığıyla yerel kontroller (UIKit, View) üzerinden işleme yapar. Flutter, Dart ve kendi işleme motorunu (Impeller) kullanır, yerel UI bileşenlerine bağlı kalmaz. Flutter tüm platformlarda tutarlı bir görünüm sağlarken, Xamarin her işletim sisteminin yerel görünümünü sağlar. Flutter, Google tarafından desteklenir ve Xamarin'in %15'ine karşı %46 paya sahiptir.

2024'te Xamarin'de yeni bir projeye başlamalı mıyım?

Hayır. Microsoft, 1 Mayıs 2024'te Xamarin desteğini sonlandırdı. Tüm yeni projeler, .NET 8'e entegre edilmiş ve .NET platformuyla birlikte güncellemeler alacak olan halefi .NET MAUI'de başlatılmalıdır. Mevcut Xamarin.Forms projeleri için 12–18 ay içinde geçiş yapılması önerilir.

Xamarin.Forms yerel uygulamalardan daha yavaş mı?

Normal uygulamalar için fark önemsizdir. Xamarin.Forms, Managed-Wrapper-Native katmanları nedeniyle %5–10 işleme yükü ekler. Ağır listeler (ListView vs RecyclerView) ve animasyonlar (platform API'leri olmadan Xamarin.Forms kullanma) ile ilgili sorunlar ortaya çıkar. CollectionView (ListView'in yerini aldı) ve yerel animasyonların kullanılması önerilir.

Xamarin'de Kotlin kitaplıkları kullanabilir miyim?

Evet, Android Bindings Library aracılığıyla. Bu .NET proje türü, AAR veya JAR arşivlerini otomatik sınıf ve yöntem oluşturma ile C# bağlamalarına sarar. Kotlin kitaplıkları, coroutine ve sealed class'lar için Binding Library'deki Metadata.xml aracılığıyla yapılandırılan ek işleyiciler gerektirir.

Özet

  • Xamarin — Mono Runtime üzerine inşa edilmiş, C# mobil geliştirme için Microsoft platformu
  • Xamarin.Forms, yerel oluşturucularla XAML işaretlemesi aracılığıyla %90–95 paylaşımlı kod sağlar
  • Xamarin.Native, ayrı ekranlar pahasına her platformun UI'sı üzerinde tam kontrol sağlar
  • Dezavantajlar: APK boyutu 25–35 MB, derleme süresi 2–5 dakika, yeni API gecikmesi
  • .NET MAUI — tek proje, .NET 8 ve 5 platform desteği ile Xamarin.Forms'un halefi
  • .NET MAUI'ye geçiş, orta ölçekli bir proje için Upgrade Assistant ile 1–2 günde yapılır
  • Yeni projeler için .NET MAUI kullanın — Xamarin, Mayıs 2024'te kullanım ömrünün sonuna ulaştı

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun