Asynkroninen ohjelmointi.net 4.5 versiolla



Samankaltaiset tiedostot
Office 2013 ja SQL Server 2012 SP1 uudet BI toiminnallisuudet Marko Somppi/Invenco Oy

Kuluttajapalvelun rakentaminen. Omegawave Mikko Heilimo

Malleja verkostojen rakentamisesta

Windows Phone 7.5 erilainen ja fiksu älypuhelin. Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy

Konesali ilman rajoja Kongressi A

SQL SERVER 2012 PARALLEL DATA WAREHOUSE APPLIANCE

Vi V nk n kej e ä Wi W nd n o d w o s 7: 7 n : käy ä tttö t ö ö n ö Etunimi Sukunimi

Luottamuksellinen viestintä. Kimmo Bergius Tietoturvajohtaja Microsoft Oy

Lisäarvoa liiketoimintaan

Kustannustehokas ohjelmistopohjainen puhe- ja puhelinviestintä

Juha Karppinen liiketoimintajohta palvelinohjelmistot Microsoft Oy. Millaisiin ratkaisuihin pilvipalvelut soveltuvat?

Yhdistetty viestintä - the next generation of communications. Harri Henell, Nokia Jorma Bergius, Microsoft Antti Kiviniemi, Microsoft

Puheviestinnän murros

Office käyttöönotto Heikki Bergius heikki.bergius@sovelto.fi

Juha Karppinen liiketoimintajohta palvelinohjelmistot Microsoft Oy. Millaisiin ratkaisuihin pilvipalvelut soveltuvat?

Tuottavuutta viestinnän välineillä Asiantuntijatyön johtaminen. Ari Rahkonen Toimitusjohtaja, Microsoft Oy

Älykäs paikkatietoinen ostoskärry

Modernit sovellukset ja asynkronisuus Heikki Raatikainen

Tech Conference Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

Nykyaikainen viestintäalusta

Olet vastuussa osaamisestasi

LX 70. Ominaisuuksien mittaustulokset 1-kerroksinen 2-kerroksinen. Fyysiset ominaisuudet, nimellisarvot. Kalvon ominaisuudet

Delegaatit ja tapahtumakäsittelijät

Windows 8 Hallinta Petri Paavola Sami Laiho

HYÖDYNNÄ SUBSCRIPTION-ETUSI

Web Services tietokantaohjelmoinnin perusteet

Kill XP. Petri Paavola MVP

HiQ Finland Älypuhelinsovellusten käyttäjälähtöisen kehityksen tukeminen

Turvaa vihdoin hallitusti sähköpostit, asiakas- ja kumppaniviestintä sekä tietosisällöt

Intel Threading Building Blocks

HYÖDYNNÄ SUBSCRIPTION-ETUSI

Novell Access Manager ja Novell Cloud Security Service Pekka Lindqvist Markku Wallgren

HYÖDYNNÄ SUBSCRIPTION-ETUSI

Nykyaikaiset paikkatietoratkaisut. Autodesk AutoCAD Civil 3D 2015 A BIM for infrastructure software solution. Olli Ojala Future Group Oy

Webinaari: Vuorovaikutus lisää liiketoimintaa

Apuja ohjelmointiin» Yleisiä virheitä

10 Lock Lock-lause

Rinnakkaisuus (.NET) Juha Järvensivu 2007

HYÖDYNNÄ SUBSCRIPTION-ETUSI SUBSCRIPTION SOPIMUSTEN HALLINTA

Parempaa varmistusta kaikille!

HYÖDYNNÄ SUBSCRIPTION-ETUSI

Autodesk Lisenssitiedosto Autodesk, Inc.

SAP Best Practices. Yhden tai usean toimialan asiantuntemus valmiissa paketissa. Saatavuus - SAP-asiakkaat ja SAP-kumppanit

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Poikkeustenkäsittely

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Tibio Luottaa Lenovon konesaliteknologiaan

815338A Ohjelmointikielten periaatteet

Karkaavatko ylläpitokustannukset miten kustannukset ja tuotot johdetaan hallitusti?

Ohjelmistojen mallintaminen, sekvenssikaaviot

Suomalainen Ranskassa. Ratkaisuja ja Välineitä Verosuunnitteluun

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Autodesk 2015 Miikka Vehkaoja Profox Companies Oy Autodesk

LUONNOS RT EN AGREEMENT ON BUILDING WORKS 1 THE PARTIES. May (10)

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Antti Alila Teknologia-asiantuntija

TechReady 14 3/12/2013. Agenda. 1. Aluksi. #td2013fi. Johtaminen

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Olio-ohjelmointi Virhetilanteiden käsittely

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Visma Software Oy

14. Poikkeukset 14.1

Atostek. KanTa-konseptin tuotteistaminen ja vienti ulkomaille

Skannaaminen RightFaxiin. Pääkäyttäjän opas

Uusi sähköposti Investointi tulevaisuuteen. Tom Toivonen Liiketoimintajohtaja - Tuottavuusratkaisut Microsoft Oy

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Microsoftin mobiilistrategia ja Windows Mobile 6.5

Salasanan vaihto uuteen / How to change password

Mitä poikkeuskäsittely tarkoittaa?

Sisällys. 15. Lohkot. Lohkot. Lohkot

Omistusstrategian vaihtoehdot KPMG:n näkemys

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Ohjelmoinnin peruskurssien laaja oppimäärä

ebooks in the libraries ebib trial and results

Vuosi Jukka Rinnevaara Toimitusjohtaja

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Microsoftin mobiilistrategia ja Windows Mobile 6.5

OMINAISUUDET

Federointi kertakirjautumisen mahdollistajana Mika Seitsonen ja Ahti Haukilehto, senior-konsultit Soveltosta

Kiintolevyn irroitus- ja luovutuspalvelun tarjoaminen Xerox -tuotteille Euroopassa

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Kitchen Pendant 2/10/19

Microsoft Visual Studio 2005

.NET 2006 ja sen jälkeen

C# Windows ohjelmointi perusopas

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Security server v6 installation requirements

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

C# ja.net. Juha Järvensivu 2007

14. Poikkeukset 14.1

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

SIJOITUSRISKIEN TARKASTELU 1/2 1

8. Näppäimistöltä lukeminen 8.1

Security server v6 installation requirements

Lync-vianselvityksen parhaat palat

Visma Nova Webservice Versio 1.1 /

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Portaaliteknologiat mahdollistavat ajattelutavan muutoksen

Power BI Tech Conference Power BI. #TechConfFI. Johdanto

Transkriptio:

Asynkroninen ohjelmointi.net 4.5 versiolla Jari Kallonen Software Specialist at Tieturi Oy Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management

- Asynkroninen ohjelmointi yleistä - Asynkroninen ohjelmointi C# 5/.NET 4.5 ympäristössä - Parannukset Task Parallel Libraryssa (TPL) Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management

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 Käytettävyys/Reagointi Parallel ohjelmointi Suorituskyky GUI (desktop, web, mobile) Tiede Cloud Sosiaalinen media Windows 8 Verkko, IO tehtävät Numeroiden 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(){ try { Console.WriteLine("Synchronic");; ThreadPool.QueueUserWorkItem(state => { try { Console.WriteLine("Parallel"); } catch (Exception exasync) { EventLog.WriteEntry("application", exasync.tostring()); } }, null); } catch (Exception ex) { EventLog.WriteEntry("application", ex.tostring()); } } async void Foo(){ try { Console.WriteLine("Synchronic"); await Task.Factory.StartNew(() => Console.WriteLine("Parallel")); } catch (Exception ex) { // handling both synchronic and parallel exceptions 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.