Xamarin — cos'è, piattaforme e sviluppo in C#

Autore: IT Sectr Pubblicato: 2026-05-01 Tempo di lettura: 9 min

Xamarin è una piattaforma Microsoft per creare applicazioni mobili in C#, annunciata nel 2011. Secondo Microsoft Xamarin Documentation, 2024, Xamarin consente di scrivere applicazioni per iOS, Android e Windows con una base di codice condivisa in C# e .NET, utilizzando Mono Runtime per la compilazione in codice nativo. Dal 2024, Xamarin.Forms è stato sostituito da .NET MAUI.

Punti Chiave

  • Xamarin — la piattaforma mobile Microsoft per lo sviluppo in C# per iOS, Android e Windows
  • Due approcci: Xamarin.Forms (UI condivisa tramite XAML) e Xamarin.Native (schermate native separate)
  • Mono Runtime compila C# in codice ARM nativo per iOS e Android
  • XAML — un linguaggio di markup dichiarativo per costruire interfacce utente
  • .NET MAUI — il successore di Xamarin.Forms, rilasciato da Microsoft nel 2022

Cos'è Xamarin

Xamarin è una piattaforma basata su .NET e Mono che consente di utilizzare C# per creare applicazioni mobili multipiattaforma. L'azienda Xamarin è stata fondata nel 2011 e acquisita da Microsoft nel 2016 per 400 milioni di dollari. Dopo l'acquisizione, Xamarin è entrato a far parte dell'ecosistema Visual Studio e Azure.

Prima dell'acquisizione, Xamarin era un prodotto commerciale con licenza Enterprise. Microsoft lo ha reso gratuito come parte di Visual Studio Community e ha anche aperto il codice sorgente di Mono Runtime e dei binding SDK. Ciò ha portato a un aumento di popolarità: entro il 2020, Xamarin era utilizzato nel 15% dei progetti multipiattaforma, secondo un rapporto SlashData.

L'idea principale di Xamarin è dividere il codice in tre livelli: logica di business condivisa (C#, .NET Standard), progetti specifici della piattaforma (iOS, Android) e un'UI condivisa opzionale tramite Xamarin.Forms. Questo approccio consentiva di riutilizzare fino al 75% del codice mantenendo l'accesso nativo alle API di ciascuna piattaforma.

Storia ed evoluzione di Xamarin

La prima versione Xamarin 1.0 è stata rilasciata nel 2012 con supporto solo per iOS. Il supporto per Android è stato aggiunto nel 2013. Xamarin.Forms — un framework UI dichiarativo — è stato presentato nel 2014 alla conferenza Evolve. Xamarin 4.0 (2016) includeva il supporto per watchOS e tvOS. Xamarin 5.0 (2019) ha introdotto gli stili CSS e il tema Material Design.

L'ultima versione principale Xamarin.Forms 5.0 è stata rilasciata nel 2021. Microsoft ha annunciato che Xamarin stava entrando in modalità supporto (fine vita — 1 maggio 2024) e ha raccomandato la migrazione a .NET MAUI (Multi-platform App UI), che fa parte di .NET 6+. Xamarin.Forms 5.0 non riceve più nuove funzionalità, solo correzioni di sicurezza critiche.

Xamarin.Forms vs Xamarin.Native

Xamarin.Forms è un framework UI che astrae l'interfaccia attraverso un insieme unificato di componenti. Il markup XAML (ContentPage, StackLayout, Label, Button) viene mappato ai controlli nativi di ciascuna piattaforma tramite renderer. Label si traduce in UILabel su iOS e TextView su Android. Questo approccio fornisce fino al 95% di codice UI condiviso.

Xamarin.Native (anche Xamarin.iOS e Xamarin.Android) è un approccio senza UI condivisa. Lo sviluppatore crea schermate separate per iOS (Interface Builder o Storyboard) e Android (AXML), utilizzando un unico backend C#. Questo dà il controllo completo sull'aspetto di ogni piattaforma ma aumenta la duplicazione del codice UI al 50–60%.

Secondo il Sondaggio Sviluppatori Microsoft 2023, il 70% dei progetti Xamarin utilizzava Xamarin.Forms, il 20% utilizzava Xamarin.Native con servizi condivisi e il 10% utilizzava un approccio ibrido con renderer personalizzati per ottimizzazioni specifiche della piattaforma.

Architettura di Xamarin

L'architettura di Xamarin è composta da due livelli. Il livello inferiore è Mono Runtime, che esegue C# IL (Intermediate Language) sulla piattaforma. Il livello superiore è costituito da Managed Callable Wrappers (MCW) per iOS e Android Bindings per Android, che forniscono l'accesso alle API native dal codice gestito C#.

Mono Runtime e binding di piattaforma

