250 likes | 342 Views
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
E N D
Outils de développement pour .NETSharpToolbox27 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 • 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 • 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 • 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
Les catégories • Les plus visitées • 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
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 Businessanalyst Support User requests releases documents Request catalog Development Release management Releasemanager Bug tracking Tester Quality tools tests Project management Source control Software factory Projectmanager monitoringof all elements Build tools Developer Buildmanager
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 • 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 : • 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
Exemple basique Codesmith
Exemple avec base de données Codesmith
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 --> </class> </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 • 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