SlideShare a Scribd company logo
Asynkroninen
ohjelmointi .NET
4.5 versiolla              Régis
                           Laurent
                           Director of Operations,
                           Global Knowledge
                           Competencies include:
Jari Kallonen Software     Gold Learning
                           Silver System Management
Specialist at Tieturi Oy
- Asynkroninen
ohjelmointi yleistä
- Asynkroninen
ohjelmointi C#        Régis

5/.NET 4.5
                      Laurent
                      Director of Operations,


ympäristössä
                      Global Knowledge
                      Competencies include:
                      Gold Learning

- Parannukset Task    Silver System Management



Parallel Libraryssa
(TPL)
Mitä on asynkroninen koodi?

Koodia jota suoritetaan samanaikaisesti kuten muuta
koodia
Käytännössä siis koodi jota suoritetaan callback
toiminossa (ThreadPool) tai säikeessä (Thread) ja tekee
esimerkiksi käyttöliittymästä käytettävämmän ilman
“tiimalasia”
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
Uusien Async toimintojen käyttö

Visula Studio 2012 ja .NET 4.5 kautta suoraan
käytettävissä
Visual Studio 2010 ja .NET 4 ympäristöön voi asentaa
Visual Studio Async CTP laajennoksen
Useat System.IO nimiavaruudessa olevat luokat kuten
Stream, TextWriter ja TextReader sisältävät async
metodit
System.Data.Common /System.Data.SqlClient
nimiavaruuksissa olevat useat luokat
WCF proxy sisältää oletuksena myös async metodit
Ei näin

Kaikki toiminnot (palvelupyynnöt jne.) suoritetaan UI
säikeessä, joka tuo sen tutun tiimalasin eli
käyttöliittymä on lukossa kunnes operaatio on
suoritettu
Demo

Pitkäkestoinen ->UI:n käytettävyys
-AsianOptions
Aikaisempi tapa

Ennen .NET 4.5 asynkroninen koodi toteutettiin esim.
     IAsyncResult mallilla (async delegaatti) Begin/End
     metodeilla
     Tapahtumapohjaisesti event mallilla
Ei välttämättä selkeää koska suoritus jakautui
useamman metodin toiminnallisuuteen
Oma hankaluutensa poikkeuksien käsittelyyn, koska
eivät kupli pääsäikeen poikkeuskäsittelyyn
Uusi .NET 4.5 tapa

async ja await avainsanat
async kertoo kääntäjälle että metodi sisältää asynkronista
toimintoa, käytännössä metodi myös sisältää await
avainsanan
     – public async void MyMethodAsync() {}
Siinä se mitä async tekee mutta se ei tee vielä metodista
asynkronista
Käytä await avainsanaa kutsuessasi async metodia joka
palauttaa Task:n
     – string name = await MyMethodAsync();
Kutsuttu metodi palautuu kutsuvalle säikeelle (palataan
tähän myöhemmin)
Task

Task “Tehtävä” esiteltiin 4.0 versiossa ja löytyvät
System.Threading.Tasks nimiavaruudesta
Task kuvaa tehtävää joka suoritetaan kokonaisuudessa
asynkronisesti
Taskia voidaan odottaa, peruuttaa, raportoida sen tilaa
ja se voi palauttaa arvon. Taskia käytetään Task Parallel
Libraryn (TPL) kanssa
NET 4.5 toiminnallisuutta on paranneltu
Luokkakirjaston nimeämiskäytännöt

Asynkroniset metodit päättyvät Async sanaan
     -StreamWriter.ReadToEndAsync();
    - WebClient.DownloadDataTaskAsync();
Useat IO-, verkko-luokat ym. Sisältävät tuen oheisen
nimeämiskäytännön mukaan [Task]Async jälkiliitteellä
Demo

async /await
-AsyncAwait simple
Poikkeuskäsittely

Automaattisesti kuplii kutsujaan, mikä ei aikasemmissa
asynkronisissa näin mennyt
Yksinkertaistaa poikkeusten käsittelyä, ei muuta kuin
kutsu try-catch lohkoon ja siinä se
Käisttelee synkronisen ja asynkronisen suorituksen
poikkeukset samassa käsittelijässä
Sync vs. Async poikkeuskäsittely

