async history in .net
Post on 24-May-2015
4.945 Views
Preview:
DESCRIPTION
TRANSCRIPT
非同期勉強会
Async History in .NET- 50分でお届けする14年分の進化 -
Name
鈴木孝明
Twitter Account
@xin9le
Award
Microsoft MVP for Visual C#
Web Site
http://xin9le.net
About Me
サラッと押さえる非同期処理の基礎
Basis of Asynchronous
同期 vs 非同期
UIスレッド
応答可能
UIスレッド 別スレッド
応答不能
フリーズ防止CUI / GUIなら、まだ多少はフリーズに耐えられる
TUI / NUIになると驚くほど耐えられない
バックグラウンド処理による効率化裏側で勝手に終わってると心地いい
非同期処理の必要性
主な適用シーン
DBアクセス重たい処理ファイルの読み書き
ネットワーク通信
.NETが提供してきた非同期パターンの数々
Asynchronous History
APIの変遷
Task-based
async/await
Reactive Extensions
Event-based
Async Programming Model
ThreadPool
Thread
同期的な書き方
Thread
1スレッド1MB程度
作成コストが大きい
ThreadPool
効率的なタスク処理
スレッドを使い回す
Async Programming Model
書き方がかなり煩雑
BeginXxxEndXxx
Event-based
明確な処理の切り分け
Task-based
簡潔な処理フロー
Reactive Extensions
宣言的な書き味
async/await
もはや魔法同期とほぼ同じ書き方
非同期メソッドの基本的な使い方
async/await
async 修飾子 / await 演算子
含まないと警告が出る
1つ以上のawaitを含む
async/await の挙動
UIスレッド 別スレッド
任意のユーザー操作
戻り値 : void
それ以外は非推奨
イベント専用
戻り値 : Task / Task<T>
待機/戻り値が必要な時
広範な記述可能箇所
例外 :
エントリーポイントコンストラクタ / デストラクタcatch / finally句lockステートメント (etc...)
大抵の式に適用可
既定では自動復帰「UIスレッドに戻す」という意識すら不要
明示的にスレッドを戻さない
呼び出し元スレッドへの復帰
例外処理
try句でのみawait可
いつもの書き方
ちょっと番外編
Extra Contents
MSテストの非同期
戻り値をTaskにする
awaitの記述が可能
ASP.NET MVC 4 以降の非同期
産廃:AsyncController
Taskに包むだけ
WCF 4.5 で非同期に対応
サーバー側の効率化
4つのインターフェースから成る
Task型との相互変換の提供C#/.NET では何も意識することなく async/await で記述可能
http://xin9le.net/articles/79
ストアアプリでの非同期
IAsyncAction IAsyncActionWithProgress
IAsyncOperation IAsyncOperationWithProgress
await はコンパイラが別の形に展開する内部的にはクラスが自動生成される
C# 5.0現在、ローカル変数はメンバー変数に昇格している
vNext では変数昇格が最小限になる (予定)
ガベージコレクション周りのパフォーマンス改善
http://ufcpp.wordpress.com/2014/04/05/c-vnext-roslyn-でのasyncawait-の仕様変更/
コンパイラ展開の仕様変更
折角なので非同期な話題のLTでも
Another Story
地元の某上場企業に入社パソコンに興味があっただけのただの新卒
2007/04
新人プログラミング研修intもstringも知らない子でした
先生は某C# MVP
2007/05 – 2007/09
陸の孤島で缶詰教育
独学でC#の勉強を開始(できちゃった)結婚の現実逃避でした...
2008/02
2009/01/27 – 2009/01/28
Tech Days 2009の資料公開参加できなかったから心待ちにしてた
2009/03/02
Hokuriku.NET vol.4勇気を出して勉強会に初参加
長沢さん (@tomohn) の影響でTwitterを始める
2010/07/17
Hokuriku.NET vol.6勉強会で初登壇 (VSTOネタ)
2011/04/23
http://atnd.org/events/13237
Hokuriku.NET C# -LINQ入門-講師は当時北陸唯一のC# MVPだった小島さん
2011/06/11 – 2011/06/25
http://atnd.org/events/15800
このときの懇親会が始まりだった...
「次はTPLがいいですー」
俗に言う「お前がやれ」事件
「次は鈴木さんがやりましょう」
ファッ!? (゚Д゚;)恩師には逆らえず...
Blogで「TPL入門」を書き始めるそれからしばらく「勉強して記事書いて...」の繰り返し
ハンズオン勉強会の成功ため必至
2011/07/08
http://xin9le.net/tpl-intro
ReactiveProperty公開LINQの神様 (@neuecc) の超画期的なアイディア
「Rxってなんぞ!?」と興味津々
2011/08/26
http://neue.cc/2011/08/26_341.html
Visual Studio 11 Developer Preview 公開.NET Framework 4.5 / C# 5.0
新キーワード : async/await
2011/09/14
Hokuriku.NET C# -TPL入門-人生初めてのハンズオン講師
Ustream中継/録画もあって超緊張してました
2011/09/17
http://atnd.org/events/19165
このときの懇親会でも...
「次はRxがいいなー (誰かお願い)」
「お前がやれ」事件 Part.2
「じゃあやってよ ^^」
/(^o^)\代表にも逆らえず...
Hokuriku.NET vol.8async/await 触ってみたよ系
2011/11/19
http://atnd.org/events/20801
Blogで「Rx入門」を書き始めるTPL入門同様「勉強して記事書いて...」の繰り返し
迫りくるハンズオン勉強会のため必至
2011/12/10
http://xin9le.net/rx-intro
某所からRx入門記事の執筆依頼を受ける散々悩んだ結果、丁重にお断りさせて頂きました
(全く自信がなかった...)
2012/01/04
Hokuriku.NET C# -Rx入門-人生2度目のハンズオン講師
1回で伝えきれず、2回に渡って開催することに
2012/02/11 - 2012/03/17
http://atnd.org/events/23964
Hokuriku.NET vol.9Rxで簡単に実現できるサンプルの紹介
「そう、Rxならね」
2012/03/10
http://atnd.org/events/24756
Community Open Day 2012async/await の使い方紹介
コンパイラ展開を逆コンパイルで解析したり
2012/06/09
http://atnd.org/events/28159
MVP Award 初受賞2012/07/01
Microsoft MVP for Visual C#
Blogで「非同期メソッド入門」を開始COD 2012のために折角いっぱい調べたし、まとめとこ
2012/07/12
http://xin9le.net/async-method-intro
@ITさんより連載記事執筆の依頼を受けるC# 5.0のリリースに先立ち非同期メソッドの連載をしたい、と
Blogで入門記事を書くと意外と反響あって驚く
2012/08/10
「async/await入門」公開依頼されてから公開されるまでのスピード感
毎月1本 (全3回) の連載でしたが、大変さを思い知りました...
2012/08/31
http://www.atmarkit.co.jp/ait/subtop/features/dotnet/app/masterasync_index.html
地元企業向けに非同期勉強会を開催Rx だけのハズが延長営業で async/await もお願いされたり
頼まれると基本断れないタチ (#ご依頼ください)
2012/09/14
http://xin9le.net/articles/35
Hokuriku.NET × WCAF地元デザイナーとの合同勉強会
デザイナーにも「止まらない UI/UX」を意識するように説く
2013/04/13
http://xin9le.net/articles/41
北信越のC# MVPでコーディング対決@AILight / @Fujiwo / @xin9le
すごく盛り上がってたと思ったら、なんとNSAT 192を記録
2013/05/11
http://atnd.org/events/37799
MVP Award 再受賞2013/07/01
Microsoft MVP for Visual C#
業務でCTI (電話応対システム) を構築WPF + SignalR + Web API + Rx + async/await (etc...)
電話の処理って非同期処理のオンパレード
2013/09/01
ReactiveProperty Portableかずきさん (@okazuki) と一緒に開発者として参加
Taskベースの非同期検証機能を追加したりと、少しばかり貢献
2013/10/02
https://reactiveproperty.codeplex.com/
大量の有名人に遭遇2013/11/18 – 2013/11/21
2013 MVP Global Summit Nov
C#の父:Anders Hejlsberg
ASP.NETのアーキテクト:Scott Hanselman
GitHubの中の人:Phil Haack
SignalRの作者:Damian Edwards
赤シャツ副社長:Scott Guthrie
C#/VBチームの非同期担当:Lucian Wischik
ReactiveSignalRSignalR の少し面倒な記述を Rx を使って楽に
GitHub / NuGet で絶賛公開中!!
2014/01/02
http://xin9le.net/articles/117http://www.slideshare.net/xin9le/reactivesignalr
非同期勉強会2014/05/10
Enjoy Asynchronous!!
Thank you
For your good experience.
Asynchronous
top related