Mono è un'implementazione open source del .NET Framework. In Xamarin, Mono opera come Common Language Runtime (CLR), caricando gli assembly C# e compilandoli in codice macchina. Su iOS, Mono compila Ahead-of-Time (AOT) — in codice macchina ARM64, poiché Apple vieta la compilazione JIT nelle applicazioni utente. Su Android, Mono utilizza la compilazione JIT con profilatura AOT.

Binding iOS (Xamarin.iOS) sono wrapper C# sul runtime Objective-C. Ogni classe UIKit (UIView, UIViewController) è rappresentata da una classe gestita nell'assembly Xamarin.iOS.dll. I selettori Objective-C vengono invocati tramite il meccanismo MessageUI. Su Android, Xamarin.Android utilizza Android Callable Wrappers (ACW) — un ponte JNI tra C# e Java/Kotlin. Le librerie Kotlin vengono incapsulate tramite Android Bindings Library.

XAML e C# in Xamarin

XAML (eXtensible Application Markup Language) è un linguaggio dichiarativo per descrivere l'UI. In Xamarin.Forms, XAML definisce la struttura dello schermo: pagine (ContentPage), contenitori (StackLayout, Grid, FlexLayout) ed elementi (Label, Entry, Button, ListView). Il code-behind in C# gestisce gli eventi (Clicked, PropertyChanged) e gestisce il data binding (Binding, Data Binding).

Pattern MVVM è l'architettura consigliata per Xamarin.Forms. Il Model contiene i dati, la ViewModel implementa INotifyPropertyChanged e i comandi (ICommand), e la View (XAML) si lega tramite BindingContext. L'implementazione di ICommand tramite RelayCommand o Prism DelegateCommand consente di testare la ViewModel senza dipendenze dall'UI. La libreria Prism.Forms fornisce NavigationService, DialogService e modularità.

Esempio di applicazione 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 }
            };
        }
    }
}

Vantaggi e svantaggi di Xamarin

Linguaggio C# unificato — il principale vantaggio di Xamarin. Gli sviluppatori C# e .NET possono creare applicazioni mobili senza imparare Swift, Kotlin o Objective-C. La logica di business, la rete, i database (SQLite tramite ORM), la crittografia e la registrazione vengono scritti una volta e riutilizzati su tutte le piattaforme. Questo semplifica la manutenzione e il test del codice.

Accesso alle API native — Xamarin fornisce accesso al 100% alle API iOS (Cocoa Touch) e Android (Android SDK) tramite binding. Quando viene rilasciata una nuova versione di iOS o Android, Microsoft pubblica binding aggiornati entro 24–48 ore. Per i binding mancanti (librerie Objective-C o Kotlin personalizzate), si crea manualmente Android Bindings Library o iOS Binding Library.

Integrazione con l'ecosistema Microsoft — Xamarin supporta Visual Studio, Azure DevOps, App Center (CI/CD, test, monitoraggio) ed Enterprise Mobility + Security (Intune, ADAL, MSAL). App Center Analytics e Crashes raccolgono dati dalle applicazioni in esecuzione. Visual Studio App Center automatizza la compilazione, i test su dispositivo e la pubblicazione negli store di app.

Svantaggi di Xamarin includono la dimensione dell'applicazione — un APK Xamarin.Forms con schermata vuota pesa 25–35 MB contro 5–8 MB di un'app Android nativa. Anche il tempo di compilazione è maggiore: un progetto di medie dimensioni viene compilato in 2–5 minuti contro 30–60 secondi in Android Studio nativo. Mono Runtime aggiunge 15–20 MB al binario finale.

Il secondo svantaggio è il ritardo delle nuove API. Le nuove funzionalità iOS/Android appaiono immediatamente nello sviluppo nativo, mentre in Xamarin arrivano 1–2 mesi dopo il rilascio dei binding. L'iOS 17 SDK (2023) è stato completamente supportato da Xamarin 3 settimane dopo il rilascio. Per i progetti urgenti, questo può essere critico. .NET MAUI risolve questo problema tramite l'integrazione diretta con .NET 8.

CriterioXamarin.NET MAUI
PiattaformeiOS, Android, WindowsiOS, Android, Windows, macOS, Tizen
Framework di baseMono + .NET Standard.NET 6+ (BCL unificato)
Framework UIXamarin.Forms.NET MAUI (successore)
Stato del supportoFine vita dal 1 maggio 2024Sviluppo attivo Microsoft
Hot ReloadLimitatoXAML Hot Reload + C# Reload

Migrazione a .NET MAUI

.NET MAUI (Multi-platform App UI) è l'evoluzione di Xamarin.Forms, rilasciata da Microsoft nel 2022 insieme a .NET 6. MAUI unifica iOS, Android, Windows e macOS in un unico progetto senza progetti separati per ogni piattaforma. A differenza di Xamarin.Forms, MAUI utilizza .NET 6+ BCL invece di Mono e .NET Standard.

