au cœur du framework .net 4.5.1

45

Upload: microsoft

Post on 13-Apr-2017

1.239 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Au cœur du Framework .NET 4.5.1
Page 2: Au cœur du Framework .NET 4.5.1

Code/Developpement

Au cœur du Framework 4.5.1

Michel PERFETTIMVP ALMCellenza

buildmeimfamous.net

Bruno BOUCARDMVP C++Cellenzablogs.msdn.com/devpara/

Page 3: Au cœur du Framework .NET 4.5.1

Présentation de Cellenza

Cabinet de consei l IT exclusivement dédié aux technologies Microsoft et aux méthodes Agi les

Comment nous le faisons :• Formation cont inue• Partage de

connaissance• Partenar iats

Notre passion, les technologies MSN o u s s o m me s d e s ex pe r t s M i c ro s o f t , a g i l i s t e s p a r n a tu re , p a s s i o n n é s p a r n o t re mé t i e r. C o n s u l t a n t s , c o a c h s , f o rma t e u r s e t / o u M VP , n o u s a v o n s à c œ u r d e p a r t a g e r a v e c l a c o mm un a u t é un s a v o i r t e c h n i q u e e t mé t ho do l o g i q ue , m a i s a u s s i n o s v a l e u r s

150 billets

de blog

> 12j

formation

30 art.de

presse

7 MVP7

MCT

Page 4: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

.NET (Une vue *très* simplifiée)

Runtime

Libraries

Languages

Tools

.NET

Page 5: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Contenu de .NET 4.5Client & Device

•Async – for UI responsiveness•Windows Store apps -- WinRT•Windows Phone apps•.NET CF 3.9

Web & Cloud

•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

Fundamentals

•.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

GC•Background GC•LOH heap balancing•LOH fragmentation reduction•GC low latency mode•GC awareness of NUMA and >64 processors•>2GB arrays (or objects)

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

Page 6: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

.NET 4.5.1 en trois axes

Productivité du développeurPerformance des applicationsInnovations constantes

Page 7: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Productivité du développeur

Page 8: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

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

Page 9: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Page 10: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• Fortement demandé par la communauté• Fonctionne exactement comme pour les

applications 32-bits• 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

«Edit & Continue» pour 64-bits est là !

Page 11: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Mais il y a mieux…

Page 12: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Page 13: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

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

Page 14: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

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

Page 15: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• 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

Résilience des connexions EF/ADO.NET

Page 16: Au cœur du Framework .NET 4.5.1

démoCode/developpement

#mstechdays

ASYNC, $RETURNVALUE, EDIT&CONTINUE, EF

Page 17: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Et du côté de Windows Store …

Page 18: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Conversion de Stream vers IRandomAccessStream

Dans .NET 4.5.1 : System.IO.WindowsRuntimeStreamExtensions.AsRandomAccessStream(Stream stream)

// EXAMPLE: Get image from URL

var client = new HttpClient();

var stream = await client.GetStreamAsync(imgUrl);

var memoryStream = new MemoryStream();

await stream.CopyToAsync(memoryStream);

var bitmap = new BitmapImage();

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

Des forums MSDN :

Page 19: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• 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

Support des exceptions APIs WinRT

Additional exception details from a C++ WinRT Component

Page 20: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Performance des applications

Page 21: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• 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

Suspension des applications ASP.NET

Page 22: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Suspension des applications ASP.NET

Résultats en provenance de chez Microsoft

• Permet faible latence, des sites Web de haute densité pour le cloud on-prem/private

• Livraison dans le cadre de IIS 8.5 dans Windows Server 2012 R2

Page 23: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Dans les paramètres de IIS, définissez délai

d'inactivité sur « suspend »

Suspension des applications ASP.NET

Plus information: ASP.NET App Suspend – responsive shared .NET web hosting

Page 24: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Rappel sur le compilateur Just-In-Time

Dém

arra

ge à

froi

d

• 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

• 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

Page 25: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

