Les nouveautés du Framework .NET 4.5
-
Upload
microsoft -
Category
Technology
-
view
929 -
download
1
description
Transcript of Les nouveautés du Framework .NET 4.5
palais des congrès Paris
7, 8 et 9 février 2012
Vous êtes dans l’AMPHI BLEU
7/02/2012 – 11H-12H Roch BADUELArchitecteMCNEXT
LAN208: Les nouveautés du Framework .NET 4.5
MCNEXT
BusinessIntelligence Talk
Biz
NETDot Share
Point
Microsoft
Depuis 2007 - 150 Collaborateurs – Paris-Lyon-Genève
100 % Microsoft - 4 pôles d’expertises
Objectifs
Qu’est ce que Framework .NET 4.5
?L’asynchrone au
sein du Framework
WCF, WPF, WF, ASP.NET
Démos, Démos, Démos
Pointeurs Questions / Réponses
Le framework .NET 4.5
Rappel – Le framework .NET
BCL CLRJIT & NGEN
Garbage Collector
Modèle de sécurité
GestionException
Loader & Binder
Profiling& Debugging APIs
Entity Frame-work
ASP. NET
WCFAnd
more!WorkFlow
WPFWin
Forms
.NET 4.5 est une mise à jour au dessus de .NET 4 Actuellement en preview Peut être inclus dans vos installeurs sur
Win7, Win2K8, etc. Sera inclus dans les prochaines versions
de Windows Pourra être installé avec Windows Update
Versions de .NET
.NET 1.0 .NET 1.1 .NET 2.0
3.0
3.5
.NET 4.0
2002 2003 2005 - 2008 2010
4.5
L’asynchrone au sein du framework
Intégration dans le langage de async/await(Ex CTP)Extension des fonctionnalités sur les TasksIntroduction des DataFlow (Ex CTP)Rajout de méthodes Asynchrones (Renvoyant des Tasks)
Modifications et nouveautés
Une tendance et une nécessitéEviter de bloquer le thread (notamment UI)Présent depuis le framework 1.0 (BeginMethod, EndMethod)A évolué : Asynchronous Programming Model (APM) Event based Asynchronous Programming (EAP) Task based Asynchronous Programming
(TAP : .NET 4)
Asynchrone ?
// Modèle .NET 1
file.BeginRead(buffer, 0, maxLength, asyncResult => {
int numBytesRead = file.EndRead(asyncResult); // faire quelque chose avec buffer
}, null);
Asynchronous Programming Model (APM)
//Modèle .NET 2
webClient.DownloadStringCompleted += (sender, args) => {
string html = args.Result; // Faire quelque chose avec html};
webClient.DownloadStringAsync(new Uri("http://example.com"));
Event-based Asynchronous Programming (EAP)
Task<string> htmlTask = webClient.DownloadStringTaskAsync(url);
htmlTask.ContinueWith(task => { string html = task.Result; // Async, C# 4});
string html = htmlTask.Result; // Sync (bloquant)
string html = await htmlTask; // Async, C# 5
Task-based Asynchronous Programming (TAP)
public async Task CopyStreamToStreamAsync(Stream source, Stream destination){ byte[] buffer = new byte[0x1000]; int numRead;
while ((numRead = await source.ReadAsync(buffer, 0, buffer.Length)) != 0) { await destination.WriteAsync(buffer, 0, numRead); }}
Utilisation de async / await
DEMO
TAP / Async / Await
Sont marquées avec le mot clé asyncElles retournent soit void soit Task<T>Elles utilisent l’opérateur awaitElles reprennent quand la méthode appelée par await a finieElles s’executent dans le contexte de synchronisation de l’appelant Elles permettent d’écrire du code asynchrone de la même manière que du code synchrone
Les méthodes asynchrones
Task.Runvar result = await Task.Run(() => { … });
Task.Delay await Task.Delay(5000);
Task.WhenAll / WhenAny Composition
Task.Yield await Task.Yield()
Task.ContinueWith
Méthodes rajoutées à Task
DataFlow
.NET 4 On part des données et on met en place le
traitement. Typiquement combinaison de Tasks
Dans l’autre sens? On développe une chaine de traitement,
puis on injecte des données Application typique : traitement en mode
« pipeline »
Modèle de programmation parallèle
System.Threading.Tasks.Dataflow.dllLes DataFlow sont constitués de Blocks Un block est un élément qui traite des
messages depuis une file Les blocks peuvent être chainés pour effectuer
des traitements complexes Réseau de Block
TPL Dataflow
ActionBlock<int>Message Queue
0123
Process(0);Process(1);Process(2);Process(3);
4
Process(4);
var ab = new ActionBlock<int>(i =>{ Process(i);});
for(int i = 0; i < 5; i++){ ab.Post(i);}
TPL DataflowExemple de traitement simple
Les blocks peuvent être chainés pour implémenter des réseaux
Exemple de Block : ActionBlock<T> : exécute un délégué TransformBlock<T1,T2>: convertie T1 vers T2 BroadcastBlock<T> : permet de diffuser vers
plusieurs blocks un message JoinBlock<T1,T2> : attend un élément de chaque
entrée pour créer un message en sortie
TPL DataflowInterconnecter les Blocks
DEMO
DataFlow
Articles d’Eric Vernie (Microsoft France DPE) Introduction à TPL DataFlow (VB ou C#)
http://msdn.microsoft.com/fr-fr/vbasic/hh301105
http://msdn.microsoft.com/fr-fr/vcsharp/hh301085
Blog développement parallèle http://blogs.msdn.com/b/devpara/
Plus d’infos sur TPL / Parallélisme / DataFlow
Autres nouveautés “core”
Nouvelle API pour les applications consommant des service http
System.Net.Http (HttpClient, HttpRequestMessage…)
MEF (Managed Extensibility Framework) Support des types géneric La composition peut être basée sur des règles:
Les attributs ne sont plus obligatoire Utilise RegistrationBuilder pour injecter des attributs
ReflectionContext : expose des types « altérés »
Portable library : Subset commun à .NET / WP / XBOX / SLCompatibilité binaire
+ de nouveautés
[Import(typeof(ICalculator))] public ICalculator calculator;
[Export(typeof(ICalculator))] class MySimpleCalculator : ICalculator
Contract First : Génération du service depuis le WSDL
(svcutil /serviceContract)WSDL en un seul fichier : ?singleWSDL
suppression des xsd:importSupport des WebSocket : NetHttp(s)BindingFichiers de configuration client simplifiés (pas les valeurs par défaut)Support d’UDPPaste XML as classes (VS)Add Service Reference pour les portable library
WCF
DEMO
WCF
Expressions C#State machines Service Contract FirstPerformance
Workflow
HTML5Démarrage plus rapide (multi-core JIT)WebSocketAsynchrone (HttpRequest / HttpResponse, Module / Handler)Externalisation du code de validation client dans un seul js externe.Javascript Bundling / minificationLibrairie Anti – Cross-Site-Scripting intégrée
ASP.NET
Ruban inclus dans .NET 4.5
« NotifyPropertyChanged » sur les propriétés statiques (convention de nommage)Possibilité de modifier les collections « bindées » depuis un thread autre que UIIntroduction de INotifyDataErrorInfo (SL) – validation synchrone / asynchroneIntroduction de ICustomTypeProvider (SL5) – Binding sur des propriétés définies par code (ex: execution)Binding: Delay pour mise à jour de la sourceItemsControl : performance en mode virtualisé sur des collections avec groupage
WPF
DEMO
WPF
Construire des applications parallèles avec Visual Studio 11 quoi de neuf ? (LAN210)
WPF 4.5 : Quoi de neuf pour les développeurs ? (RDA105)
Quoi de neuf dans ASP.NET 4.5 (RIA219)
Quelques sessions sur VS11/NET 4.5
Vous êtes dans l’AMPHI BLEU
Microsoft France39, quai du président Roosevelt
92130 Issy-Les-Moulineaux
www.microsoft.com/france