Date.

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

date

LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0 Stéphanie Hertrich – Microsoft Florent Santin – Access It IDF date

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 !! date

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) date

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 (Managed Extensibility Framework) Parallélisme et asynchronisme TPL (Task Parallel Library) Async / Await Outils de Dev / ALM Le diagramme de couche (Explorateur d’architecture) L’Extension Manager Maquettage d’applications SketchFlow date

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

Méthodes anonymes et expressions lambda Démo Méthodes anonymes et expressions lambda date

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 date

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 > n select x Providers Objets SQL XML Entities …

Démo LINQ

LINQ Pourquoi c’est mieux : Langage de requêtage unifié 1 seule syntaxe pour requêter différentes sources Objets, SQL, Entity ou 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 (mapping Objet / base de données) date

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  date

Managed Extensibility 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,… date

MEF : Compléter les actions d’un robot IRobot.dll IAction string Nom Action DoIt() Robot.dll MyRobot Reculer Avancer AddOn2.dll AddOn.dll Faire le café Tourner Serrer le main

MEF : compléter les actions possibles pour un robot 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

Task Parallel 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 date

TPL : Exécuter 3 tâches en // 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 date

Analyse de l’architecture d’une application 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 date

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 date

Visual Studio 2010 Productivity Tools Démo Visual Studio 2010 Productivity Tools

Snippets et Refactoring Où et Quand ? Tout au long du développement Lors d’écriture de code et le déclenchement d’action répétitifs Comment je faisais avant: Ecriture manuelle Copier / coller Quoi et pourquoi ? Snippets: écrire rapide de code basée sur des modèles Refactoring: Réorganisation, renommage, extraction d’interface, extraction de méthodes… Gain en productivité considérable

Ecriture accélérée Réorganisation de code Démo Ecriture accélérée Réorganisation de code

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…

Récapitulatif Sujet Catégorie A partir de Utilisation Méthodes anonymes, lambdas Code .Net 2.0 .Net 3.0, Silverlight C# Les méthodes d’extension .Net 3.5 Silverlight C#, VB.Net LINQ Accès aux données Entity Framework .Net 3.5 SP1 Silverlight RIA MEF .Net 4, Silverlight 4 (3.5) TPL Multi-Tâche .Net 4 (3.5) Le diagramme de couche (Explorateur d’architecture) ALM VStudio 2010 L’Extension Manager Divers SketchFlow Maquettage Blend 3 Blend

Les liens utiles Entity Framework : 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