Au cœur du Framework
4.5.1
Bruno BOUCARD
MVP C++
Cellenza
blogs.msdn.com/devpara/

Code/Developpement

Michel PERFETTI
MVP...
Présentation de Cellenza

Cabinet de conseil IT exclusivement dédié
aux technologies Microsoft et aux méthodes
Agiles
Notr...
.NET (Une vue *très* simplifiée)

Runtime

#mstechdays

Libraries

Languages

Code/developpement

Tools

.NET
Contenu de .NET 4.5
Client & Device

Web & Cloud

Fundamentals

GC

Libraries

• Async – for UI
responsiveness
• Windows S...
.NET 4.5.1 en trois axes
Productivité du développeur
Performance des applications
Innovations constantes
#mstechdays

Code...
Productivité du
développeur

#mstechdays

Code/developpement
En 2005, il y avait une fonctionnalité
nommée «Edit & Continue», mais
quelque chose manquait…

#mstechdays

Code/developpe...
#mstechdays

Code/developpement
«Edit & Continue» pour 64-bits est là !
•
•
•

•

Fortement demandé par la communauté
Fonctionne exactement comme pour les...
Mais il y a mieux…

#mstechdays

Code/developpement
#mstechdays

Code/developpement
Inspection des valeurs de retour
de méthode

• Maintenant disponible pour .NET !
• Accès par les fenêtres «Autos» et «Imme...
Améliorations du débogage async
• Question fréquente :
– Comment l’exécution arrive-t-elle ici ?

• Supporte les Store App...
Résilience des connexions EF/ADO.NET
•
•
•
•

Fourni une connexion vers Azure DB fiable
Restauration automatique de connex...
ASYNC, $RETURNVALUE,
EDIT&CONTINUE, EF

#mstechdays

Code/developpement
Et du côté de Windows Store …

#mstechdays

Code/developpement
Conversion de Stream vers
IRandomAccessStream
Des forums MSDN :

bitmap.SetSource(memoryStream); <--

error CS1503: Argume...
Support des exceptions APIs WinRT
•

Sous Windows 8, la propagation des erreurs depuis les APIs WinRT se fait à
travers de...
Performance des
applications

#mstechdays

Code/developpement
Suspension des applications ASP.NET
•

Ajoute la capacité de suspendre une
application via une machine à trois états

•
•
...
Suspension des applications ASP.NET
• Permet faible
latence, des sites
Web de haute
densité pour le
cloud onprem/private
•...
Suspension des applications ASP.NET
Dans les paramètres de IIS,
définissez délai d'inactivité
sur « suspend »

Plus inform...
Rappel sur le compilateur Just-In-Time
Les compilateurs .NET
•
•

•

