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 ReportTranscript 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
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
}); 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
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.