Les nouveautés du Framework .NET 4.5 Roch BADUEL Directeur du pôle BizTalk MCNEXT MCNEXT, filiale de MozzaiK Spécialiste Microsoft 4 Pôles .NET Sharepoint BI (SQL Server) BizTalk Server Activités : Projet :

Download Report

Transcript Les nouveautés du Framework .NET 4.5 Roch BADUEL Directeur du pôle BizTalk MCNEXT MCNEXT, filiale de MozzaiK Spécialiste Microsoft 4 Pôles .NET Sharepoint BI (SQL Server) BizTalk Server Activités : Projet :

Les nouveautés du Framework .NET 4.5

Roch BADUEL Directeur du pôle BizTalk MCNEXT

MCNEXT, filiale de MozzaiK

Spécialiste Microsoft 4 Pôles .NET

Sharepoint BI (SQL Server) BizTalk Server Activités : Projet : Forfait / Régie Conseil / Expertise Formation MCNEXT : Paris, France INEXT : Genève, Suisse

Agenda

Qu’est ce que le Framework .NET 4.5 ?

L’asynchrone au sein du Framework Async / Await TPL DataFlow WCF, WPF, WF, ASP.NET

Demos, Demos …

Le framework .NET 4.5

Rappel – Le framework .NET

Entity Frame -work ASP. NET WCF WPF Win Form s Work Flow And more !

Base Class Libraries JIT & NGEN Garbage Collector CLR Security Model Profiling& Debugging APIs Exception Handling Loader & Binder

Versions de .NET

.NET 4.5 est une mise à jour au dessus de .NET 4 Actuellement en preview Peut être inclus dans vos installer sur Win7, Win2K8, etc.

Sera inclus dans les prochaines versions de Windows Pourra être installé avec Windows Update .NET 1.0

2002 .NET 1.1

2003 3.5

3.0

.NET 2.0

2005 - 2008 4.5

.NET 4.0

2010

L’asynchrone au sein du framework

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)

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)

// .NET 1 model file.BeginRead(buffer, 0, maxLength, asyncResult => { int numBytesRead = file.EndRead(asyncResult); // Now do something with "buffer“ }, null );

Event-based Asynchronous Programming (EAP)

// .NET 2 model webClient.DownloadStringCompleted += (sender, args) => { string html = args.Result; // Now do something with "html" }; webClient.DownloadStringAsync( new Uri ( "http://example.com" ));

Task-based Asynchronous Programming (TAP)

Task < string > htmlTask = webClient.DownloadStringTaskAsync(url); string html = htmlTask.Result; // Sync (block until done) htmlTask.ContinueWith(task => { string html = task.Result; // Async, C# 4 }); string C# 5 html = await htmlTask; // Async,

Utilisation de async / await

} { public async Stream Task CopyStreamToStreamAsync( Stream destination) } source, { byte [] buffer = new byte [0x1000]; int numRead; while ((numRead = await source.ReadAsync(buffer, 0, buffer.Length)) != 0) await destination.WriteAsync(buffer, 0, numRead);

demo…

TAP / Async / Await

Les méthodes asynchrones

Sont marquées avec le mot clé async Elles retournent soit void soit Task Elles utilisent l’opérateur await Elles se résume 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

Méthodes rajoutées à Task

Task.Run

varresult = await Task.Run(() => { … }); Task.Delay

awaitTask.Delay(5000); Task.WhenAll / WhenAny Composition Task.Yield

awaitTask.Yield() Task.ContinueWith

DataFlow

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 »

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

TPL Dataflow

Exemple de traitement simple var { ab = new ActionBlock < int >(i => Process(i);

ActionBlock Message Queue

}); for ( int { i = 0; i < 5; i++) ab.Post(i); }

TPL Dataflow

Interconnecter les Blocks Les block peuvent être chainés pour implémenter des réseaux Exemple des Block : ActionBlock : exécute un délégué TransformBlock: convertie T1 vers T2 BroadcastBlock : permet de diffuser vers plusieurs blocks un message JoinBlock : attend un élément de chaque entrée pour créer un message en sortie

demo…

DataFlow

Autres nouveautés “core”

+ 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))] public ICalculator calculator; [Export( typeof (ICalculator))] class MySimpleCalculator : ICalculator Portable library : Subset commun à .NET / WP / XBOX / SL Compatibilité binaire

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

demo…

WCF

Workflow

Expressions C# State machines Service Contract First Performance

LEAR N MOR E

801: Event driven, long-running apps with Windows Workflow 867: Building Apps with Windows Workflow and Windows Azure

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

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

Give us your feedback!

Please help us make TechDays even better by Evaluating this Session. Thank you!

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.