Transforment à la volée le code IL (résultat de la co...
•

•

•

Minimise le temps
de démarrage sur
des processeurs
multi cœurs
Désormais pris en
charge pour les
sites Web ASP.NE...
Cohérence de performance avant et
après la mise à jour de .NET
•
•

Actuellement, mettre à jour le Framework .NET peut
ame...
Rappel sur le Large Object Heap (LOH)
• Il est long de compacter (= déplacer) des gros objets
Pour remédier à ce problème
...
Compactage sur demande du LOH
• 2 méthodes d’utilisation de l’API du GC pour le LOH
1. Compactage du LOH directement (righ...
Compactage sur demande du LOH
• Le Garbage
Collector de .NET
est une machine
bien huilée
• En principe,
GC.Collect() ne
de...
Compactage sur demande du LOH
• Avec .NET 4.5.1, il est
maintenant possible de le
compacter afin de réduire
la fragmentati...
COMPACTAGE SUR
DEMANDE
DUFragmentation =
LOH
Fragmentation: 0% - Signifie que toute la mémoire libre est dans un seul gran...
Innovation
continue

#mstechdays

Code/developpement
Mise à jour du Framework .NET
• L’objectif est de garder les valeurs existantes du
Framework .NET tout en permettant plus ...
Release NuGet
• Lors de la release de .NET 4.5, deux composants ont
étés délivrés par NuGet :
– MEF (Microsoft Composition...
Flux NuGet pour le Framework .NET
• Accès unique
pour tous les
packages NuGet
du framework
.NET livrés par
Microsoft
–
–

...
Flux NuGet pour le Framework .NET
• Déjà activé dans Visual Studio 2013

•
•
•
•

Sous Visual Studio 2010 et 2012
Tools.Op...
LE PACKAGE
IMMUTABLE
COLLECTIONS EN ACTION
#mstechdays

Code/developpement
Architecture Interne (ImmutableList)
Créer une liste immutable

Ajouter
null

null

null

1
var list1 = ImmutableList.Crea...
Performances
• Ajouter des items
–

–

Les collections immutables consomment un peu plus de
mémoire par élément de stockag...
Conseils d’utilisation
• Scénario de multithreading
– Mais pas forcement massivement concurrent
• Les collections de Syste...
Synthèse du Framework .NET 4.5.1
Performance des applications Productivité du développeur

•

64-bit Edit and Continue •

...
De nombreux moyens de communication

E-mail

dotnet

Blog
#mstechdays

MSDN Forums

Code/developpement

@dotnet

UserVoice
Donnez votre avis !
Depuis votre smartphone sur :
http://notes.mstechdays.fr
De nombreux lots à gagner toute les heures !!...
Présentation de Cellenza

Ve n e z n o u s r e t r o u ve r s u r n o t r e St a n d # 1 5

Vous pouvez vous inscrire à
no...
Digital is
business
Au cœur du Framework .NET 4.5.1
Prochain SlideShare
Chargement dans…5
×

Au cœur du Framework .NET 4.5.1

1 177 vues

Publié le

Dans cette session vous découvrirez comment le couple Visual Studio 2013 et le Framework 4.5.1 augmentent votre productivité ainsi que les performances de vos applications .NET. Dans la lignée du Framework 4.5, cette dernière version offre son lot d’améliorations, parfaitement stabilisées au rythme des versions de Visual Studio. Cependant, Microsoft a décidé de livrer des packages officiels à un rythme plus rapide et plus fréquent que les versions majeures de Visual Studio. La dernière version de NuGet intégrée à Visual Studio 2013 permet de trouver plus facilement le type de package recherché. Ne manquez pas cette session et venez découvrir l’essentielle des nouveautés apportées par Visual Studio 2013 et le Framework 4.5.1.

Speakers : Michel Perfetti (Cellenza), Bruno Boucard (Cellenza)

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 177
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
39
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • BBO
  • BBO
  • BBO
  • BBO
  • MPE
  • MPE
  • MPE
  • MPE
  • MPE
  • MPE
  • MPE
  • MPE
  • MPE
  • MPE
  • MPE
  • MPE
  • MPE
  • BBO
  • BBO
  • BBO
  • BBOhttp://blogs.msdn.com/b/benjaminperkins/archive/2013/06/25/what-s-new-in-iis-8-5.aspx
  • BBO
  • BBO
  • BBO
  • BBO
  • BBO
  • BBO
  • BBO
  • BBO
  • BBO
  • MPE
  • MPE
  • MPE
  • MPEVS2013:Web: http://blogs.msdn.com/b/dotnet/p/nugetpackages.aspx
  • BBO
  • BBO
  • BBO
  • BBO
  • Au cœur du Framework .NET 4.5.1

    1. 1. Au cœur du Framework 4.5.1 Bruno BOUCARD MVP C++ Cellenza blogs.msdn.com/devpara/ Code/Developpement Michel PERFETTI MVP ALM Cellenza buildmeimfamous.net
    2. 2. Présentation de Cellenza Cabinet de conseil IT exclusivement dédié aux technologies Microsoft et aux méthodes Agiles Notre passion, les technologies MS Nous sommes des experts Microsoft, agilistes par nature, passionnés par notre métier. Consultants, coachs, formateurs et/ou MVP, nous avons à cœur de partager avec la communauté un savoir technique et méthodologique, mais aussi nos valeurs 150 billets de blog Comment nous le faisons : • • • Formation continue Partage de connaissance Partenariats > 12j formati on 7 MVP 7 MCT 30 art. de presse
    3. 3. .NET (Une vue *très* simplifiée) Runtime #mstechdays Libraries Languages Code/developpement Tools .NET
    4. 4. Contenu de .NET 4.5 Client & Device Web & Cloud Fundamentals GC Libraries • Async – for UI responsiveness • Windows Store apps -- WinRT • Windows Phone apps • .NET CF 3.9 • Async – for server scaling • ASP.NET MVC4 • ASP.NET Web API • ASP.NET Web Pages • Entity Framework Code-First • WebSockets • SignalR • Windows Azure Cloud Services 4.5 Support • Windows Azure Web Sites • .NET Async (async + await) • Many new async APIs • WinRT interop • Multi-core JIT • MPGO – NGEN hot/cold splitting • Performance improvements • Reboot and reliability improvements to setup • Support Windows RT • Background GC • LOH heap balancing • LOH fragmentation reduction • GC low latency mode • GC awareness of NUMA and >64 processors • >2GB arrays (or objects) • Portable libraries update • .NET Core Profile (Windows 8) • Extension methods for WinRT streams and async • NuGet • Immutable collections • Async for .NET 4 • HttpClient for Portable .NET 4.5 est installé sur plus de 100+ million de machines! #mstechdays Code/developpement
    5. 5. .NET 4.5.1 en trois axes Productivité du développeur Performance des applications Innovations constantes #mstechdays Code/developpement
    6. 6. Productivité du développeur #mstechdays Code/developpement
    7. 7. En 2005, il y avait une fonctionnalité nommée «Edit & Continue», mais quelque chose manquait… #mstechdays Code/developpement
    8. 8. #mstechdays Code/developpement
    9. 9. «Edit & Continue» pour 64-bits est là ! • • • • Fortement demandé par la communauté Fonctionne exactement comme pour les applications 32bits Projets client (WPF, WinForms, etc), Store et applications web ASP.NET sont supportés Pour les projets d’application web activer «Edit & Continue» dans les propriétés du projet #mstechdays Code/developpement
    10. 10. Mais il y a mieux… #mstechdays Code/developpement
    11. 11. #mstechdays Code/developpement
    12. 12. Inspection des valeurs de retour de méthode • Maintenant disponible pour .NET ! • Accès par les fenêtres «Autos» et «Immediat» ($ReturnValue) • Peut étendre les valeurs de retour dans le debugger #mstechdays Code/developpement
    13. 13. Améliorations du débogage async • Question fréquente : – Comment l’exécution arrive-t-elle ici ? • Supporte les Store Apps, les Web Apps ainsi que les applications desktop sous Windows 8.1 • Amélioration des fenêtres «Call Stack» et Tasks #mstechdays Code/developpement
    14. 14. Résilience des connexions EF/ADO.NET • • • • Fourni une connexion vers Azure DB fiable Restauration automatique de connexion rompue Fourni un grande expérience depuis des appareils connectés Ca fonctionne ! Aucune configuration ou modification de code autre que d’installer .NET 4.5.1 #mstechdays Code/developpement
    15. 15. ASYNC, $RETURNVALUE, EDIT&CONTINUE, EF #mstechdays Code/developpement
    16. 16. Et du côté de Windows Store … #mstechdays Code/developpement
    17. 17. Conversion de Stream vers IRandomAccessStream Des forums MSDN : bitmap.SetSource(memoryStream); <-- error CS1503: Argument 1: cannot convert from 'System.IO.Stream' to 'Windows.Storage.Streams.IRandomAccessStream‘ bitmap.SetSource(memoryStream.AsRandomAccessStream()); <-- .NET 4.5.1 Dans .NET 4.5.1 : System.IO.WindowsRuntimeStreamExtensions .AsRandomAccessStream(Stream stream) #mstechdays Code/developpement
    18. 18. Support des exceptions APIs WinRT • Sous Windows 8, la propagation des erreurs depuis les APIs WinRT se fait à travers des HRESULT – • Les informations importantes sur ces exceptions sont perdues, à moins qu’un débogueur soit attaché Sous Windows 8.1, des informations additionnelles sur l’erreur sont disponibles grâce aux propriétés de System.Exception : – – Message StackTrace Additional exception details from a C++ WinRT Component #mstechdays Code/developpement
    19. 19. Performance des applications #mstechdays Code/developpement
    20. 20. Suspension des applications ASP.NET • Ajoute la capacité de suspendre une application via une machine à trois états • • Tous les sites débutent dans un état inactif Lorsque les sites sont réclamés, ils sont chargés en mémoire, deviennent actifs, et de répondre aux requêtes clientes Les sites activés seront suspendus après un délai prédéfini • Les sites suspendus perdent l'accès à la CPU, ce qui libère des cycles CPU et de la mémoire pour les demandes vers d'autres sites. • ils sont maintenus dans le nouvel état suspendu • ils peuvent être repris très rapidement et répondre à de nouvelles requêtes très rapidement • #mstechdays Code/developpement
    21. 21. Suspension des applications ASP.NET • Permet faible latence, des sites Web de haute densité pour le cloud onprem/private • Livraison dans le cadre de IIS 8.5 dans Windows Server 2012 R2 #mstechdays Résultats en provenance de chez Microsoft Code/developpement
    22. 22. Suspension des applications ASP.NET Dans les paramètres de IIS, définissez délai d'inactivité sur « suspend » Plus information: ASP.NET App Suspend – responsive shared .NET web hosting #mstechdays Code/developpement
    23. 23. Rappel sur le compilateur Just-In-Time Les compilateurs .NET • • • Transforment à la volée le code IL (résultat de la compilation de source .NET) en code assembleur Compilation à la demande (just in time) et une seule fois par fonction Cependant • • #mstechdays Démarrage à froid • Certaines applications/services ont besoin de démarrer le plus vite possible, et souffrent du temps de JIT Le Framework .NET 4.5 permet de JITTER en // les Apps du Store et les applications/service .NET dont les assemblages sont dans le GAC Code/developpement
    24. 24. • • • Minimise le temps de démarrage sur des processeurs multi cœurs Désormais pris en charge pour les sites Web ASP.NET Activé par défaut pour les applications ASP.NET #mstechdays Démarrage à froid JIT multi-cœur pour sites web ASP.NET Code/developpement
    25. 25. Cohérence de performance avant et après la mise à jour de .NET • • Actuellement, mettre à jour le Framework .NET peut amener à une dégradation des performances d’une app juste après la mise à jour • Cela est dû aux assemblages .NET de base qui son JITTER après la mise à jour • Sous Windows 8.1, la performance des apps reste identique, même après la mise à jour du Framework .NET • #mstechdays Maintenir le Framework .NET pour plus d’un milliard de PC est un vrai gros soucis ! Le résultat est une meilleure expérience utilisateur, ainsi qu’une longévité supérieure des batteries des tablettes Code/developpement
    26. 26. Rappel sur le Large Object Heap (LOH) • Il est long de compacter (= déplacer) des gros objets Pour remédier à ce problème – Le GC alloue les objets considérés « gros » (>85Ko) dans un tas spécifique appelé Large Object Heap (LOH). – le LOH n’est pas compacté • On gagne en temps dans le GC, mais la création d’un gros objet est par contre beaucoup plus lente • Le Framework .NET 4.5 apporte une amélioration de 30% de la vitesse d’allocation dans le LOH par rapport au Framework 4.0
    27. 27. Compactage sur demande du LOH • 2 méthodes d’utilisation de l’API du GC pour le LOH 1. Compactage du LOH directement (right away) GCSettings.LOHCompactionMode = GCLOHCompationMode.CompactOnce; GC.Collect(); 2. Compactage du LOH lors du traitement de la génération 2 // Next full blocking GC happens at some point, it will be a compacting GC that compacts the whole heap including LOH. GCSettings.LOHCompactionMode = GCLOHCompationMode.CompactOnce; #mstechdays Code/developpement
    28. 28. Compactage sur demande du LOH • Le Garbage Collector de .NET est une machine bien huilée • En principe, GC.Collect() ne devrait jamais être appelé • ATTENTION : Les grands pouvoirs impliquent de grandes responsabilités ! #mstechdays Code/developpement
    29. 29. Compactage sur demande du LOH • Avec .NET 4.5.1, il est maintenant possible de le compacter afin de réduire la fragmentation du tas • La configuration du LOH fait partie de GCSettings public static class GCSettings { public static GCLOHCompactionMode LOHCompactionMode { get; set; } } #mstechdays Code/developpement
    30. 30. COMPACTAGE SUR DEMANDE DUFragmentation = LOH Fragmentation: 0% - Signifie que toute la mémoire libre est dans un seul grand bloc Fragmentation: 90% - Lorsque il y a 100 Mo de mémoire libre est disponible, mais plus grand bloc de mémoire libre pour une nouvelle allocation est seulement 10 MB #mstechdays Code/developpement
    31. 31. Innovation continue #mstechdays Code/developpement
    32. 32. Mise à jour du Framework .NET • L’objectif est de garder les valeurs existantes du Framework .NET tout en permettant plus d’agilité et d’innovation • Valeurs existantes : – – – – Facilité d’accès Qualité connue, maturité et niveau de compatibilité Une seule politique de licence et de support Patching centralisé pour les problèmes de sécurité • Les nouvelles valeurs : – Cycle de release plus rapide avec un retour d’expérience client plus proche – Moins de friction lors d’utilisation des fonctionnalités de .NET sur #mstechdays Code/developpement plusieurs plateformes
    33. 33. Release NuGet • Lors de la release de .NET 4.5, deux composants ont étés délivrés par NuGet : – MEF (Microsoft Composition) pour les apps web et Windows Store – TPL Dataflow (Microsoft.Tpl.Dataflow) – Ces éléments sont traités comme n’importe quel autre composant de .NET 4.5 (support complet) System Composition TPL Dataflow Http Client .NET (“in box”) #mstechdays Code/developpement PCL Immutable Collections
    34. 34. Flux NuGet pour le Framework .NET • Accès unique pour tous les packages NuGet du framework .NET livrés par Microsoft – – #mstechdays Dans Visual Studio 2010, 2012 et 2013 Sur le web Code/developpement
    35. 35. Flux NuGet pour le Framework .NET • Déjà activé dans Visual Studio 2013 • • • • Sous Visual Studio 2010 et 2012 Tools.Options.Package Manager Nom: .NET Framework Packages Source: https://nuget.org/api/v2/curated-feeds/dotnetframework #mstechdays Code/developpement
    36. 36. LE PACKAGE IMMUTABLE COLLECTIONS EN ACTION #mstechdays Code/developpement
    37. 37. Architecture Interne (ImmutableList) Créer une liste immutable Ajouter null null null 1 var list1 = ImmutableList.Create(1); // list 1 = { 1 } #mstechdays Insérer null 2 null 1 null null 3 null 2 1 var list2 = list1.Add(2); // list 1 = { 1 } // list2 = { 1, 2 } Code/developpement var list3 = list2.Insert(0, 3); // list1 = { 1 } // list2 = { 1, 2 } // list 3= { 3, 1, 2 }
    38. 38. Performances • Ajouter des items – – Les collections immutables consomment un peu plus de mémoire par élément de stockage que leurs homologues mutables La consommation réelle de mémoire entre un type mutable et type immutable peut varier en fonction de la façon dont les instances sont utilisées • Retirer des items – – #mstechdays Les collections mutables ne rétrécissent pas leurs tableaux de sorte que vous n'avez pas à récupérer cette mémoire Les collections immuables rétrécissent immédiatement leurs arbres binaires pour chaque élément supprimé • Cette mémoire libre est candidate pour la collecte du GC Code/developpement
    39. 39. Conseils d’utilisation • Scénario de multithreading – Mais pas forcement massivement concurrent • Les collections de System.Collections.Concurrent sont là pour ça ! • Pratique – Vous voulez extraire des instantanés des vos collections • Vous souhaitez les lire dans un contexte thread-safe, alors que la collection originale peut continuer à être modifiée • Rappel – Les collections immutables sont généralement rapides à lire, mais relativement coûteuses à mettre à jour #mstechdays Code/developpement
    40. 40. Synthèse du Framework .NET 4.5.1 Performance des applications Productivité du développeur • 64-bit Edit and Continue • • Method Return Value Inspection • • • #mstechdays Async Debugging Enhancements Windows Store development improvements EF/ADO.NET Connection Resiliency • Innovation continue ASP.NET application suspension Multi-core JIT improvements • On-demand large-object heap compaction • Consistent performance before and after servicing the .NET Framework Code/developpement NET Framework updates • NuGet releases • Curated .NET Framework NuGet packages
    41. 41. De nombreux moyens de communication E-mail dotnet Blog #mstechdays MSDN Forums Code/developpement @dotnet UserVoice
    42. 42. Donnez votre avis ! Depuis votre smartphone sur : http://notes.mstechdays.fr De nombreux lots à gagner toute les heures !!! Claviers, souris et jeux Microsoft… Merci de nous aider à améliorer les Techdays ! #mstechdays Code/developpement
    43. 43. Présentation de Cellenza Ve n e z n o u s r e t r o u ve r s u r n o t r e St a n d # 1 5 Vous pouvez vous inscrire à notre jeu concours sur notre stand ou en ligne : http://jeuconcours.cellenza.com Merci !
    44. 44. Digital is business

    ×