void 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());
    }
}
Taskin Odotus

Task.WhenAny(), Task.WhenAll()
     -Ei jatketa kunnes taski tai kaikki taskit ovat
     lopettaneet
     - Linq, extension methods ja Lambda hyvänä
     apuna
Rinnakkaisuus

Parallel.For(), Parallel.ForEach()
Ovat osa TPL kirjastoa versiosta 4.0 lähtien
Mahdollistaa listojen läpikäymisen samanaikaisesti eri
ytimissä
OK, mikäli eivät käsittele UI säiettä
Demo

Rinnakkaisuus ja Parallel.For ()
-Mandelbrot
Taskin pakottaminen omaan taustasäikeeseen

Taskin voi siirtää taustasäikeeseen “ThreadPooliin”
Task.Run() metodilla
Viive Taskin suorituksessa

Perinteisesti Thread.Sleep() metodilla
Async koodissa Task.Delay() metodilla
Yhteenveto

Asynkroninen ohjelmointi .NET 4.5 versiolla
yksinkertaistaa asynkronisen koodin toteutusta ja
poikkeusten käsittelyä
.NET 4.5 sisältää valmiiksi tähän malliin toteutetut
metodit useissa luokissa
Edelleen normaalisti käytössä ThreadPool ja Thread
käsittely
Valmiina Visual Studio 2012 / .NET 4.5 versiossa, sekä
saatavana Visual Studio 2010/.NET 4 ympäristöön
Visual Studio Async CTP:n kautta
Kiitos ja kumarrus
Jari.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 informational
purposes 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.

More Related Content

More from Tieturi Oy

Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa . Timo Summa...
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa. Timo Summa...Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa. Timo Summa...
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa . Timo Summa...
Tieturi Oy
 
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Tieturi Oy
 
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Tieturi Oy
 
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
Tieturi Oy
 
Testaus 2014: Paul Gerrard - The Changing Role of Testers'
Testaus 2014: Paul Gerrard - The Changing Role of Testers'Testaus 2014: Paul Gerrard - The Changing Role of Testers'
Testaus 2014: Paul Gerrard - The Changing Role of Testers'
Tieturi Oy
 
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
Tieturi Oy
 
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...Tieturi Oy
 
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
Tieturi Oy
 
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
Tieturi Oy
 
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
Tieturi Oy
 
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Tieturi Oy
 
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
Tieturi Oy
 
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
Tieturi Oy
 
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
Tieturi Oy
 
27.1.2014 Tampere. Perinteinen mobiilimaailma murroksessa. Tommi Teräsvirta: ...
27.1.2014 Tampere. Perinteinen mobiilimaailma murroksessa. Tommi Teräsvirta: ...27.1.2014 Tampere. Perinteinen mobiilimaailma murroksessa. Tommi Teräsvirta: ...
27.1.2014 Tampere. Perinteinen mobiilimaailma murroksessa. Tommi Teräsvirta: ...
Tieturi Oy
 
27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...
27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...
27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...
Tieturi Oy
 
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Arto Santala: And...
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Arto Santala: And...27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Arto Santala: And...
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Arto Santala: And...
Tieturi Oy
 
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Tapio Valli: Digi...
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Tapio Valli: Digi...27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Tapio Valli: Digi...
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Tapio Valli: Digi...
Tieturi Oy
 
Eettisten ytden jälkihoito - Hyveillä hyvinvoiva organisaatio konsultointituote
Eettisten ytden jälkihoito - Hyveillä hyvinvoiva organisaatio konsultointituoteEettisten ytden jälkihoito - Hyveillä hyvinvoiva organisaatio konsultointituote
Eettisten ytden jälkihoito - Hyveillä hyvinvoiva organisaatio konsultointituoteTieturi Oy
 
