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. Au cœur du Framework
4.5.1
Bruno BOUCARD
MVP C++
blogs.msdn.com/devpara/
Code/Developpement
Michel PERFETTI
MVP ALM
Cellenza
buildmeimfamous.net
5. 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
6. .NET 4.5.1 en trois axes
Productivité du développeur
Performance des applications
Innovations constantes
#mstechdays
Code/developpement
10. «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
11. Mais il y a mieux…
#mstechdays
Code/developpement
13. 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
14. 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
15. Amélioration du développement
Windows Store
•
•
•
•
Support du «Edit & Continue» en 64-bits
Support de l’inspection des valeurs de retour
Amélioration du débogage des async
Conversion de System.IO.Stream vers IRandomAccessStream
– Permet une bien meilleure intéropérabilité avec le code .NET existant
• Meilleurs support des exceptions provenant des APIs WinRT
– System.Exception.Message
– System.Exception.StackTrace
• Valeur de type Nullable dans les structs WinRT
#mstechdays
Code/developpement
16. 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
17. 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
18. 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
21. 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
22. Suspension des applications ASP.NET
• 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
#mstechdays
Résultats en provenance de chez Microsoft
Code/developpement
23. 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
24. 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
25. 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
26. 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
27. •
•
•
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
28. 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
29. 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
30. 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
33. 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 plusieurs
plateformes
#mstechdays
Code/developpement
34. 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
Async
.NET (“in box”)
#mstechdays
Code/developpement
Immutable
Collections
35. 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
36. 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
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. 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
41. 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
42. De nombreux moyens de communication
E-mail
dotnet
Blog
#mstechdays
MSDN Forums
Code/developpement
@dotnet
UserVoice
43. 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
44. 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 !