Xamarin — wat is het, platformen en ontwikkeling in C#

Auteur: IT Sectr Gepubliceerd: 2026-05-01 Leestijd: 9 min

Xamarin — is het Microsoft-platform voor het maken van mobiele applicaties in C#, aangekondigd in 2011. Volgens Microsoft Xamarin Documentation, 2024, stelt Xamarin in staat om applicaties te schrijven voor iOS, Android en Windows met een gedeelde codebase in C# en .NET, met Mono Runtime voor compilatie naar native code. Sinds 2024 is Xamarin.Forms vervangen door .NET MAUI.

Belangrijkste punten

  • Xamarin — mobiel Microsoft-platform voor ontwikkeling in C# op iOS, Android en Windows
  • Twee benaderingen: Xamarin.Forms (gedeelde UI via XAML) en Xamarin.Native (native schermen apart)
  • Mono Runtime compileert C# naar native ARM-code voor iOS en Android
  • XAML — declaratieve opmaaktaal voor het bouwen van de gebruikersinterface
  • .NET MAUI — opvolger van Xamarin.Forms, uitgebracht door Microsoft in 2022

Wat is Xamarin

Xamarin — is een platform gebaseerd op .NET en Mono dat het gebruik van C# mogelijk maakt voor het maken van cross-platform mobiele applicaties. Het bedrijf Xamarin werd opgericht in 2011 en overgenomen door Microsoft in 2016 voor $400 miljoen. Na de overname werd Xamarin onderdeel van het Visual Studio en Azure ecosysteem.

Vóór de overname door Microsoft was Xamarin een commercieel product met een Enterprise-licentie. Microsoft maakte het gratis als onderdeel van Visual Studio Community en opende ook de broncode van Mono Runtime en SDK-bindings. Dit leidde tot een toename in populariteit: in 2020 werd Xamarin gebruikt in 15% van de cross-platform projecten, volgens het SlashData-rapport.

Het hoofdidee van Xamarin — verdeling van code in drie lagen: gedeelde bedrijfslogica (C#, .NET Standard), platformprojecten (iOS, Android) en optionele gedeelde UI via Xamarin.Forms. Deze benadering maakte het mogelijk om tot 75% van de code te hergebruiken met behoud van native toegang tot de API van elk platform.

Geschiedenis en ontwikkeling van Xamarin

De eerste versie Xamarin 1.0 werd uitgebracht in 2012 met alleen ondersteuning voor iOS. In 2013 werd Android-ondersteuning toegevoegd. Xamarin.Forms — het declaratieve UI-framework — werd in 2014 gepresenteerd op de Evolve-conferentie. Xamarin 4.0 (2016) voegde ondersteuning voor watchOS en tvOS toe. Xamarin 5.0 (2019) introduceerde CSS-stijlen en het Material Design-thema.

De laatste hoofduitgave Xamarin.Forms 5.0 werd uitgebracht in 2021. Microsoft kondigde aan dat Xamarin overgaat naar ondersteuningsmodus (end of life — 1 mei 2024) en adviseerde migratie naar .NET MAUI (Multi-platform App UI), dat deel uitmaakt van .NET 6+. Xamarin.Forms 5.0 krijgt geen nieuwe functies meer, alleen kritieke beveiligingsupdates.

Xamarin.Forms vs Xamarin.Native

Xamarin.Forms — is een UI-framework dat de interface abstraheert via een uniforme set elementen. XAML-markup (ContentPage, StackLayout, Label, Button) wordt via renderers naar native besturingselementen van elk platform gemapt. Label wordt vertaald naar UILabel op iOS en TextView op Android. Deze benadering zorgt voor tot 95% gedeelde UI-code.

Xamarin.Native (ook Xamarin.iOS en Xamarin.Android) — is een benadering zonder gedeelde UI. De ontwikkelaar maakt aparte schermen voor iOS (Interface Builder of Storyboard) en Android (AXML), met één C#-backend. Dit geeft volledige controle over het uiterlijk van elk platform, maar verhoogt de hoeveelheid gedupliceerde UI-code tot 50–60%.

Volgens de Microsoft Developer Survey 2023 gebruikte 70% van de Xamarin-projecten Xamarin.Forms, 20% — Xamarin.Native met gedeelde services, 10% — een hybride aanpak met aangepaste renderers voor platformoptimalisaties.

Xamarin architectuur

Xamarin architectuur bestaat uit twee niveaus. Het onderste niveau — Mono Runtime, dat C# IL (Intermediate Language) op het platform uitvoert. Het bovenste niveau — Managed Callable Wrappers (MCW) voor iOS en Android Bindings voor Android, die toegang bieden tot native API's vanuit beheerde C#-code.

Mono Runtime en platformbindings

Mono — is een open-source implementatie van het .NET Framework. In Xamarin werkt Mono als de Common Language Runtime (CLR)-uitvoeringsomgeving, waarbij het C#-assemblies laadt en compileert naar machinecode. Op iOS compileert Mono Ahead-of-Time (AOT) — naar ARM64-machinecode, omdat Apple JIT-compilatie in gebruikersapplicaties verbiedt. Op Android gebruikt Mono JIT-compilatie met AOT-profilering.

iOS Bindings (Xamarin.iOS) — zijn C#-wrappers rond de Objective-C-runtime. Elke UIKit-klasse (UIView, UIViewController) wordt vertegenwoordigd door een beheerde klasse in de Xamarin.iOS.dll-assembly. Objective-C-selectors worden aangeroepen via het MessageUI-mechanisme. Op Android gebruikt Xamarin.Android Android Callable Wrappers (ACW) — een JNI-brug tussen C# en Java/Kotlin. Kotlin-bibliotheken worden ingepakt via Android Bindings Library.

XAML en C# in Xamarin

XAML (eXtensible Application Markup Language) — declaratieve taal voor het beschrijven van UI. In Xamarin.Forms definieert XAML de schermstructuur: pagina's (ContentPage), containers (StackLayout, Grid, FlexLayout) en elementen (Label, Entry, Button, ListView). De backend-code in C# verwerkt gebeurtenissen (Clicked, PropertyChanged) en beheert gegevensbinding (Binding, Data Binding).

MVVM-patroon — de aanbevolen architectuur voor Xamarin.Forms. Model bevat gegevens, ViewModel implementeert INotifyPropertyChanged en opdrachten (ICommand), View (XAML) wordt verbonden via BindingContext. Implementatie van ICommand via RelayCommand of Prism DelegateCommand zorgt voor testen van ViewModel zonder UI-afhankelijkheden. De Prism.Forms-bibliotheek biedt NavigationService, DialogService en modulariteit.

Voorbeeld van een applicatie in 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 }
            };
        }
    }
}

