Vous aimez bien économiser sur votre hébergement en prenant des serveur linux mais vous voulez faire un site en ASP.NET? Vous aimeriez être sûr que votre application avec mono pourrait tourner sous mac OSX? Vous codez avec Visual Studio et ne comptez pas changer d'IDE?
Le projet mono ne vous oublie pas, vous pouvez simplement depuis Visual
Studio en quelque clics lancer l'application .NET sur votre framework
mono, sur un Mono distant, débugger dans une instance Mono distante ou même faire un contrôle du support des classes appelées grâce à MoMA... Mono n'est pas une pâle copie mais une ré-implémentation de la norme avec des librairies en plus et d'autre en moins, c'est pourquoi il faut rester conscient de la necessité de tests avant de passer sur mono une application qui paraissait fonctionelles sur .NET...
Si vous voulez faire du GTK#, que vous êtes sur Windows et que votre
objectif est une application .NET multiplateforme, peut être qu'une des fonctionnalités de MonoDevelop vous a
tapé dans l'oeil, rassurez vous, une version Windows de MonoDevelop est
aussi en développement et déjà téléchargeable, cette version tourne
avec la plateforme .NET de Microsoft et des bibliothèques Mono
complémentaires. Le travail de portage pour utiliser le débugger de .NET et enlever les dépendances de gnome (pour recentrer vers du GTK)
Au final, l'équipe de Mono travaille à vous amener son travail pour vous aider à faire des applications multiplateforme.
MonoDevelop pour Windows
Plugin VisualStudio
Neuf personnes se sont engagées à contribuer au projet Mono auprès d'un mentor de l'équipe Mono et de Google. Leurs contributions seront financées par le projet Google Summer Of Code.
Ils sont tous venus avec des projets prédéfinis qui seront probablement intégrés à Mono en 2.6 ou 2.8 en fonction de la qualité du rendu. Voici les points pour lesquel les utilisateurs du projet Mono pourront remercier Google très bien tôt:
- Une amélioration et mise à jour de Mono ParallelFX. Éventuellement le développement d'un outil d'annalyse d'applications multi-tâches tel que Chess (utilisé pour répérer les éventuels problèmes de partages de mémoire entre les tâches).
- Un outil d'optimisation du langage intermédiaire (CIL) c'est à dire du .exe ou .dll semi-compilé qui contrairement au compilateur temps réel (JIT) peut affiner ses optimisations quitte à prendre plus de temps.
- Création d'une librairie GIT. GIT est un gestionnaire de versions créé par Linus Torvalds. Git est à SVN ce que bittorent est au Warez.
- Un portage de Mono.SIMD pour processeurs 64 bits. Pour l'instant Mono.SIMD est pour systèmes x86.
- Import de fonctionnalités du Visual Basic 9 dans le compilateur VB du projet Mono
- Un moyen de créer des procédures Postgre en CIL pour permettre d'abstraire encore les développeurs du SQL y compris pour faire des procédures stockées.
Mais pour ceux qui aiment les outils de développement poussés et multi-plateforme, MonoDevelop n'est pas oublié:
- Un générateur de classe Graphique, je suppose UML. L'exécutant du projet commencera par créer un Widget Canevas inter-opérable qui cherchera à rester suffisamment générique pour être intégré à GTK# à l'avenir. Ce contrôle pourait être fait en collaboration avec le projet suivant.
- Un afficheur/éditeur graphique de base de données. remarque: MonoDevelop intègre déjà de quoi se connecter graphiquement à des bases de données et afficher dans des tables des retours de requêtes, mais là il s'agit d'une représentation de structure avec les liens entre les tables et autre.
- Pour les utilisateurs de Mylyn sur eclipse, un plugin MonoDevelop permettra une intégration similaire avec des outils de gestion de projets en ligne ou hors ligne (Bugzilla/Trac).
Remarque: Ubuntu 9.04 jaunty jackalope est sorti: http://releases.ubuntu.com/9.04/
Effectivement, pour la gestion de grosses tables, de matrices, l'usage
en calculs intensifs sur de super-ordinateurs, Mono présente des
avantages sur .NET et Java.
On peut constater que même si la
norme du .NET permet l'usage de long en index pour des tables, Windows
64 bits lui-même ne gérera pas de tables de plus de 2,147,483,648
entrées contre 9,223,372,036,854,775,808 pour mono (autrement dit plus
de quatre milliards de fois plus grande).
Java lui a une norme qui ne permet pas l'usage de tables aussi grandes, il faudrait modifier le bytecode pour lui permettre d'arriver à la même limite que Mono.
Mono est compatible avec plusieurs architectures dont ARM et MIPS.
On peut voir des serveurs utilisant des processeurs MIPS moins cher et moins gourmands que les processeurs Intel/AMD.
Voici un exemple de constructeur (sicortex.com) dont je traduis la phrase de spécifications sur les processeurs de son serveur haut de gamme:
- " Ces serveurs contiennent 5,832 processeurs MIPS 64 bits d'1.4GFlops, chacun consommant seulement 900 milli-Watts."
Mono permet de bénéficier pour les calculs vectoriels et matriciels
des optimisations SIMD des processeurs modernes. Cette optimisation
permet de rattraper le retard de performance par rapport à du code C si
ce dernier est compilé sans SIMD.
Pour finir on devrait voir
arriver des outils de gestion de tâche intéressants avec Mono 2.6, ces
fonctions étant particulièrement utilisées dans les jeux vidéos et un
peu technique et de plus étant part d'une nouvelle version de Mono, ils seront objets d'un autre article.
Et oui, l'équipe Mono n'as pas eu à re-faire l'intégralité de ce set d'outils facilitant la mise en place de projets respectant l'architecture de programmation MVC: Modèle Vue Contrôleur.
Ce set d'outils embarque un plug-in Visual-Studio, un Template Visual Studio (projet vide), et la bibliothèque contenant des classes .NET (assemblie), les fichiers javascript et autre.
Comment mettre en place un site ASP.NET MVC avec Linux grâce à Mono:
Il faut au moins mono 2.4 et les références aux assemblies suivantes:
-
System.Web.Abstractions
-
System.Web.Extensions
-
System.Web.Routing (Pour ces trois premières références, il faut le paquet
mono-extras sous OpenSuse.)
-
System.Web.Mvc (Si vous utilisez MonoDevelop, cette assemblies est dans le plugin MVC, mais elle sera intégrée dans Mono 2.4.1 et Mono 2.6)
Vous pouvez ajouter le plug-in MVC dans MonoDevelop grâce au gestionnaire de greffons du menu "Outils":
Ceci vous installe le template, l'assemblie et ajoute quelques fonctions contextuelles à MonoDevelop.
Nous pouvons créer un site en faisant une Nouvelle solution MVC:
Nous avons donc un projet complet qui respecte l'architecture MVC grâce au Template.
Nous pouvons graphiquement ajouter des vues partiellement générées à la demande.
Bref si le fonctionnement vous intéresse, vous pouvez suivre la suite d'articles de Bertrand Vergnault à ce sujet dont voici le premier: ASPNET-MVC-Partie-1-Presentation-de-MVC
Pour ma part, j'espère que cette petite présentation vous aura intéressé.
Comme on me l'avait fait remarquer, mon blog parle de Mono mais je n'y ai jamais réellement donné une définition claire de ce que c'est. La plupart d'entre vous
devez savoir ce que c'est pour tomber sur mon blog mais, j'essaye de
cadrer un public assez large qui éventuellement chercherait plus de la
culture informatique que de la technique.
Définir et positionner Mono dans le monde informatique de manière illustrée et claire prend plusieurs pages, j'en ai fait le premier tutoriel Mono sur Dotnet-France.
Plutôt que d'être original, j'ai appelé ce chapitre "Introduction".
Comme Mono évolue beaucoup et que je suis d'assez prêt son actualité,
ce tutoriel est assez régulièrement mis à jour. La validation est
dans l'architecture actuelle par-contre parfois moins rapide que moi
.
Voici l'adresse des tutoriels Mono, la définition est le chapitre d'introduction: http://www.dotnet-france.com/Cours/Mono.html
Et oui, Mono 2.4 est sorti aujourd'hui officiellement accompagné de MonoDevelop 2.0.
La liste de changements de Mono a déjà été évoquée, néanmoins, certains changements inatendu comme la refonte du site de MonoDevelop grâce au CMS ASPX/Mono de la société MindTouch : Deki Open Source Edition.
Pour ceux qui veulent pouvoir utiliser toutes les applications et tous les outils Mono dès maintenant et facilement, l'Appliance (qui est une image disque préinstallée pour faire des machines virtuelles) est aussi disponible au téléchargement.
Cette image intègre quelque des plus fameux logiciel gratuits/libres Mono.
Ces logiciels vont du lecteur de musique au jeu d'entrainement cérébral en passant par le client Torrent, le logiciel de prise de notes et le lanceur d'application.
Mais outre les logiciels traditionnels, cette image intègre aussi des sites APSX dans un dossier prévu à cet effet, la plupart sont des CMS compatibles .NET.
Pour finir le set, l'image intègre le set d'outil classique du projet Mono : MonoDevelop 2.0, l'interpréteur C#, le désassembleur...
Le changelog de MonoDevelop 2.0 (en)
Le changelog de Mono 2.4 (en)
Téléchargements
Qyoto qui est le Bind mono pour application QT était un projet intéressant, mais inutilisé donc relativement voué à l'abandon.
Heureusement un projet est né: Synapse. Ce projet est donc le premier de telle ampleur à utiliser Qyoto. Le mainteneur principal de Synapse (Eric Buttler) a aussi développé un plug-in
pour monodevelop nommé Qyotodevelop. Il permet d'importer les fichiers
UI de QT Designer et donc de créer l'interface graphiquement.
Ce projet est un client de messagerie instantanée intégrant un certain
nombre de services web (Flicker, Youtube, Twitter...), mais aussi
Banshee qui est un gestionnaire de bibliothèque musicale pour afficher
le morceau en cours de lecture.
Remarque:
Ceux qui ont vu antitrust auront compris la référence. Je précise pour
l'anecdote que Miguel De Icaza a participé à ce film et y figure même
un bref instant dans son propre rôle. Pour rappel c'était un film ou la
société Synapse qui s'occupait de gérer tout ce qui est communication
et multimédia sur internet volait du code GPL et parfois venait à tuer
pour éviter que ça se sache..
Image extraite du film
Heureux soient les amateurs du module MVC d'asp.NET,
vous avez apprécié la simplicité d'organisation du texte, la
possibilité d'organiser le code en plein milieux de texte en ayant une
sortie avec du code interne centrée autour du texte et non autour du
code.
T4 est basé sur ASP.NET,
il permet d'appliquer une transformation similaire à celle que l'on
pourrait porter sur un site .NET dont les balises seraient en HTML...
Bien que ce ne soit pas très connu il parait que c'est déjà pas mal utilisé, supporté sous Visual Studio mais aussi MonoDevelop, le T4 apporte un moyen simple de mettre en forme du texte.
L'extension de fichier utilisée pour les texts templates est .tt.
Voici un exemple utilisé pour générer les RPM de mono.
Ma découverte et l'image sont issus de cet article: http://tirania.org/blog/archive/2009/Mar-10.html
LIQ2SQL est bien connu des amateurs de .NET, mais SQL serveur
n'étant pas la base de donnée la plus utilisée par les programmes basés
sur mono, DbLinq apparait comme bonne alternative. Elle a l'avantage de
gérer en plus d'SQL Server les bases de données SQLite, firebird, postgreSQL, MySQL et Oracle tout en restant compatible.
Il faut donc spécifier le DbLinqProvider qui est pour des raisons de compatibilité par défaut SQL serveur.
Pour plus d'informations: http://www.jprl.com/Blog/archive/development/mono/2009/Mar-12.html
Cette assembly n'est pas encore qualifiable de stable, elle devrait arriver avec mono 2.6 en septembre qui sera probablement une release plus riche que 2.4...
Remarque: Mono 2.4 sortira finalement en fin de mois avec monodevelop 2.0
Effectivement, Jaunty intègre déjà la dernière béta de Monodevelop.
Cette réalité présage une adoption rapide de la nouvelle version de l'IDE qui apporte effectivement de très interessantes nouveautés!

Merci à Canonical de nous offrir ça dès à présent packagé proprement.