lundi 8 septembre 2008

Castle & Monorail : premiers pas

Le travail est un trésor. Le travail des autres, cela va de soi.. (Henri Jeanson)

Mise à jour logicielle

Première approche de Monorail : j'ai tout à réinstaller !

Gildas m'a montré une partie du projet sur lequel il travaille en ce moment, un site de jeu flash (Octogames.fr).

Il se sert de pas mal d'outils, de frameworks divers et variés, et le tout cohabite joyeusement sous VS.Net 2008 en se servant du framework.Net 3.5.

Cohabite ? Oui car les composants de MonoRail sont open-source, ce qui signifie qu'on peut les compiler. Etant un développeur exigeant et curieux, je ne vais bien évidemment pas passer à côté de cette opportunité de voir ce qui se passe de l'autre côté du miroir. Il faut que je travaille avec les sources de ces librairies dans mon projet global. Donc il me faut le framework 3.5

J'ai eu des mauvais retour sur l'intégration du framework 3.5 dans Visual Studio 2005 (que j'utilise en ce moment). Me voilà donc parti pour une longue après-midi de boulot pour mettre tout à jour sur mon ordi de travail.

  • Désinstallation de tous les plug-ins de Visual Studio.
  • Désinstallation des applications qui s'appuient dessus, pour éviter les problèmes de compatibilité.
  • Nettoyage de toutes les applis qui ne servent plus sur mon disque C, car le nouveau VS.Net prend plus de place que l'ancien.
  • Tant qu'à faire, puisque j'ai de la place, profitons-en pour défragmenter...

Inutile de dire que le premier cours sur Monorail a été purement théorique, je n'ai rien pu coder de mes mains.


Concepts

Programmation par attributs

Me voilà bien ennuyé. Comment résumer ce que m'a montré Gildas se perdre dans les détails ?

Pour simplifier je dirais qu'on a commencé par un débat sur le bien fondé de la programmation par attributs, qui s'approche de la programmation orientée aspect au détriment de la programmation orientée objet.

Les attributs permettent d'injecter des méta-données à des classes, ce qui se traduit concrètement par de l'ajout de code ou des comportement aux objets concernés.

Je reconnais que ce mécanisme permet de simplifier certaines parties du code, mais à quel prix ? L'inconvénient majeur c'est de rendre le code un peu plus ésothérique, un peu plus élitiste. Il devient bien plus complexe à appréhender et à maintenir. La quantité d'effets de bords potentiel en devient inquiétante, à tel point que je serait très inquiet de confier le support d'une plateforme sur-exploitant ces mécanismes à un junior.

On a fini par tomber d'accord : à utiliser avec modération

ORM, nHibernate et ActiveRecord

Pourquoi ce délire sur les attributs ? Pour ActiveRecord, le framework d'ORM du projet Castle.

ORM : kesako ?
L'article de wikipédia n'explique pas très bien le concept d'ORM, je vais devoir m'y coller.

L'Object Relationnal Mapping consiste à créer une correspondance entre des tables d'une base de donnée relationnelle et un ensemble de classes dans une librairie programmée en objet.
L'utilisation principal de cette correspondance est la simplification de la persistance d'objets en base, à savoir l'enregistrement et le chargement des données.
Par extension, l'ORM induit (plus ou moins pour éviter les remarques désagréables des puristes) la notion de génération automatisée d'une partie du code objet ou d'une partie du code SQL permettant de créer/manipuler les objets en base.

En bref : tu codes, et la BDD est gérée automatiquement, sans coder une ligne de SQL ou ouvrir ton SGBD ;)
En tout cas, c'est mon but.

Il est temps de corriger ce que j'ai pu écrire précédemment : je ne m'intéresse pas que à Monorail, mais à toute la suite d'outils proposés par le projet Castle.

Monorail c'est la partie interface graphique et rendu web. ActiveRecord c'est la partie d'accès aux données, qui s'appuie sur le célèbre nHibernate. ActiveRecord permet de s'abstraire de la partie configuration de nHibernate par l'utilisation notamment d'attributs dans le code C# pour rendre ses petits objets persistants. Tout un programme !

L'aperçu que j'en ai eu m'a permis de constater que pratiquement tous les cas auxquels je pensais étaient gérés. Je vois donc ce framework comme un outil libérateur, la partie donnée étant le plus laborieux dans le dernier projet sur lequel j'ai travaillé (http://www.lekiosque.fr).

Anything else ?

Non, on va s'arrêter là, je n'ai pas assez creusé les autres concepts qu'on a pu voir lors de notre première session pour en faire une explication cohérente.

Je vais finir la mise à jour de ma machine et installer le projet Castle sur ma machine. La suite pour bientôt.

Aucun commentaire:

Enregistrer un commentaire