Voor- en nadelen van Xamarin

Eén enkele C#-taal — het belangrijkste voordeel van Xamarin. C#- en .NET-ontwikkelaars kunnen mobiele applicaties maken zonder Swift, Kotlin of Objective-C te leren. Bedrijfslogica, netwerkwerk, databases (SQLite via ORM), encryptie en logging worden één keer geschreven en hergebruikt op alle platformen. Dit vereenvoudigt het onderhoud en testen van code.

Toegang tot native API's — Xamarin biedt 100% toegang tot iOS (Cocoa Touch) en Android (Android SDK) API's via bindings. Bij een nieuwe versie van iOS of Android publiceert Microsoft bijgewerkte bindings binnen 24–48 uur. Voor ontbrekende bindings (aangepaste Objective-C of Kotlin-bibliotheken) wordt handmatig Android Bindings Library of iOS Binding Library gemaakt.

Integratie met Microsoft-ecosysteem — Xamarin ondersteunt Visual Studio, Azure DevOps, App Center (CI/CD, testen, monitoring) en Enterprise Mobility + Security (Intune, ADAL, MSAL). App Center Analytics en Crashes verzamelen gegevens van live applicaties. Visual Studio App Center automatiseert bouwen, testen op apparaat en publicatie naar app-winkels.

Nadelen van Xamarin zijn onder meer de applicatiegrootte — een Xamarin.Forms APK met een leeg scherm weegt 25–35 MB tegenover 5–8 MB voor een native Android-app. De compilatietijd is ook hoger: een middelgroot project bouwt 2–5 minuten tegenover 30–60 seconden in native Android Studio. Mono Runtime voegt 15–20 MB toe aan het uiteindelijke binaire bestand.

Het tweede nadeel is vertraging van nieuwe API's. Nieuwe iOS/Android-functies verschijnen direct in native ontwikkeling, maar in Xamarin — 1–2 maanden na het uitbrengen van bindings. iOS 17 SDK (2023) werd volledig ondersteund door Xamarin 3 weken na de release. Voor urgente projecten kan dit kritiek zijn. .NET MAUI lost dit probleem op door directe integratie met .NET 8.

CriteriumXamarin.NET MAUI
PlatformeniOS, Android, WindowsiOS, Android, Windows, macOS, Tizen
Basis-frameworkMono + .NET Standard.NET 6+ (uniforme BCL)
UI-frameworkXamarin.Forms.NET MAUI (opvolger)
OndersteuningsmodusEnd of Life sinds 1 mei 2024Actieve ontwikkeling Microsoft
Hot ReloadBeperktXAML Hot Reload + C# Reload

Migratie naar .NET MAUI

.NET MAUI (Multi-platform App UI) — is de evolutie van Xamarin.Forms, uitgebracht door Microsoft in 2022 samen met .NET 6. MAUI combineert iOS, Android, Windows en macOS in één project zonder aparte projecten voor elk platform. In tegenstelling tot Xamarin.Forms gebruikt MAUI .NET 6+ BCL, niet Mono en .NET Standard.

