lan303 ce qu’il ne fallait pas rater depuis .net 2.0
DESCRIPTION
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é - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/1.jpg)
![Page 2: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/2.jpg)
2
LAN303
Ce qu’il ne fallait pas rater depuis .Net 2.0
Stéphanie Hertrich – MicrosoftFlorent Santin – Access It IDF
![Page 3: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/3.jpg)
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 !!
![Page 4: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/4.jpg)
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)
![Page 5: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/5.jpg)
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
![Page 6: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/6.jpg)
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
![Page 7: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/7.jpg)
7
DémoMéthodes anonymes et expressions lambda
![Page 8: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/8.jpg)
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
![Page 9: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/9.jpg)
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)
![Page 10: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/10.jpg)
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
![Page 11: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/11.jpg)
11
DémoMéthodes d’extension : - Etendre le type int- Etendre l’interface IList<T>
![Page 12: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/12.jpg)
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
![Page 13: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/13.jpg)
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…)
![Page 14: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/14.jpg)
14
LINQ
Providers
var q = from x in ywhere x > n
select x
Objets SQL XML Entities …
![Page 15: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/15.jpg)
15
DémoLINQ
![Page 16: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/16.jpg)
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
![Page 17: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/17.jpg)
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)
![Page 18: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/18.jpg)
18
Entity Framework
Base de donnéesEntitées
A
B
C
A
B
C
Mapping
![Page 19: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/19.jpg)
19
Entity Framework
Base de donnéesEntitées
A
B
C
A
DC
Mapping
![Page 20: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/20.jpg)
20
DémoEntity Framework
![Page 21: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/21.jpg)
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
![Page 22: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/22.jpg)
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,…
![Page 23: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/23.jpg)
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é
![Page 24: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/24.jpg)
24
DémoMEF : compléter les actions possibles pour un robot
![Page 25: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/25.jpg)
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
![Page 26: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/26.jpg)
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
![Page 27: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/27.jpg)
27
DémoTPL : Exécuter 3 tâches en //
![Page 28: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/28.jpg)
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, …
![Page 29: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/29.jpg)
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
![Page 30: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/30.jpg)
30
DémoAnalyse de l’architecture d’une application
![Page 31: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/31.jpg)
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
![Page 32: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/32.jpg)
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
![Page 33: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/33.jpg)
33
DémoVisual Studio 2010 Productivity Tools
![Page 34: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/34.jpg)
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, …
![Page 35: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/35.jpg)
37
DémoSketchFlow (Blend 3, 4)
![Page 36: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/36.jpg)
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…
![Page 37: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/37.jpg)
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
![Page 38: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/38.jpg)
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
![Page 39: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/39.jpg)
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
![Page 40: LAN303 Ce qu’il ne fallait pas rater depuis .Net 2.0](https://reader035.vdocuments.site/reader035/viewer/2022062500/568151b6550346895dbfe5c7/html5/thumbnails/40.jpg)