Les nouveautés du Framework .NET 4.5

Preview:

DESCRIPTION

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.

Citation preview

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