Pourquoi C# n'est pas réservé à Windows ?
\n\nPendant longtemps, C# a été exclusivement associé à l'écosystème Microsoft et à Windows. Les développeurs souhaitant écrire pour Linux ou macOS se tournaient vers Java, Python ou JavaScript. Mais les temps ont changé. Avec la sortie de .NET Core (puis .NET 5/6/7/8), Microsoft a fait un pas décisif vers le monde de l'open source et du multiplateforme.
\n\nAujourd'hui, C# est un langage puissant et moderne avec lequel vous pouvez créer de tout : des utilitaires console pour serveur Linux aux applications mobiles pour iOS et Android. Et tout cela avec un seul langage, un seul IDE (Rider ou VS Code) et, surtout, une logique métier unifiée.
\n\nDans cet article, nous allons voir quelles technologies permettent d'écrire des applications multiplateformes en C#, les comparer, montrer du code réel et donner des conseils pratiques. Si vous pensez que C# est "réservé à Windows", préparez-vous à être surpris.
\n\nL'évolution du multiplateforme dans .NET
\n\nLe chemin de C# vers le multiplateforme a été long. Rappelons les principales étapes :
\n\n- \n
- Mono (2004) — première implémentation open source de .NET Framework pour Linux. Cela fonctionnait, mais avec des limitations. \n
- Xamarin (2011) — a permis d'écrire des applications mobiles en C# pour iOS et Android. Une véritable avancée. \n
- .NET Core (2016) — framework entièrement réécrit, modulaire et multiplateforme. Code ouvert. \n
- .NET 5+ (2020) — unification de toutes les branches : .NET Framework, .NET Core et Xamarin fusionnés en un seul .NET. \n
- .NET MAUI (2022) — évolution de Xamarin.Forms pour créer des interfaces utilisateur natives pour toutes les plateformes. \n
Aujourd'hui, en 2024, nous disposons d'une boîte à outils mature pour le développement sur toutes les plateformes. Examinons les principales options.
\n\nPrincipales technologies de développement multiplateforme en C#
\n\nLe choix de la technologie dépend de ce que vous développez exactement. Nous distinguons quatre directions principales :
\n\n1. .NET MAUI — applications natives mobiles et de bureau
\n\n.NET MAUI (Multi-platform App UI) est un framework pour créer des interfaces utilisateur qui fonctionnent sur Android, iOS, macOS, Windows et (expérimentalement) Linux. Vous écrivez le balisage XAML et la logique C# une seule fois, et vous obtenez des applications natives en sortie.
\n\nExemple de code : une simple application de compteur
\n\n<!-- MainPage.xaml -->\n<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"\n xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"\n x:Class="MauiApp1.MainPage">\n <VerticalStackLayout Padding="30" Spacing="25">\n <Label Text="Bonjour, multiplateforme !"\n FontSize="32"\n HorizontalOptions="Center"/>\n <Label x:Name="CounterLabel"\n Text="0"\n FontSize="48"\n HorizontalOptions="Center"/>\n <Button Text="Cliquez-moi"\n Clicked="OnCounterClicked"\n HorizontalOptions="Center"/>\n </VerticalStackLayout>\n</ContentPage>\n\n// MainPage.xaml.cs\nnamespace MauiApp1;\n\npublic partial class MainPage : ContentPage\n{\n private int _count = 0;\n\n public MainPage()\n {\n InitializeComponent();\n }\n\n private void OnCounterClicked(object sender, EventArgs e)\n {\n _count++;\n CounterLabel.Text = _count.ToString();\n }\n}\n\nCe code fonctionnera sans modification sur un iPhone, un smartphone Android, un MacBook et un PC Windows. Pour Linux, une configuration supplémentaire est nécessaire, mais la communauté travaille activement sur ce point.
\n\n2. Avalonia UI — applications de bureau pour Windows, Linux et macOS avec un design unique
\n\nAvalonia est un framework open source inspiré de WPF, mais entièrement multiplateforme. Sa principale caractéristique : il n'émule pas les contrôles natifs, mais dessine sa propre interface via SkiaSharp. Cela donne une