Microsoft biedt migratietool — .NET Upgrade Assistant voor Visual Studio. Het analyseert het Xamarin.Forms-project, vervangt naamsruimten (Xamarin.Forms.* -> Microsoft.Maui.*), werkt .csproj-bestanden bij (SDK-stijl formaat) en migreert Android- en iOS-instellingen naar één configuratie. Na migratie kan het project alle nieuwe mogelijkheden van .NET 8 gebruiken: Native AOT, CodeQL voor beveiliging en verbeterde bouwprestaties.

Belangrijkste verandering — één project. Als Xamarin.Forms 3 aparte projecten vereiste (iOS, Android, .NET Standard), gebruikt .NET MAUI één project met mappen Platforms/iOS, Platforms/Android, Platforms/Windows en Platforms/MacCatalyst. Elk platform wordt gecompileerd uit gedeelde code met platform conditionele directives (#if ANDROID, #if IOS).

Voor bestaande codebases biedt .NET MAUI 90% achterwaartse compatibiliteit met Xamarin.Forms. API-compatibiliteit omvat ContentView, ContentPage, Shell, NavigationPage, DependencyService en MessagingCenter. Belangrijkste wijzigingen betroffen Device.StartTimer (vervangen door IDispatcher), Platform API (verplaatst naar Microsoft.Maui.ApplicationModel) en verouderde renderers (vervangen door Handlers).

Het migratieproces omvat vijf stappen. Eerste — bijwerken van Xamarin.Forms naar de laatste versie 5.0. Tweede — vervangen van .NET Standard 2.0 door .NET 6 of 8. Derde — uitvoeren van Upgrade Assistant voor automatische conversie van het project. Vierde — aanpassen van platformcode in Platforms-mappen. Vijfde — testen, met name aangepaste renderers en platformservices.

Veelgestelde vragen

Wat is Xamarin?

Xamarin — is het mobiele Microsoft-platform voor ontwikkeling in C# op iOS, Android en Windows. Het gebruikt Mono Runtime voor compilatie van gedeelde code en biedt twee benaderingen: Xamarin.Forms (uniforme UI via XAML) en Xamarin.Native (native platformschermen). Sinds 2024 is Xamarin in ondersteuningsmodus.

Waarin verschilt Xamarin van Flutter?

Xamarin gebruikt C# en .NET, rendert via native besturingselementen (UIKit, View), maar via bindings. Flutter gebruikt Dart en zijn eigen render-engine (Impeller), zonder afhankelijkheid van native UI-componenten. Flutter zorgt voor een uniform uiterlijk op alle platformen, Xamarin — het native uiterlijk van elk besturingssysteem. Flutter wordt ondersteund door Google en heeft 46% tegenover 15% voor Xamarin.

Is het de moeite waard om in 2024 een nieuw project op Xamarin te starten?

Nee. Microsoft heeft de ondersteuning voor Xamarin beëindigd op 1 mei 2024. Alle nieuwe projecten moeten worden gestart op .NET MAUI — de opvolger, die is ingebouwd in .NET 8 en updates zal ontvangen samen met het .NET-platform. Voor bestaande Xamarin.Forms-projecten wordt migratie binnen 12–18 maanden aanbevolen.

Is Xamarin.Forms langzamer dan een native app?

Het verschil is minimaal voor gewone applicaties. Xamarin.Forms voegt 5–10% overhead toe aan rendering door de Managed-Wrapper-Native-wrappers. Problemen ontstaan bij zware lijsten (ListView versus RecyclerView) en animaties (met Xamarin.Forms-middelen zonder platform-API's). Het wordt aanbevolen CollectionView (verving ListView) en native animaties te gebruiken.

Kunnen Kotlin-bibliotheken worden gebruikt in Xamarin?

Ja, via Android Bindings Library. Dit type .NET-project verpakt een AAR- of JAR-archief in C#-bindings met automatische generatie van klassen en methoden. Voor Kotlin-bibliotheken zijn extra handlers vereist voor coroutines en sealed classes, die worden geconfigureerd via Metadata.xml in de Binding Library.

Samenvatting

  • Xamarin — Microsoft-platform voor mobiele ontwikkeling in C#, gebaseerd op Mono Runtime
  • Xamarin.Forms zorgt voor 90–95% gedeelde code via XAML-markup met native renderers
  • Xamarin.Native geeft volledige controle over de UI van elk platform via aparte schermen
  • Nadelen: APK-grootte 25–35 MB, compilatietijd 2–5 minuten, vertraging nieuwe API's
  • .NET MAUI — opvolger van Xamarin.Forms met één project, .NET 8 en ondersteuning van 5 platformen
  • Migratie naar .NET MAUI via Upgrade Assistant in 1–2 dagen voor een middelgroot project
  • Gebruik voor nieuwe projecten .NET MAUI — Xamarin bereikte end of life in mei 2024

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook