La prochaine version du framework .NET (.NET 4.5) apporte plusieurs innovations. Les performances ont été améliorées, les appels asynchrones ont été introduits dans de nombreuses API et le support au niveau de C# 5 des instructions async/await facilite leur usage. Le traitement parallèle a aussi été étendu avec le support des cœurs multiples et l'introduction des dataflow. Parmi les nouveautés on notera également le support étendu de MEF, des améliorations au niveau de WCF, de Workflow Foundation et de ASP.NET pour ne citer que ceux-ci.
4. MCNEXT
Depuis 2007 - 150 Collaborateurs – Paris-Lyon-
Genève
100 % Microsoft - 4 pôles d’expertises
Dot Share
NET Point
Business
Intelligence
Biz
Microsoft Talk
5. Objectifs
WCF, WPF, WF,
Qu’est ce que L’asynchrone au sein ASP.NET
Framework .NET 4.5 ? du Framework
Pointeurs
Démos, Démos, Démos Questions / Réponses
7. Rappel – Le framework .NET
Entity
ASP. Win Work And
Frame- WCF WPF
NET Forms Flow more!
work
BCL
CLR Profiling&
Debugging APIs
JIT & Garbage Modèle de Gestion Loader &
NGEN Collector sécurité Exception Binder
8. Versions de .NET
.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
3.5
3.0
4.5
.NET 1.0 .NET 1.1 .NET 2.0 .NET 4.0
2002 2003 2005 - 2008 2010
10. Modifications et
nouveautés
Intégration dans le langage de async/await
(Ex CTP)
Extension des fonctionnalités sur les Tasks
Introduction des DataFlow
(Ex CTP)
Rajout de méthodes Asynchrones (Renvoyant des Tasks)
11. Asynchrone ?
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)
12. Asynchronous Programming
Model (APM)
// Modèle .NET 1
file.BeginRead(buffer, 0, maxLength, asyncResult => {
int numBytesRead = file.EndRead(asyncResult);
// faire quelque chose avec buffer
}, null);
13. Event-based Asynchronous
Programming (EAP)
//Modèle .NET 2
webClient.DownloadStringCompleted += (sender,
args) => {
string html = args.Result;
// Faire quelque chose avec html
};
webClient.DownloadStringAsync(new
Uri("http://example.com"));
17. Les méthodes asynchrones
Sont marquées avec le mot clé async
Elles retournent soit void soit Task<T>
Elles utilisent l’opérateur await
Elles reprennent quand la méthode appelée par await a
finie
Elles 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
18. Méthodes rajoutées à Task
Task.Run
var result = await Task.Run(() => { … });
Task.Delay
await Task.Delay(5000);
Task.WhenAll / WhenAny
Composition
Task.Yield
await Task.Yield()
Task.ContinueWith
20. Modèle de programmation
parallèle
.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 »
21. TPL Dataflow
System.Threading.Tasks.Dataflow.dll
Les 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
22. TPL Dataflow
Exemple de traitement simple
var ab = new ActionBlock<int>(i =>
{
ActionBlock<int>
Process(i); Message Queue
});
Process(4);
Process(3);
Process(2);
Process(1);
Process(0);
for(int i = 0; i < 5; i++)
{
ab.Post(i);
4
3
2
1
0
}
23. TPL Dataflow
Interconnecter les Blocks
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
25. Plus d’infos sur TPL /
Parallélisme / 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/
27. + de nouveautés
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 »
[Import(typeof(ICalculator))] [Export(typeof(ICalculator))]
public ICalculator calculator; class MySimpleCalculator : ICalculator
Portable library : Subset commun à .NET / WP /
XBOX / SL
Compatibilité binaire
28. WCF
Contract First :
Génération du service depuis le WSDL
(svcutil /serviceContract)
WSDL en un seul fichier : ?singleWSDL
suppression des xsd:import
Support des WebSocket : NetHttp(s)Binding
Fichiers de configuration client simplifiés (pas les valeurs
par défaut)
Support d’UDP
Paste XML as classes (VS)
Add Service Reference pour les portable library
31. ASP.NET
HTML5
Démarrage plus rapide (multi-core JIT)
WebSocket
Asynchrone (HttpRequest / HttpResponse, Module /
Handler)
Externalisation du code de validation client dans un seul js
externe.
Javascript Bundling / minification
Librairie Anti – Cross-Site-Scripting intégrée
32. WPF
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 UI
Introduction de INotifyDataErrorInfo (SL) – validation synchrone
/ asynchrone
Introduction de ICustomTypeProvider (SL5) – Binding sur des
propriétés définies par code (ex: execution)
Binding: Delay pour mise à jour de la source
ItemsControl : performance en mode virtualisé sur des
collections avec groupage
34. Quelques sessions sur
VS11/NET 4.5
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)