36
palais des congrès Paris 7, 8 et 9 février 2012

Les nouveautés du Framework .NET 4.5

Embed Size (px)

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

Page 1: Les nouveautés du Framework .NET 4.5

palais des congrès Paris

7, 8 et 9 février 2012

Page 2: Les nouveautés du Framework .NET 4.5

Vous êtes dans l’AMPHI BLEU

Page 3: Les nouveautés du Framework .NET 4.5

7/02/2012 – 11H-12H Roch BADUELArchitecteMCNEXT

LAN208: Les nouveautés du Framework .NET 4.5

Page 4: 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

Page 5: Les nouveautés du Framework .NET 4.5

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

Page 6: Les nouveautés du Framework .NET 4.5

Le framework .NET 4.5

Page 7: Les nouveautés du 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

Page 8: Les nouveautés du Framework .NET 4.5

.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

Page 9: Les nouveautés du Framework .NET 4.5

L’asynchrone au sein du framework

Page 10: Les nouveautés du Framework .NET 4.5

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

Page 11: Les nouveautés du Framework .NET 4.5

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 ?

Page 12: Les nouveautés du Framework .NET 4.5

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

Page 13: Les nouveautés du Framework .NET 4.5

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

Page 14: Les nouveautés du Framework .NET 4.5

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)

Page 15: Les nouveautés du Framework .NET 4.5

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

Page 16: Les nouveautés du Framework .NET 4.5

DEMO

TAP / Async / Await

Page 17: Les nouveautés du Framework .NET 4.5

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

Page 18: Les nouveautés du Framework .NET 4.5

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

Page 19: Les nouveautés du Framework .NET 4.5

DataFlow

Page 20: Les nouveautés du Framework .NET 4.5

.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

Page 21: Les nouveautés du Framework .NET 4.5

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

Page 22: Les nouveautés du Framework .NET 4.5

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

Page 23: Les nouveautés du Framework .NET 4.5

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

Page 24: Les nouveautés du Framework .NET 4.5

DEMO

DataFlow

Page 25: Les nouveautés du Framework .NET 4.5

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

Page 26: Les nouveautés du Framework .NET 4.5

Autres nouveautés “core”

Page 27: Les nouveautés du Framework .NET 4.5

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

Page 28: Les nouveautés du Framework .NET 4.5

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

Page 29: Les nouveautés du Framework .NET 4.5

DEMO

WCF

Page 30: Les nouveautés du Framework .NET 4.5

Expressions C#State machines Service Contract FirstPerformance

Workflow

Page 31: Les nouveautés du Framework .NET 4.5

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

Page 32: Les nouveautés du Framework .NET 4.5

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

Page 33: Les nouveautés du Framework .NET 4.5

DEMO

WPF

Page 34: Les nouveautés du Framework .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)

Quelques sessions sur VS11/NET 4.5

Page 35: Les nouveautés du Framework .NET 4.5

Vous êtes dans l’AMPHI BLEU

Page 36: Les nouveautés du Framework .NET 4.5

Microsoft France39, quai du président Roosevelt

92130 Issy-Les-Moulineaux

www.microsoft.com/france