Outils de développement pour .NET SharpToolbox 27 juin 2005 Fabrice Marguerie, MVP C#
Qui suis-je ? MVP depuis avril 2004 Architecte logiciel sur .NET chez Alti Weblog : http://weblogs.asp.net/fmarguerie Articles sur DotNetGuru Présentations sur .NET Logiciels : PageMethods (metaSapiens) Sites non techniques : ClairDeBulle, OlympicBoard et SharpToolbox bien-sûr !
Les besoins Le frawework .NET et Visual Studio font beaucoup mais pas tout Toujours besoin de plus de simplification productivité intégration Des outils pour toutes les phases d’un projet Mais aussi des bibliothèques de code
SharpToolbox Commencé sur mon weblog en mars 2003 Rapidement transformé en site dédié Liste les outils, bibliothèques et add-ins Ne liste pas les composants graphiques pour l’instant
SharpToolbox Aujourd’hui : le site de référence plus de 733 outils, dont 214 bibliothèques ! 49 catégories en moyenne 1900 pages vues par jour en semaine Existe désormais pour… Java : JavaToolbox ;-)
Les catégories ADO.NET providers AOP ASP.NET Builds Charting Code analysis - Standards verifiers Code conversion - Language migration Code coverage Code generation Code protection - Obfuscation Code versioning - Source control Compilation Compression Database management DBMS Decompilation Deployment - Installation Documentation - Code commenting Frameworks Geoprocessing Graphics IDEs - IDE add-ins Internet and communications Interoperability Languages Licensing Localization Mainframes - Legacy systems Math - Logic - AI - Rules Miscellaneous Modeling - Architecture - MDA - UML MVC Object browsing - Assembly viewers Object-relational mapping Page templating Persistence - Data-tier Profiling - Debugging RAD - Dev automation Refactoring Regular expressions Remoting Reporting Scripting Security Sound - Audio SVG - XAML Testing Tracing - Logging XML
Les catégories Les plus visitées Les plus fournies Object-relational mapping IDE – IDE add-ins Code generation Code analysis – Standards verifiers ASP.NET Les plus fournies IDE – IDE add-ins (62) Persistence - Data-tier (44) Reporting (41) Object-relational mapping (37) Internet and Communications (37)
Les outils Souvent intégrés à Visual Studio Beaucoup sont gratuits Beaucoup sont open source Certains sont inspirés du monde Java JUnit/NUnit, Ant/Nant, Hibernate/NHibernate, CruiseControl/CruiseControl.NET, etc.
Les outils Quelques outils .NET Reflector FxCop Usine de développement Génération de code Mapping objet-relationnel
.NET Reflector Visualisateur d’assemblages, décompilation Essentiel ! Démonstration
FxCop Analyse de code, vérification de normes Objectif : améliorer la qualité Principe : analyse des assemblages pour évaluer le respect de conventions de dénomination la qualité de la conception les risques de sécurité des risques de mauvaises performances Paramétrable Extensible Intégré à Visual Studio 2005
FxCop
CruiseControl.NET Usine de développement, intégration continue Objectifs automatiser améliorer la qualité mesurer la qualité industrialiser Principe orchestration intégration des outils rapports, alertes
Production Support Monitoring Request catalog Development Business analyst User Support requests releases documents Request catalog Development Release management Release manager Bug tracking Tester Quality tools tests Project management Project manager Source control Software factory monitoring of all elements Build tools Developer Build manager
CruiseControl.NET Ce qu’on peut trouver dans une "chaîne de production" : Compilation (Nant) Analyse de code (FxCop,Vil) Tests unitaires (NUnit, GUnit) Tests de non régression Tests de performance Analyse de la couverture de code (Clover.NET, NClover) Génération de documentation (NDoc) Génération des programmes d’installation …
Codesmith Génération de code Objectifs Avantages automatiser l’écriture de certaines parties d’une application Obtenir du code fortement typé Avantages gain de temps code consistant Principe : application de templates de code sur des méta-données
Codesmith Exemples de mise en œuvre : Démonstration génération d’une couche de persistance génération de collections typées génération d’un module d’administration Génération d’un prototype Démonstration
Codesmith Exemple basique
Codesmith Exemple avec base de données
Mapping objet-relationnel Objectif : effectuer la mise en correspondance entre modèles objets et relationnels Principe: vous fournissez les classes, la base et la configuration du mapping, l’outil fait le reste
Mapping objet-relationnel Exemple de fichier de configuration <?xml version="1.0" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" namespace="Eg" assembly="Eg"> <class name="Cat" table="CATS" discriminator-value="C"> <id name="Id" column="uid" type="Int64"> <generator class="hilo"/> </id> <discriminator column="subclass" type="Char"/> <property name="Birthdate" type="Date"/> <property name="Color" not-null="true"/> <property name="Sex" not-null="true" update="false"/> <property name="Weight"/> <many-to-one name="Mate" column="mate_id"/> <set name="Kittens"> <key column="mother_id"/> <one-to-many class="Cat"/> </set> <subclass name="DomesticCat" discriminator-value="D"> <property name="Name" type="String"/> </subclass> </class> <class name="Dog"> <!-- mapping for Dog could go here --> </hibernate-mapping>
Mapping objet-relationnel Exemple de code IList cats = session.CreateCriteria(typeof(Cat)).List(); Cat cat = (Cat) session.Load(typeof(Cat), i); cat.Mate = new DomesticCat("Bob"); cat.Kittens.Add(new Cat(...)); session.Save(cat);
Les bibliothèques Bibliothèques techniques Mais aussi métier Traçage (exemple : log4net) Conversion de fichiers, reporting Compression Communication (mail, FTP, sockets, RSS, etc.) Mais aussi métier Finance Calcul, mathématiques, logique Multimédia
Conclusion Une richesse exceptionnelle N’hésitez pas à utiliser des outils tiers pour vous assister Tout ne vient de base ni forcément de Microsoft Il n’est pas toujours évident de trouver le bon outil Visitez SharpToolbox Vos commentaires sont les bienvenus Soumettez les outils manquants