Eettiset yt:t – voiko niitä käydä?: Niklas Reuter: Kyselytutkimuksen keskeise...
Eettiset yt:t – voiko niitä käydä?: Niklas Reuter: Kyselytutkimuksen keskeise...Eettiset yt:t – voiko niitä käydä?: Niklas Reuter: Kyselytutkimuksen keskeise...
Eettiset yt:t – voiko niitä käydä?: Niklas Reuter: Kyselytutkimuksen keskeise...
Tieturi Oy
 

More from Tieturi Oy (20)

Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa . Timo Summa...
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa. Timo Summa...Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa. Timo Summa...
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa . Timo Summa...
 
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
 
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
 
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
 
Testaus 2014: Paul Gerrard - The Changing Role of Testers'
Testaus 2014: Paul Gerrard - The Changing Role of Testers'Testaus 2014: Paul Gerrard - The Changing Role of Testers'
Testaus 2014: Paul Gerrard - The Changing Role of Testers'
 
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
 
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
 
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
 
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
 
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
 
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
 
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
 
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
 
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
 
27.1.2014 Tampere. Perinteinen mobiilimaailma murroksessa. Tommi Teräsvirta: ...
27.1.2014 Tampere. Perinteinen mobiilimaailma murroksessa. Tommi Teräsvirta: ...27.1.2014 Tampere. Perinteinen mobiilimaailma murroksessa. Tommi Teräsvirta: ...
27.1.2014 Tampere. Perinteinen mobiilimaailma murroksessa. Tommi Teräsvirta: ...
 
27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...
27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...
27.1.2014, Tampere. Perinteinen mobiilimaailma murroksessa. Petri Niemi: Sing...
 
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Arto Santala: And...
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Arto Santala: And...27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Arto Santala: And...
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Arto Santala: And...
 
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Tapio Valli: Digi...
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Tapio Valli: Digi...27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Tapio Valli: Digi...
27.1.2014, Tampere: Perinteinen mobiilimaailma murroksessa. Tapio Valli: Digi...
 
Eettisten ytden jälkihoito - Hyveillä hyvinvoiva organisaatio konsultointituote
Eettisten ytden jälkihoito - Hyveillä hyvinvoiva organisaatio konsultointituoteEettisten ytden jälkihoito - Hyveillä hyvinvoiva organisaatio konsultointituote
Eettisten ytden jälkihoito - Hyveillä hyvinvoiva organisaatio konsultointituote
 
Eettiset yt:t – voiko niitä käydä?: Niklas Reuter: Kyselytutkimuksen keskeise...
Eettiset yt:t – voiko niitä käydä?: Niklas Reuter: Kyselytutkimuksen keskeise...Eettiset yt:t – voiko niitä käydä?: Niklas Reuter: Kyselytutkimuksen keskeise...
Eettiset yt:t – voiko niitä käydä?: Niklas Reuter: Kyselytutkimuksen keskeise...
 

