400 likes | 475 Views
LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0. Stéphanie Hertrich – Microsoft Florent Santin – Access It IDF. Idée générale de la session. Donner des outils aux développeurs en mode projet applicables sans changer de technologie applicative Gagner en productivité
E N D
LAN303Ce qu’il ne fallait pas rater depuis .Net 2.0 Stéphanie Hertrich – Microsoft Florent Santin – Access It IDF
Idée générale de la session • Donner des outils aux développeurs en mode projet applicables sans changer de technologie applicative • Gagner en productivité • Liste totalement arbitraire (et non exhaustive) de sujets choisis par nous • 1h c’est peu !!
Déroulement de chaque sujet • Cas d’application (Où et Quand) • Comment vous faites aujourd’hui (Quoi) • Comment ça s’utilise ? Démo (Comment) • Pourquoi c’est mieux (Pourquoi)
Liste des sujets Code • Méthodes anonymes, lambdas • Les méthodes d’extension Requêtage et accès aux données • LINQ • Entity Framework Injection de dépendances • MEF (ManagedExtensibility Framework) Parallélisme et asynchronisme • TPL (TaskParallel Library) • Async / Await Outils de Dev / ALM • Le diagramme de couche (Explorateur d’architecture) • L’Extension Manager Maquettage d’applications • SketchFlow
Les méthodes anonymes et expressions lambda Où et Quand ? • Ecriture et utilisation de delegués • Sur la gestion de mes évènements Comment je faisais avant: • Création d’une méthode qui correspond a la signature de l’événement • Abonnement
Démo Méthodes anonymes et expressions lambda
Les méthodes anonymes et expressions lambda Pourquoi c’est mieux: • Simplification de l’utilisation des délégués • Moins de code • Meilleure lisibilité • Utilisation de variables dans la portée de la méthode appelante
Méthodes d’extension Où et Quand: Je veux ajouter du comportement à une classe Foo ou une interface IFoo que: • Je ne peux pas modifier car je n’ai pas les sources (ex : la classe String) • J’ai les sources, mais je ne veux pas sortir une nouvelle version de l’assemblie (ex: appli. déjà installée chez les clients, problématique de versionnement)
Méthodes d’Extension Comment je faisais avant ? • Je créais une méthode statique qui prenait en paramètre une instance de Foo • Je crée une nouvelle classe qui hérite de Foo (si pas sealed !) • Je complète Foo si déclaré en partial • Avec une méthode d’extension ? • Méthode statique dans une classe statique qui étend Foo/IFoo
Démo Méthodes d’extension : Etendre le type int Etendre l’interface IList<T>
Méthodes d’Extension Pourquoi c’est mieux ? • Intellisense sur Foo • Permet de compléter une classe dont je n’ai pas les sources, qu’elle soit partial ou non, sealed ou non • Fonctionne sur les interfaces • Permet de se créer une bibliothèque perso qui étend les types système qu’on réutilise régulièrement dans les projets : Caisse à Outils
LINQ Où et Quand: • Lorsque je manipule des collections de données au sens large (Objets, Base de données, XML…) Comment je faisais avant: • 1 type de source de données = 1 syntaxe (SQL, XPath, Listes d’objets…)
LINQ var q = from x in y where x > nselect x Providers Objets SQL XML Entities …
Démo LINQ
LINQ Pourquoi c’est mieux : • Langage de requêtageunifié • 1 seule syntaxe pour requêter différentes sources • Objets, SQL, Entityou tout autre « provider » • Filtrage des données à la source
Entity Framework Où et Quand ? • Conception d’une couche d’accès aux données • Mappeur Objet / Relationnel (ORM) Comment je faisais avant: • Utilisation de provider d’accès aux données • Ecriture des requêtes SQL depuis .NET (mappingObjet / base de données)
Entity Framework Base de données Entitées Mapping A A B B C C
Entity Framework Base de données Entitées Mapping A A B D C C
Démo Entity Framework
Entity Framework Pourquoi c’est mieux : • Plus de SQL à écrire !!! • Abstraction par rapport au provider de BD et par rapport au schéma de la base • Basé sur LINQ • Meilleur lisibilité / maintenabilité • Meilleur productivité (intellisense) • Modification du mapping possible sans recompilation • Très bien intégré dans Visual Studio: clic, clic, clic
ManagedExtensibility Framework : La théorie Quand ? • Développement par composant (plug-in) • Quand je veux pouvoir compléter mon application a posteriori sans la recompiler Comment je faisais avant ? • Instanciation dynamique : Assembly.Load, CreateInstance, Activator,…
MEF : Compléter les actions d’un robot IRobot.dll • IAction • string Nom • Action DoIt() Robot.dll MyRobot Reculer Avancer AddOn2.dll AddOn.dll Tourner Faire le café Serrer le main
Démo MEF : compléter les actions possibles pour un robot
MEF • Pourquoi c’est mieux ? • Mécanisme d’Injection de dépendances • Développement Orienté plug-in • Couplage faible • Détermine les classes à instancier manuellement, par configuration ou automatiquement • Permet de compléter une application existante sans la recompiler, par simple apport de dll
TaskParallel Library • Où Quand ? • Exécuter du code en parallèle • Pour répartir la charge sur plusieurs processeurs • Pour libérer le thread du dispatcher : UI réactive • Comme je faisais avant : • Threads, synchronisation • Avec la TPL : • Mécanisme de gestion et de synchronisation de tâches
Démo TPL : Exécuter 3 tâches en //
TPL • Pourquoi c’est mieux ? • On exploite au maximum les machines multi-cores • Libère le thread de l’UI : interface plus réactive • Mécanisme de gestion et de synchronisation de tâches • Extensions parallèles et synchrones avec PLinq, Parallel.ForEach, …
Diagramme de couche Où et Quand ? • Comprendre rapidement une architecture • Maintient d’une architecture cohérente Comment je faisais avant ? • Création de document d’architecture sur outils tiers • Revue de code pour validation le bon respect Quoi et pourquoi ? • Explorateur d’architecture: comprendre • Diagramme de couche: garantir
Démo Analyse de l’architecture d’une application
Diagramme de couche Pourquoi c’est mieux : • Complétement intégré dans Visual Studio 2010 Ultimate • Validation en continue à la compilation et lors de l’intégration continue
Extensions Manager Où et Quand ? • Adapter l’utilisation de l’IDE à mes besoins • Utilisation de modèles et composants tiers Comment je faisais avant ? • Recherche sur forum / blogs pour trouver les meilleurs Addin • Veille technologique pour les mises à jour de chacun Quoi et pourquoi ? • Le gestionnaire d’extensions de Visual Studio 2010 • Trouver simplement les Addins pertinents • Installation / mise à jour / suppression rapide d’addins
Démo Visual Studio 2010 Productivity Tools
SketchFlow : Théorie 1/2 • Quand : Maquettage pour validation avec le client (ou marketing) • Comment je faisais avant : • Je commence à coder l’application en mode jetable pour avoir qq chose de montrable rapidement (mais je ne la jette jamais et ça devient la base de mon projet ) • Je m’arrête aux diagrammes UML (use cases, diagrammes de séquence, d’activité) dans le meilleur des cas : pas parlant pour le client ou le marketing • J’utilise Powerpoint, Paint, …
Démo SketchFlow (Blend 3, 4)
SketchFlow : Théorie 2/2 • Pourquoi c’est mieux ? • Outil dédié au maquettage : résultat rapide, mock pour les jeux de données • Pas de branding : le client se concentre sur le déroulement des écrans et l’aspect fonctionnel • Annotations et Versionnement • Interaction avec TFS et Sharepoint • Pensé pour WPF, Silverlight mais pas que…
Les liens utiles • EntityFramework : http://bit.ly/dWiKro • MEF : http://mef.codeplex.com/ • TPL : http://parallelpatterns.codeplex.com/ Nos Blogs : http://blogs.msdn.com/stephe http://blogs.developpeurs.org/azra
MSDN et TechNet: l’essentiel des ressources techniques à portée de clic • Portail administration et infrastructure pour informaticiens • Portail de ressources technique pour développeurs http://technet.com http://msdn.com