Raspberry Pi et développement : .NET, avec ou sans Windows (épisode 5)

Mono permet d’accéder à .NET sur le Raspberry Pi. Windows 10 IoT ouvre également des voies dans ce secteur, avec un runtime .NET très performant.

Les plates-formes Java et .NET sont les plus populaires dans le monde des applications business. Le Raspberry Pi sera un excellent candidat pour développer à l’aide des solutions Microsoft.

La firme de Redmond propose en effet une mouture de son OS Windows 10 dédiée à cette carte mère ARM low cost. Windows 10 IoT Core n’est pas un OS desktop complet, mais il permet d’accéder à tous les périphériques du Raspberry Pi et de créer des applications proposant, au besoin, une interface graphique.

À bien des égards, développer pour Windows 10 IoT Core est similaire à la création d’applications pour Windows Embedded. Seul regret, il faudra passer par une version ‘complète’ de Windows pour la phase de mise au point du code, assurée par Visual Studio 2015 (ou d’autres offres, comme SharpDevelop). Pas de développement direct depuis le Raspberry Pi donc.

En plus du développement C/C++ et d’applications universelles en JavaScript, il sera aussi possible de créer du code en C# pour Windows 10 IoT Core. Le code .NET généré à l’aide de Visual Studio 2015 pourra ainsi être déployé sur le Cloud Azure de la firme, sur des PC et serveurs Windows, mais aussi sur des objets connectés, via Windows 10 IoT Core.

L’Open Source pour l’in situ

Pour développer directement avec les langages de la plate-forme .NET sur les différentes versions du Raspberry Pi, il faudra passer par des solutions Open Source : l’OS Linux Raspbian et le projet Mono, clone libre de la plate-forme .NET. Ce dernier est livré en standard dans les dépôts logiciels de Raspbian. L’environnement de développement MonoDevelop sera parfait pour créer des applications C# sur le Raspberry Pi.

Quid de l’interopérabilité avec l’offre de Microsoft ? Tout comme le code Java, le code .NET compilé est portable. La machine virtuelle Mono sera ainsi en mesure d’exécuter la plupart des applications .NET, y compris ASP.NET.

Attention toutefois aux applications desktop. Mono utilise en effet des frameworks différents de ceux de la plate-forme .NET signée Microsoft. Seul réel point de contact entre les deux, WinForms (Windows.Forms), une solution maintenant ancienne, mais qui est aussi efficace que portable. Une application WinForms bien écrite (sans appels natifs) fonctionnera indifféremment sous Windows, OS X, Linux… et Raspbian, l’OS de base du Raspberry Pi.

Linux ou Windows ?

Reste LA question : le code Mono pourra-t-il être déployé sur Windows 10 IoT Core ? A priori non, Windows 10 IoT Core demandant des applications universelles et non des exécutables classiques. Une courte phase d’adaptation/recompilation du projet suffira toutefois, dans la plupart des cas, à passer de Mono à Windows 10 IoT Core.

Et cette opération peut se révéler rentable. Lors de premiers tests, il s’avère que le code .NET s’exécute jusqu’à 5 fois plus rapidement sous Windows 10 IoT Core (.NET 4.5) que sous Raspbian (Mono 4.0.1). La vitesse de traitement sur un Raspberry Pi 2 est même très proche de celle obtenue sur un Core i5 (source). Une implémentation très efficace de la part de Microsoft.

Voir aussi nos quiz :
Raspberry Pi et développement : Apprendre à programmer (épisode 1)
Raspberry Pi et développement : Java SE, first class citizen (épisode 2)
Raspberry Pi et développement : C/C++ à toutes les sauces (épisode 3)
Raspberry Pi et développement : du calcul au Big Data (épisode 4)
Quiz Silicon.fr – Êtes-vous un expert des langages de programmation ?
Quiz Silicon.fr – Les outils de développement rapide (RAD)
Quiz Silicon.fr – 9 questions sur Java 9

Quiz Silicon.fr – L’informatique britannique, du BBC Micro au Raspberry Pi
Quiz Silicon.fr – Savez-vous tout sur le Raspberry Pi 2 ?
Quiz Silicon.fr – 10 questions sur le projet Debian