TechDays 2013 Jari Kallonen: Asynchronous Programming .NET 4.5

  • 1. Asynkroninen ohjelmointi .NET 4.5 versiolla Régis Laurent Director of Operations, Global Knowledge Competencies include: Jari Kallonen Software Gold Learning Silver System Management Specialist at Tieturi Oy
  • 2. - Asynkroninen ohjelmointi yleistä - Asynkroninen ohjelmointi C# Régis 5/.NET 4.5 Laurent Director of Operations, ympäristössä Global Knowledge Competencies include: Gold Learning - Parannukset Task Silver System Management Parallel Libraryssa (TPL)
  • 3. Mitä on asynkroninen koodi? Koodia jota suoritetaan samanaikaisesti kuten muuta koodia Käytännössä siis koodi jota suoritetaan callback toiminossa (ThreadPool) tai säikeessä (Thread) ja tekee esimerkiksi 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 suoraan käytettävissä Visual Studio 2010 ja .NET 4 ympäristöön voi asentaa Visual Studio Async CTP laajennoksen Useat System.IO nimiavaruudessa olevat luokat kuten Stream, TextWriter ja TextReader sisältävät async metodit System.Data.Common /System.Data.SqlClient nimiavaruuksissa olevat useat luokat WCF proxy sisältää oletuksena myös async metodit
  • 6. Ei näin Kaikki toiminnot (palvelupyynnöt jne.) suoritetaan UI säikeessä, joka tuo sen tutun tiimalasin eli käyttöliittymä on lukossa kunnes operaatio on suoritettu
  • 8. Aikaisempi tapa Ennen .NET 4.5 asynkroninen koodi toteutettiin esim. IAsyncResult mallilla (async delegaatti) Begin/End metodeilla Tapahtumapohjaisesti event mallilla Ei välttämättä selkeää koska suoritus jakautui useamman metodin toiminnallisuuteen Oma hankaluutensa poikkeuksien käsittelyyn, koska eivät kupli pääsäikeen poikkeuskäsittelyyn
  • 9. Uusi .NET 4.5 tapa async ja await avainsanat async kertoo kääntäjälle että metodi sisältää asynkronista toimintoa, käytännössä metodi myös sisältää await avainsanan – public async void MyMethodAsync() {} Siinä se mitä async tekee mutta se ei tee vielä metodista asynkronista Käytä await avainsanaa kutsuessasi async metodia joka palauttaa Task:n – string name = await MyMethodAsync(); Kutsuttu metodi palautuu kutsuvalle säikeelle (palataan tähän myöhemmin)
  • 10. Task Task “Tehtävä” esiteltiin 4.0 versiossa ja löytyvät System.Threading.Tasks nimiavaruudesta Task kuvaa tehtävää joka suoritetaan kokonaisuudessa asynkronisesti Taskia voidaan odottaa, peruuttaa, raportoida sen tilaa ja se voi palauttaa arvon. Taskia käytetään Task Parallel Libraryn (TPL) kanssa NET 4.5 toiminnallisuutta on paranneltu
  • 11. Luokkakirjaston nimeämiskäytännöt Asynkroniset metodit päättyvät Async sanaan -StreamWriter.ReadToEndAsync(); - WebClient.DownloadDataTaskAsync(); Useat IO-, verkko-luokat ym. Sisältävät tuen oheisen nimeämiskäytännön mukaan [Task]Async jälkiliitteellä
  • 13. Poikkeuskäsittely Automaattisesti kuplii kutsujaan, mikä ei aikasemmissa asynkronisissa näin mennyt Yksinkertaistaa poikkeusten käsittelyä, ei muuta kuin kutsu try-catch lohkoon ja siinä se Käisttelee synkronisen ja asynkronisen suorituksen poikkeukset samassa käsittelijässä
  • 14. Sync vs. Async poikkeuskäsittely void 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 Odotus Task.WhenAny(), Task.WhenAll() -Ei jatketa kunnes taski tai kaikki taskit ovat lopettaneet - Linq, extension methods ja Lambda hyvänä apuna
  • 16. Rinnakkaisuus Parallel.For(), Parallel.ForEach() Ovat osa TPL kirjastoa versiosta 4.0 lähtien Mahdollistaa listojen läpikäymisen samanaikaisesti eri ytimissä OK, mikäli eivät käsittele UI säiettä
  • 18. Taskin pakottaminen omaan taustasäikeeseen Taskin voi siirtää taustasäikeeseen “ThreadPooliin” Task.Run() metodilla
  • 19. Viive Taskin suorituksessa Perinteisesti Thread.Sleep() metodilla Async koodissa Task.Delay() metodilla
  • 20. Yhteenveto Asynkroninen ohjelmointi .NET 4.5 versiolla yksinkertaistaa asynkronisen koodin toteutusta ja poikkeusten käsittelyä .NET 4.5 sisältää valmiiksi tähän malliin toteutetut metodit useissa luokissa Edelleen normaalisti käytössä ThreadPool ja Thread käsittely Valmiina Visual Studio 2012 / .NET 4.5 versiossa, sekä saatavana Visual Studio 2010/.NET 4 ympäristöön Visual Studio Async CTP:n kautta
  • 21. Kiitos ja kumarrus Jari.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 informational purposes 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.