Archive

Articles taggués ‘StructureMap’

Architecture d’une application Windows en .NET

On m’a récemment demandé un avis sur l’architecture d’une application Windows écrite en .NET. Bien que l’exercice soit toujours difficile car cela dépend bien évidemment du contexte, je profite de ce billet pour donner quelques pistes de réflexions quand au choix des briques logicielles. Le demandeur venant du monde Java, mon discours sera orienté dans ce sens.

  • Outil de mapping objet relationnel : à mon sens, il y a aujourd’hui 2 alternatives en .NET :
    1. NHibernate, le cousin germain de Hibernate. Pour éviter la configuration dans les fichiers XML, je conseille le mode fluent ainsi que l’API de requêtage  LINQ . Un début de présentation est disponible ici. Sinon, il y a aussi les slides de la formation en soirée qui a été animée l’automne passé.
    2. Entity Framework. La dernière version reprend des principes de NHibernate, dont notamment la programmation par POCO (Plain Old C# Object), le lazy loading (chargement tardif). Comme je le mentionnais dans ce billet, plusieurs modes sont disponibles : Database first, Model First et maintenant Code First, très proche de Fluent NHibernate. Un atelier en soirée aura lieu fin mai sur ce thème.
  • Spring.NET : je trouve la question délicate, car cela dépend vraiment du besoin (IoC, programmation par aspects, boîte à outils,  framework MVC …). Comme son cousin Java, c’est une véritable boîte à outils très (trop ?) riche. Cette richesse est parfois synonyme de complexité et de lourdeur, par rapport à d’autres conteneurs IoC tels que NInject, Autofac, StructureMap, Castle Windsor ou Unity. Son principal inconvénient était sa configuration « XML based ». Ce point devrait être adressé avec la sortie de CodeConfig. Sa proximité avec son cousin est souvent un critère de choix pour des équipes mixtes (Java/NET).
  • NUnit : très proche de son cousin Java JUnit, il est également basé sur des attributes. Dans le monde ouvert, j’apprécie également MBUnit maintenant inclus dans le framework Gallio. Pour intégrer ces frameworks open-source dans un IDE tel que Visual Studio, je conseille test driven.net. Microsoft fournit également son propre framework,  qui ressemble beaucoup à NUnit et qui est très bien intégré dans Visual Studio. J’avoue l’utiliser très souvent. J’aime particulièrement la structuration par projet, qui fonctionne également pour tester des classes « internal ». J’aime également la facilité avec laquelle on peut écrire des tests orientés données, en prenant un fichier CSV pour indiquer les paramètres d’entrée et les paramètres de sortie.
  • Un équivalent à Mockito. Ne l’ayant pas utilisé sur un projet, la réponse risque d’être déplacée. Néanmoins, j’utilise parfois moq ou NMock. Je suis preneur d’un comparatif 😉
  • Pour la base de données, encore une fois je penche pour la facilité d’intégration et donc pour une solution SQL Server Express, ou SQL Server Compact, selon l’usage. Les deux solutions sont gratuites.

Je termine par un outil que je trouve très utile, qui est maintenant intégré à Visual Studio 2010 SP1 et qui permet de gérer des librairies externes, un maven like light : NuGet.