TechDays 2013 Jari Kallonen: Asynchronous Programming .NET 4.5

  • 223 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
223
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Asynkroninenohjelmointi .NET4.5 versiolla Régis Laurent Director of Operations, Global Knowledge Competencies include:Jari Kallonen Software Gold Learning Silver System ManagementSpecialist at Tieturi Oy
  • 2. - Asynkroninenohjelmointi yleistä- Asynkroninenohjelmointi C# Régis5/.NET 4.5 Laurent Director of Operations,ympäristössä Global Knowledge Competencies include: Gold Learning- Parannukset Task Silver System ManagementParallel Libraryssa(TPL)
  • 3. Mitä on asynkroninen koodi?Koodia jota suoritetaan samanaikaisesti kuten muutakoodiaKäytännössä siis koodi jota suoritetaan callbacktoiminossa (ThreadPool) tai säikeessä (Thread) ja tekeeesimerkiksi käyttöliittymästä käytettävämmän ilman“tiimalasia”
  • 4. Async vs. Parallel Async ohjelmointi  Parallel ohjelmointi  Käytettävyys/Reagointi  Suorituskyky  GUI (desktop, web, mobile)  Tiede  Cloud  Sosiaalinen media  Windows 8 Verkko, IO Numeroiden tehtävät murskaus
  • 5. Uusien Async toimintojen käyttöVisula Studio 2012 ja .NET 4.5 kautta suoraankäytettävissäVisual Studio 2010 ja .NET 4 ympäristöön voi asentaaVisual Studio Async CTP laajennoksenUseat System.IO nimiavaruudessa olevat luokat kutenStream, TextWriter ja TextReader sisältävät asyncmetoditSystem.Data.Common /System.Data.SqlClientnimiavaruuksissa olevat useat luokatWCF proxy sisältää oletuksena myös async metodit
  • 6. Ei näinKaikki toiminnot (palvelupyynnöt jne.) suoritetaan UIsäikeessä, joka tuo sen tutun tiimalasin elikäyttöliittymä on lukossa kunnes operaatio onsuoritettu
  • 7. DemoPitkäkestoinen ->UI:n käytettävyys-AsianOptions
  • 8. Aikaisempi tapaEnnen .NET 4.5 asynkroninen koodi toteutettiin esim. IAsyncResult mallilla (async delegaatti) Begin/End metodeilla Tapahtumapohjaisesti event mallillaEi välttämättä selkeää koska suoritus jakautuiuseamman metodin toiminnallisuuteenOma hankaluutensa poikkeuksien käsittelyyn, koskaeivät kupli pääsäikeen poikkeuskäsittelyyn
  • 9. Uusi .NET 4.5 tapaasync ja await avainsanatasync kertoo kääntäjälle että metodi sisältää asynkronistatoimintoa, käytännössä metodi myös sisältää awaitavainsanan – public async void MyMethodAsync() {}Siinä se mitä async tekee mutta se ei tee vielä metodistaasynkronistaKäytä await avainsanaa kutsuessasi async metodia jokapalauttaa Task:n – string name = await MyMethodAsync();Kutsuttu metodi palautuu kutsuvalle säikeelle (palataantähän myöhemmin)
  • 10. TaskTask “Tehtävä” esiteltiin 4.0 versiossa ja löytyvätSystem.Threading.Tasks nimiavaruudestaTask kuvaa tehtävää joka suoritetaan kokonaisuudessaasynkronisestiTaskia voidaan odottaa, peruuttaa, raportoida sen tilaaja se voi palauttaa arvon. Taskia käytetään Task ParallelLibraryn (TPL) kanssaNET 4.5 toiminnallisuutta on paranneltu
  • 11. Luokkakirjaston nimeämiskäytännötAsynkroniset metodit päättyvät Async sanaan -StreamWriter.ReadToEndAsync(); - WebClient.DownloadDataTaskAsync();Useat IO-, verkko-luokat ym. Sisältävät tuen oheisennimeämiskäytännön mukaan [Task]Async jälkiliitteellä
  • 12. Demoasync /await-AsyncAwait simple
  • 13. PoikkeuskäsittelyAutomaattisesti kuplii kutsujaan, mikä ei aikasemmissaasynkronisissa näin mennytYksinkertaistaa poikkeusten käsittelyä, ei muuta kuinkutsu try-catch lohkoon ja siinä seKäisttelee synkronisen ja asynkronisen suorituksenpoikkeukset samassa käsittelijässä
  • 14. Sync vs. Async poikkeuskäsittelyvoid Foo(){ async void Foo(){ try { try { Console.WriteLine("Synchronic");; Console.WriteLine("Synchronic"); ThreadPool.QueueUserWorkItem(state => await Task.Factory.StartNew(() => { Console.WriteLine("Parallel")); try { } Console.WriteLine("Parallel"); catch (Exception ex) { } // handling both synchronic and parallel exceptions catch (Exception exAsync) { EventLog.WriteEntry("application", EventLog.WriteEntry("application", exAsync.ToString()); ex.ToString()); } } }, null); } } catch (Exception ex) { EventLog.WriteEntry("application", ex.ToString()); }}
  • 15. Taskin OdotusTask.WhenAny(), Task.WhenAll() -Ei jatketa kunnes taski tai kaikki taskit ovat lopettaneet - Linq, extension methods ja Lambda hyvänä apuna
  • 16. RinnakkaisuusParallel.For(), Parallel.ForEach()Ovat osa TPL kirjastoa versiosta 4.0 lähtienMahdollistaa listojen läpikäymisen samanaikaisesti eriytimissäOK, mikäli eivät käsittele UI säiettä
  • 17. DemoRinnakkaisuus ja Parallel.For ()-Mandelbrot
  • 18. Taskin pakottaminen omaan taustasäikeeseenTaskin voi siirtää taustasäikeeseen “ThreadPooliin”Task.Run() metodilla
  • 19. Viive Taskin suorituksessaPerinteisesti Thread.Sleep() metodillaAsync koodissa Task.Delay() metodilla
  • 20. YhteenvetoAsynkroninen ohjelmointi .NET 4.5 versiollayksinkertaistaa asynkronisen koodin toteutusta japoikkeusten käsittelyä.NET 4.5 sisältää valmiiksi tähän malliin toteutetutmetodit useissa luokissaEdelleen normaalisti käytössä ThreadPool ja ThreadkäsittelyValmiina Visual Studio 2012 / .NET 4.5 versiossa, sekäsaatavana Visual Studio 2010/.NET 4 ympäristöönVisual Studio Async CTP:n kautta
  • 21. Kiitos ja kumarrusJari.kallonen@tieturi.fi© 2012 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 informationalpurposes only and represents the current view of Microsoft Corporation as of the date of this presentations. 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.