54 votes

La connaissance de C# est-elle utile dans un système Linux ?

Je connais C# et j'aime passer d'un système à l'autre et utiliser Linux. Puis-je utiliser C# pour créer des applications qui fonctionneront nativement sur Linux ? Que dois-je faire pour mettre à profit mes connaissances de C# dans un système Linux ?

Notez que je suis spécialisé dans Unity3D, mais je veux quand même créer des applications Linux en utilisant C#.

79voto

Eliah Kagan Points 111731

Oui, vous pouvez développer des logiciels sur Ubuntu, qui fonctionneront eux-mêmes sur Ubuntu, en C#. Les deux Mono y .NET Core soutien GNU/Linux systèmes comme Ubuntu. (Vous pouvez les utiliser sur d'autres distros comme Debian, Raspbian, Fedora, CentOS, Arch, Gentoo, et ainsi de suite). Le moteur de jeu Unity3D est également compatible avec Ubuntu, comme vous le savez probablement. Unity3D intègre le Mono .

Un certain nombre de paquets pour Ubuntu, installables avec le gestionnaire de paquets d'Ubuntu à partir de sources logicielles officiellement soutenues par la communauté, sont écrits en C# et utilisent Mono. Cela inclut le lecteur de musique Banshee l'application de prise de notes Tomboy l'éditeur de graphiques matriciels Pinta et le gestionnaire de mots de passe KeePass (depuis la version 2).

La plupart des éditeurs de texte, tels que Gedit, Vim et Emacs, possèdent une coloration syntaxique pour C#. MonoDevelop y Code Visual Studio sont deux environnements de développement intégrés populaires qui fonctionnent sur Ubuntu et prennent en charge le développement C#.

59voto

Finn Points 1396

Il est fort probable que vous tombiez sur http://www.mono-project.com/

Comme le À propos de Mono page dit :

Mono, la plateforme de développement open source basée sur .NET Framework, permet aux développeurs de créer des applications multi-plateformes avec une améliorer la productivité des développeurs. L'implémentation .NET de Mono est basée sur les normes de l'ECMA pour C# et le Langue commune Infrastructure .

En plates-formes supportées incluent Linux.

22voto

gorlok Points 322
  1. Vous pouvez maintenant développer des applications serveur sur Linux en utilisant C# ( .NET Core ), comme vous pouvez utiliser Java ou Python. Par applications serveur, j'entends principalement les applications web et les applications de services web (REST). Cela s'accorde parfaitement avec les conteneurs Linux ( Docker /K8s) et les nuages.
  2. Vous pouvez développer des applications de bureau avec C# en utilisant le cadre Mono (une implémentation .NET) et la boîte à outils GTK# (GtkSharp) (une enveloppe de GTK). De nombreux projets ont été développés sur cette base. Ce cadre a rencontré une certaine résistance de la part d'une partie de la communauté Linux dans le passé. Certaines distributions et utilisateurs ne voulaient pas d'applications Mono.
  3. Vous pouvez développer des jeux avec le moteur Unity en utilisant C# sur Linux. Unity Editor est encore expérimental sur Linux.

Alors, oui. La connaissance de C# peut être très utile sur les systèmes Linux aujourd'hui.

3voto

Juho Points 61

Vous pouvez même désormais créer des applications frontales multiplateformes (Linux, Mac, Windows, Android, iOS, UWP) basées sur XAML en utilisant .Net Core et un nouveau projet appelé Avalonia. Avalonia est en version bêta, mais fonctionne déjà très bien. Il est similaire à WPF, mais avec des améliorations de style du type CSS.

Je crois que sur Linux, Avalonia utilise actuellement Gtk, mais ils veulent passer à autre chose. L'informatique est mentionnée dans cette vidéo, mais je n'ai personnellement pas pu comprendre ce qu'il disait : https://www.youtube.com/watch?v=WESJUJWBLJ0

3voto

Sasan Points 141

Linux fournit ses API natives dans le langage de programmation C. Un programme Linux natif utilise ces API pour accéder aux fichiers, aux périphériques d'E/S, aux sockets (réseau), aux communications interprocessus, au threading, etc. Pour créer une application Linux native, vous devez écrire votre application en C, puis la compiler avec (très probablement) GCC pour obtenir un exécutable. Vous pouvez même aller plus loin et utiliser des bibliothèques d'interface graphique dans votre programme pour ajouter une interface graphique (GTK et Qt sont deux bibliothèques populaires) ou utiliser un système de packaging pour empaqueter votre application (comme les fichiers .deb et .rpm).

C#, F# et VB ont leur propre compilateur (qui produit normalement du code IL au lieu du code machine) et, au lieu d'utiliser directement les API natives de Windows ou de Linux (toutes deux en C), ils les entourent de leur propre enveloppe. Cela signifie qu'il doit y avoir une autre couche supplémentaire entre le code compilé et le système d'exploitation. Cette couche supplémentaire doit lire le code IL et le traduire en API natives de Windows, Linux ou macOS. Cette couche supplémentaire peut être .NET Framework, Mono ou .NET Core (actuellement juste .NET).

Maintenant, pour répondre à la question "C# est-il utilisable pour la programmation de systèmes Linux ?", dans la plupart des cas, oui.

Le .NET dispose de bibliothèques pour la gestion des fichiers, la mise en réseau, le threading et certains périphériques d'entrée/sortie. Maintenant, par exemple, disons que vous avez besoin d'accéder à Bluetooth dans votre application. .NET n'a pas d'API pour Bluetooth, donc dans ce cas vous avez deux options :

  1. Trouver l'API native en C et l'appeler en C#
  2. Rechercher dans NuGet pour voir si quelqu'un l'a déjà fait.

D'autres exemples seraient WiFi Direct, Gamepad, température du CPU, informations sur la batterie, caméra, GPS, capteurs de l'ordinateur portable, etc. Donc, pour les applications de bas niveau, vous devez vous débrouiller tout seul (c'est le cas même sous Windows, sauf si vous optez pour UWP). Pour de telles applications sur Linux, le C ou Python serait un bien meilleur choix.

Si vous voulez ajouter une interface graphique à votre application, .NET dispose de bibliothèques d'interface graphique mais uniquement pour Windows. Mono, quant à lui, dispose de liens pour GTK appelés GTK# mais, naturellement, GTK# sera toujours en retard sur le développement de GTK (ce qui n'est pas un problème, sauf si vous voulez les dernières fonctionnalités).

.NET 6 offre une autre solution pour les interfaces graphiques multiplateformes. Dans .NET 6, vous pouvez créer une application Blazor avec C#, HTML et CSS et utiliser Electron pour créer une application de bureau à partir de celle-ci (au moment où j'écris ces lignes, ce n'est pas encore prêt).

Pour résumer :

Les avantages de C# sur Linux

  • Vous utiliserez vos compétences existantes
  • Si vous vous en tenez aux bibliothèques .NET, votre application sera portable sous Windows et Mac.
  • Vous avez affaire à un langage moderne et propre plutôt qu'à un langage vieux de 50 ans (les programmeurs C purs et durs peuvent ne pas être d'accord :D).

Les inconvénients de C# sur Linux

  • De nombreuses API natives ne sont pas disponibles
  • Sur le papier, le code C natif serait plus rapide que le code C# dépendant du framework. Bien qu'il soit possible de compiler directement pour Linux, nous perdrions en portabilité et, avec le matériel actuel, les utilisateurs ne sentiraient pas la différence de toute façon.
  • Vos mains sont plus serrées pour une application GUI

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X