Microsoft fornisce uno strumento di migrazione — .NET Upgrade Assistant per Visual Studio. Analizza il progetto Xamarin.Forms, sostituisce i namespace (Xamarin.Forms.* -> Microsoft.Maui.*), aggiorna i file .csproj (formato stile SDK) e migra le impostazioni Android e iOS in una configurazione unificata. Dopo la migrazione, il progetto può sfruttare tutte le nuove capacità di .NET 8: Native AOT, CodeQL per la sicurezza e prestazioni di compilazione migliorate.

Il cambiamento chiave è un progetto singolo. Mentre Xamarin.Forms richiedeva 3 progetti separati (iOS, Android, .NET Standard), .NET MAUI utilizza un unico progetto con le cartelle Platforms/iOS, Platforms/Android, Platforms/Windows e Platforms/MacCatalyst. Ogni piattaforma viene compilata da codice condiviso con direttive condizionali specifiche della piattaforma (#if ANDROID, #if IOS).

Per le basi di codice esistenti, .NET MAUI mantiene il 90% di compatibilità con Xamarin.Forms. La compatibilità delle API copre ContentView, ContentPage, Shell, NavigationPage, DependencyService e MessagingCenter. Le modifiche principali hanno interessato Device.StartTimer (sostituito da IDispatcher), Platform API (spostato in Microsoft.Maui.ApplicationModel) e i renderer obsoleti (sostituiti da Handlers).

Il processo di migrazione include cinque fasi. Prima — aggiornare Xamarin.Forms all'ultima versione 5.0. Seconda — sostituire .NET Standard 2.0 con .NET 6 o 8. Terza — eseguire Upgrade Assistant per la conversione automatica del progetto. Quarta — correggere il codice specifico della piattaforma nelle cartelle Platforms. Quinta — testare, specialmente renderer personalizzati e servizi di piattaforma.

Domande Frequenti

Cos'è Xamarin?

Xamarin è una piattaforma mobile Microsoft per lo sviluppo in C# per iOS, Android e Windows. Utilizza Mono Runtime per la compilazione del codice condiviso e offre due approcci: Xamarin.Forms (UI unificata tramite XAML) e Xamarin.Native (schermate native della piattaforma). Dal 2024, Xamarin è in modalità supporto.

In cosa Xamarin è diverso da Flutter?

Xamarin usa C# e .NET, eseguendo il rendering tramite controlli nativi (UIKit, View) attraverso binding. Flutter usa Dart e il proprio motore di rendering (Impeller), senza dipendere da componenti UI nativi. Flutter offre un aspetto coerente su tutte le piattaforme, mentre Xamarin offre l'aspetto nativo di ogni sistema operativo. Flutter è supportato da Google e detiene il 46% contro il 15% di Xamarin.

Dovrei iniziare un nuovo progetto su Xamarin nel 2024?

No. Microsoft ha interrotto il supporto per Xamarin il 1 maggio 2024. Tutti i nuovi progetti dovrebbero essere avviati su .NET MAUI — il suo successore, che è integrato in .NET 8 e riceverà aggiornamenti insieme alla piattaforma .NET. Per i progetti esistenti su Xamarin.Forms, si consiglia la migrazione entro 12–18 mesi.

Xamarin.Forms è più lento delle app native?

La differenza è trascurabile per le applicazioni normali. Xamarin.Forms aggiunge un overhead di rendering del 5–10% a causa dei livelli Managed-Wrapper-Native. I problemi sorgono con elenchi pesanti (ListView vs RecyclerView) e animazioni (usando Xamarin.Forms senza API di piattaforma). Si consiglia di utilizzare CollectionView (ha sostituito ListView) e animazioni native.

Posso usare librerie Kotlin in Xamarin?

Sì, tramite Android Bindings Library. Questo tipo di progetto .NET incapsula archivi AAR o JAR in binding C# con generazione automatica di classi e metodi. Le librerie Kotlin richiedono gestori aggiuntivi per coroutine e classi sealed, configurati tramite Metadata.xml nella Binding Library.

Riepilogo

  • Xamarin — la piattaforma Microsoft per lo sviluppo mobile in C#, costruita su Mono Runtime
  • Xamarin.Forms fornisce il 90–95% di codice condiviso tramite markup XAML con renderer nativi
  • Xamarin.Native dà il controllo completo sull'UI di ogni piattaforma al costo di schermate separate
  • Svantaggi: dimensione APK 25–35 MB, tempo di compilazione 2–5 minuti, ritardo nuove API
  • .NET MAUI — il successore di Xamarin.Forms con progetto singolo, .NET 8 e supporto 5 piattaforme
  • La migrazione a .NET MAUI avviene tramite Upgrade Assistant in 1–2 giorni per un progetto medio
  • Per i nuovi progetti, utilizzare .NET MAUI — Xamarin ha raggiunto la fine del ciclo di vita a maggio 2024

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche