Pavel Yosifovich Hi-Tech College

Slides:



Advertisements
Similar presentations
TechReady 16 4/1/2017 Async Clinic
Advertisements

pa 1 Porting BETA to ROTOR ROTOR Projects Presentation Day, June by Peter Andersen.
DEV324 C# VB 7.0 Managed Code C# VB 8.0 Generics C# VB 9.0 Language Integrated Query C# VB 10.0 Dynamic + Language Parity.
.NET 3.5 – Mysteries. NetFx Evolution NetFx 1.0 C# 1.0, VB 7.0, VS.NET NetFx 1.1 C# 1.1, VB 7.1, VS 2003 NetFx 2.0 C# 2.0, VB 8.0, VS 2005 NetFx 3.0 C#
var data = DownloadData(...); ProcessData(data); var future = DownloadDataAsync(...); future.ContinueWith(data => ProcessData(data));
Joe Hummel, PhD Microsoft MVP Visual C++ Technical Staff: Pluralsight, LLC Adjunct Professor: U. of Illinois, Chicago and Loyola University Chicago
Asynchronous programming Deadlock All The Things!.
{ async patterns } - or - using the asynchronous library in the.Net 4.5 Framework for more than keeping your UI responsive.
Developing for Windows 8/WinRT Session 4 Fundamentals Kevin Stumpf.
please wait for the next slide clicking won’t make it come any faster.
Lucian Wischik VB+C# language PM Microsoft Corporation The Future of VB and C#
Demystifying the .NET Asynchronous Programming Landscape
Async Programming WITH ASYNC TASK
Lisa Feigenbaum Community Program Manager Microsoft Corporation SESSION CODE: DEV04-INT.
Introducing Xamarin 2.0 Introducing Xamarin 2.0 Michael Hutchinson
Recognizes: Magic Memo, show me memo number three. Magic Memo, show memo one. Magic Memo, display memo number two. Magic Memo, display memo.
Managed Code Generics Language Integrated Query Dynamic + Language Parity C# VB 11.0 Windows Runtime + Asynchrony C# VB 7.0 C# VB.
Louis de Klerk Consultant Inobits Consulting DTL308.
Interesting facts about node.js.  Asynchronous I/O  How do they do that?..threads (usually) What do Web Servers do?
JavaScript & jQuery the missing manual Chapter 11
RIA & Adobe Flex Yunhui Fu 11/05/2008. What’s RIA RIA (Rich Internet Applications) –web applications which look and perform like desktop applications.
ASP.NET + Ajax Jesper Tørresø ITNET2 F08. Ajax Ajax (Asynchronous JavaScript and XML) A group of interrelated web development techniques used for creating.
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
Joe Hummel, PhD Technical Staff: Pluralsight Adjunct Professor: UIC, LUC
Silverlight 2 has rich networking support SOAP/XML Web services via WCF proxies Untyped HTTP services (REST, RSS, ATOM) via HttpWebRequest and WebClient.
JavaScript, Fourth Edition Chapter 12 Updating Web Pages with AJAX.
Libsecondlife: Bots Hyungwook Park. LSL vs. libsecondlife Linden Script Language (LSL)  Programming language used by residents of Second Life  Controls.
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Threads and Processes.
A Revolutionary Programming Pattern that Will Clean up your Code : Coroutines in C++ David Sackstein ACCU 2015.
11 Web Services. 22 Objectives You will be able to Say what a web service is. Write and deploy a simple web service. Test a simple web service. Write.
Parallel Programming: Responsiveness vs. Performance Joe Hummel, PhD Microsoft MVP Visual C++ Technical Staff: Pluralsight, LLC Professor: U. of Illinois,
Joe Hummel, PhD Microsoft MVP Visual C++ Technical Staff: Pluralsight, LLC Professor: U. of Illinois, Chicago stuff:
Future of VB and C# Lucian Wischik VB Language PM Microsoft.
ADVANCED WEB SERVICES. Three Advanced Web Service Techniques SOAP Extensions Asynchronous calls Custom wire formatting SOAP Extensions Asynchronous calls.
Developing AJAX Web applications with Castle Monorail David De Florinier Gojko Adzic Skills Matter 12/06/08.
IAsyncResult ar = BeginSomething(…); // Do other work, checking ar.IsCompleted int result = EndSomething(ar);
Trends in Programming Languages Bart J.F. De Smet blogs.bartdesmet.net/bart
Developing Applications with the CSI Framework A General Guide.
Asynchronous Programming Writing Asynchronous Code in C# SoftUni Team Technical Trainers Software University
INT222 - Internet Fundamentals Shi, Yue (Sunny) Office: T2095 SENECA COLLEGE.
Joe Hummel, the compiler is at your service SDC Meetup, Sept 2014.
Other news? async and await Anonymous types (var, dynamic) Tuples Object instantiation Extension methods UCN Teknologi/act2learn1FEN 2014.
04 |Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio Ben Riga
Jonathan Aneja Program Manager Microsoft Corporation Session Code: DTL336 Anders Hejlsberg Technical Fellow Microsoft Corporation.
User Interface Programming in C#: Basics and Events Chris North CS 3724: HCI.
Patterns of Parallel Programming with.NET 4 Stephen Toub Principal Architect Parallel Computing Platform Microsoft Corporation
Agenda UCMA 3.0 Highlights Management PowerShell cmdlets to create and manage UCMA trusted applications and endpoints. Autoprovisioning Application.
JavaScript, Sixth Edition Chapter 11 Updating Web Pages with Ajax.
Nivo 300 ASP.NET MVC 4 Danijel Malik Artifis Danijel Malik s.p.
C# Present and Future Marita Paletsou Software Engineer.
C# 5.0 Alex Davies 22 nd December What we will cover C# 5.0,.NET 4.5, Visual Studio 11 Caller Info Attributes Upgrade from synchronous to asynchronous.
Introduction to Node.js® Jitendra Kumar Patel Saturday, January 31, 2015.
Async Made Simple in Windows 8, with C# and Visual Basic Alex Turner Program Manager VB/C# Compilers Microsoft Corporation DEV332.
Asynchronous Programming Writing Concurrent Code in C# SoftUni Team Technical Trainers Software University
THE FUTURE OF C#: GOOD THINGS COME TO THOSE WHO ‘AWAIT’ Joseph Albahari SESSION CODE: DEV411 (c) 2011 Microsoft. All rights reserved.
Introduction to Silverlight Development Pavel Yosifovich CTO, Matrix Global; Senior Instructor, Hi-Tech College
QML and JavaScript for Native App Development Michael Tims Jen Trieu.
Introducing the Microsoft® .NET Framework
Asynchronous Programming with C# v.Next
The Future of C# and Visual Basic
TechEd /6/2018 6:15 AM © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
Viewbiquity HTML5 Tom Shafron Developer’s Blog CEO, Viewbiquity
12 Asynchronous Programming
Creating Windows Store Apps Using Visual Basic
Asynchronous Programming in .NET
Microsoft Connect /1/2018 2:36 AM
12/2/2018 4:10 AM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
TechEd /9/2018 4:17 AM © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
Build /2/2019 © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
Introduction to JavaScript
Presentation transcript:

Pavel Yosifovich Hi-Tech College

C# Evolution Trends Synchronous vs. Asynchronous Asynchrony the “old way” The New Way Odds and Ends Summary

C# 1.0 Managed Code C# 2.0 Generics C# 3.0 Language Integrated Query C# 4.0 Dynamic Typing

Declarative ConcurrentDynamic

Increasingly connected applications More latency More UI responsiveness problems More scalability issues Asynchronous programming Becoming the norm in responsive, scalable apps Async-only APIs, e.g. JavaScript and Silverlight

C# 1.0 Managed Code C# 2.0 Generics C# 3.0 Language Integrated Query C# 4.0 Dynamic Typing Asynchronous Programming C# v.Next

Synchronous  Wait for result before returning string DownloadString(...); Asynchronous  Return now, call back with result void DownloadStringAsync(..., Action callback); Asynchronous work != Threads

var data = DownloadData(...); ProcessData(data); var data = DownloadData(...); ProcessData(data); DownloadDataAsync(..., data => { ProcessData(data); }); DownloadDataAsync(..., data => { ProcessData(data); });

var data = DownloadData(...); ProcessData(data); var data = DownloadData(...); ProcessData(data); DownloadDataAsync(..., data => { ProcessData(data); }); DownloadDataAsync(..., data => { ProcessData(data); });

Goal: Just like synchronous programming Framework: Use Task for all asynchrony Add Task support to existing.NET and Silverlight APIs Developers can do the same Languages: Asynchronous Methods “async” modifier marks method or lambda as asynchronous “await” operator yields control until awaited task completes

Represents “ongoing operation” Could be async I/O, background worker, anything... Single object for status, result and exceptions Composable callback model var task2 = task1.ContinueWith(t => … t.Result …); The “await” operator rewrites to continuations Combinators WhenAll, WhenAny, Delay, etc.

async void DoWorkAsync() { var t1 = ProcessFeedAsync(" var t2 = ProcessFeedAsync(" await Task.WhenAll(t1, t2); DisplayMessage("Done"); } async void DoWorkAsync() { var t1 = ProcessFeedAsync(" var t2 = ProcessFeedAsync(" await Task.WhenAll(t1, t2); DisplayMessage("Done"); } async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); } async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }

async void DoWorkAsync() { var t1 = ProcessFeedAsync(" var t2 = ProcessFeedAsync(" await Task.WhenAll(t1, t2); DisplayMessage("Done"); } async void DoWorkAsync() { var t1 = ProcessFeedAsync(" var t2 = ProcessFeedAsync(" await Task.WhenAll(t1, t2); DisplayMessage("Done"); } async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); } async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }

async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); } async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }





 

  

  

   

     

     

Should be as simple as the synchronous case var wc = new WebClient(); try { string txt = await wc.DownloadStringTaskAsync(url); dataTextBox.Text = txt; } catch(WebException x) { // Handle as usual } var wc = new WebClient(); try { string txt = await wc.DownloadStringTaskAsync(url); dataTextBox.Text = txt; } catch(WebException x) { // Handle as usual }

async Task GetRssAsync(string url) { var client = new WebClient(); var task = client.DownloadStringTaskAsync(url); var text = await task; var xml = XElement.Parse(text); return xml; } async Task GetRssAsync(string url) { var client = new WebClient(); var task = client.DownloadStringTaskAsync(url); var text = await task; var xml = XElement.Parse(text); return xml; }

async Task GetRssAsync(string url) { var client = new WebClient(); var task = client.DownloadStringTaskAsync(url); var text = await task; var xml = XElement.Parse(text); return xml; } async Task GetRssAsync(string url) { var client = new WebClient(); var task = client.DownloadStringTaskAsync(url); var text = await task; var xml = XElement.Parse(text); return xml; } Task GetRssAsync(string url) { var $builder = AsyncMethodBuilder.Create(); var $state = 0; TaskAwaiter $a1; Action $resume = delegate { try { if ($state == 1) goto L1; var client = new WebClient(); var task = client.DownloadStringTaskAsync(url); $state = 1; $a1 = task.GetAwaiter(); if ($a1.BeginAwait($resume)) return; L1: var text = $a1.EndAwait(); var xml = XElement.Parse(text); $builder.SetResult(xml); } catch (Exception $ex) { $builder.SetException($ex); } }; $resume(); return $builder.Task; } Task GetRssAsync(string url) { var $builder = AsyncMethodBuilder.Create(); var $state = 0; TaskAwaiter $a1; Action $resume = delegate { try { if ($state == 1) goto L1; var client = new WebClient(); var task = client.DownloadStringTaskAsync(url); $state = 1; $a1 = task.GetAwaiter(); if ($a1.BeginAwait($resume)) return; L1: var text = $a1.EndAwait(); var xml = XElement.Parse(text); $builder.SetResult(xml); } catch (Exception $ex) { $builder.SetException($ex); } }; $resume(); return $builder.Task; }

As simple as synchronous code Unifies computational, network and I/O asynchrony More scalable servers More responsive UI

C# 1.0 Managed Code C# 2.0 Generics C# 3.0 Language Integrated Query C# 4.0 Dynamic Typing Asynchronous Programming C# v.Next

Class Field public Foo private string X X Compiler Source code Source File Source code.NET Assembly Meta-programmingRead-Eval-Print Loop Language Object Model DSL Embedding

Visual Studio Async CTP Eric Lippert’s Blog The Async CTP does not currently work if SP1 is installed Need to install on top of the RTM version A new CTP will probably be released soon that will work with SP1