2 LAN303 Ce quil ne fallait pas rater depuis.Net 2.0 Stéphanie Hertrich – Microsoft Florent...

Preview:

Citation preview

2

LAN303

Ce qu’il ne fallait pas rater depuis .Net 2.0

Stéphanie Hertrich – MicrosoftFlorent Santin – Access It IDF

3

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

4

Déroulement de chaque sujet

1.Cas d’application (Où et Quand)

2.Comment vous faites aujourd’hui (Quoi)

3.Comment ça s’utilise ? Démo (Comment)

4.Pourquoi c’est mieux (Pourquoi)

5

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

6

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

7

DémoMéthodes anonymes et expressions lambda

8

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

9

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)

10

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

11

DémoMéthodes d’extension : - Etendre le type int- Etendre l’interface IList<T>

12

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

13

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

14

LINQ

Providers

var q = from x in ywhere x > n

select x

Objets SQL XML Entities …

15

DémoLINQ

16

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

17

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)

18

Entity Framework

Base de donnéesEntitées

A

B

C

A

B

C

Mapping

19

Entity Framework

Base de donnéesEntitées

A

B

C

A

DC

Mapping

20

DémoEntity Framework

21

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

22

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,…

23

IRobot.dll

AddOn2.dll AddOn.dll

Robot.dll

MEF : Compléter les actions d’un robot

IAction• string Nom• Action DoIt()

MyRobotReculer Avancer

Tourner

Serrer le main

Faire le café

24

DémoMEF : compléter les actions possibles pour un robot

25

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

26

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

27

DémoTPL : Exécuter 3 tâches en //

28

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, …

29

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

30

DémoAnalyse de l’architecture d’une application

31

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

32

Extensions ManagerOù 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

33

DémoVisual Studio 2010 Productivity Tools

36

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, …

37

DémoSketchFlow (Blend 3, 4)

38

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…

39

RécapitulatifSujet Catégorie A partir de UtilisationMéthodes anonymes, lambdas

Code .Net 2.0.Net 3.0, Silverlight

C#

Les méthodes d’extension Code .Net 3.5Silverlight

C#, VB.Net

LINQ Accès aux données .Net 3.5Silverlight

C#, VB.Net

Entity Framework Accès aux données .Net 3.5 SP1Silverlight RIA

C#, VB.Net

MEF Code .Net 4, Silverlight 4(3.5)

C#, VB.Net

TPL Multi-Tâche .Net 4 (3.5)Silverlight

C#, VB.Net

Le diagramme de couche (Explorateur d’architecture)

ALM VStudio 2010 VStudio 2010

L’Extension Manager Divers VStudio 2010 VStudio 2010

SketchFlow Maquettage Blend 3 Blend

40

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/stephehttp://blogs.developpeurs.org/azra

41

MSDN et TechNet : l’essentiel des ressources techniques à portée de clic

http://technet.com http://msdn.com

Portail administration et infrastructure pour informaticiens

Portail de ressources technique pour développeurs

Recommended