JIT multi-cœur pour sites web ASP.NET

Dém

arra

ge à

froi

d

• 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

Page 26: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• Maintenir le Framework .NET pour plus d’un milliard de PC est un vrai gros soucis !

• 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

• Le résultat est une meilleure expérience utilisateur, ainsi qu’une longévité supérieure des batteries des tablettes

Cohérence de performance avant et après la mise à jour de .NET

Page 27: Au cœur du Framework .NET 4.5.1

• 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

Rappel sur le Large Object Heap (LOH)

Page 28: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• 2 méthodes d’utilisation de l’API du GC pour le LOH

1. Compactage du LOH directement (right away)

2. Compactage du LOH lors du traitement de la génération 2

GCSettings.LOHCompactionMode = GCLOHCompationMode.CompactOnce;

GC.Collect();

// 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;

Compactage sur demande du LOH

Page 29: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

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

Compactage sur demande du LOH

Page 30: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• 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 GCSettingspublic static class GCSettings {

public static GCLOHCompactionMode LOHCompactionMode { get; set; }

}

Compactage sur demande du LOH

Page 31: Au cœur du Framework .NET 4.5.1

démoCode/developpement

#mstechdays

COMPACTAGE SUR DEMANDE DU LOHFragmentation: 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

Fragmentation =

Page 32: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Innovation continue

Page 33: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• 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 plusieurs

plateformes

Mise à jour du Framework .NET

Page 34: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

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

Release NuGet

.NET (“in box”)

SystemComposition

TPL Dataflow Http Client PCL Immutable

Collections

Page 35: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• Accès unique pour tous les packages NuGet du framework .NET livrés par Microsoft– Dans Visual Studio 2010,

2012 et 2013– Sur le web

Flux NuGet pour le Framework .NET

Page 36: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• 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

Flux NuGet pour le Framework .NET

Page 37: Au cœur du Framework .NET 4.5.1

démoCode/developpement

#mstechdays

LE PACKAGE IMMUTABLE

COLLECTIONS EN ACTION

Page 38: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Architecture Interne (ImmutableList)

var list1 = ImmutableList.Create(1);// list 1 = { 1 }

1

null null

previous next

Créer une liste immutable

1

2

var list2 = list1.Add(2);// list 1 = { 1 }// list2 = { 1, 2 }

null null

null

Ajouter

3

1

2

var list3 = list2.Insert(0, 3);// list1 = { 1 }// list2 = { 1, 2 }// list 3= { 3, 1, 2 }

null null null

Insérer

Page 39: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• 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– 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

Performances

Page 40: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

• 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

Conseils d’utilisation

Page 41: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

Synthèse du Framework .NET 4.5.1

• 64-bit Edit and Continue

• Method Return Value Inspection

• Async Debugging Enhancements

• Windows Store development improvements

• EF/ADO.NET Connection Resiliency

• ASP.NET application suspension

• Multi-core JIT improvements

• On-demand large-object heap compaction

• Consistent performance before and after servicing the .NET Framework

• .NET Framework updates

• NuGet releases• Curated .NET

Framework NuGet packages

. NET 4.5.1 apporte de nombreuses innovations, tout en maintenant une barre de compatibilité élevée

Innovation continuePerformance des applicationsProductivité du développeur

Page 42: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

De nombreux moyens de communication

@dotnetdotnet

Blog

E-mail

UserVoiceMSDN Forums

Si vous pensez qu’une fonctionnalité est manquante, alors exprimez vous !

Page 43: Au cœur du Framework .NET 4.5.1

Code/developpement#mstechdays

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 !

Donnez votre avis !

Page 44: Au cœur du Framework .NET 4.5.1

Présentation de Cellenza

Vous pouvez vous inscr i re à notre jeu concours sur notre stand ou en l igne : http: / / jeu-concours.cel lenza.com

Venez nous retrouver sur notre Stand #15

Merci !

Page 45: Au cœur du Framework .NET 4.5.1

© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Digital is business