Outils de développement pour .NETSharpToolbox27 juin 2005
Fabrice Marguerie, MVP C#
2
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 !
Qui suis-je ?
3
4
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
5
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
6
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 ;-)
7
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
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
8
Les catégories
Les plus visitées1. Object-relational mapping2. IDE – IDE add-ins3. Code generation4. Code analysis – Standards verifiers5. ASP.NET
Les plus fournies1. IDE – IDE add-ins (62)2. Persistence - Data-tier (44)3. Reporting (41)4. Object-relational mapping (37)5. Internet and Communications (37)
9
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.
10
Les outils
Quelques outils– .NET Reflector– FxCop– Usine de développement– Génération de code– Mapping objet-relationnel
11
.NET Reflector
Visualisateur d’assemblages, décompilation
Essentiel !
Démonstration
12
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
13
FxCop
14
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
15
Bug tracking
Source control
Release management
Project management
Software factory
Quality toolstests
Developer
User
Releasemanager
Buildmanager
Projectmanager
Build tools
releases documentsrequests
Tester
DevelopmentRequest catalog
Monitoring
Support
Businessanalyst
SupportProduction
monitoringof all elements
16
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– …
17
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
18
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
19
Codesmith
Exemple basique
20
Codesmith
Exemple avec base de données
21
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
22
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>
23
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);
24
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
25
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