Suche senden
Hochladen
.NET vNext
•
Als PPTX, PDF herunterladen
•
17 gefällt mir
•
12,508 views
信之 岩永
Folgen
2014/8/23 こみゅぷらす にて
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 47
Jetzt herunterladen
Empfohlen
広がる .Net
広がる .Net
信之 岩永
C# design note sep 2014
C# design note sep 2014
信之 岩永
Modern .NET
Modern .NET
信之 岩永
Net fringejp2016
Net fringejp2016
Yusuke Fujiwara
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
Hub DotnetDeveloper
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
信之 岩永
dotnetconfJP2017_netcore2
dotnetconfJP2017_netcore2
Yusuke Fujiwara
Empfohlen
広がる .Net
広がる .Net
信之 岩永
C# design note sep 2014
C# design note sep 2014
信之 岩永
Modern .NET
Modern .NET
信之 岩永
Net fringejp2016
Net fringejp2016
Yusuke Fujiwara
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
Hub DotnetDeveloper
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
信之 岩永
dotnetconfJP2017_netcore2
dotnetconfJP2017_netcore2
Yusuke Fujiwara
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
Akira Inoue
.NET Core とマルチプラットフォーム
.NET Core とマルチプラットフォーム
shozon
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
Introduction to VSCode
Introduction to VSCode
Yuki Igarashi
Bluetoothでgo!
Bluetoothでgo!
Kouji Matsui
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Deep Dive C# 6.0
Deep Dive C# 6.0
信之 岩永
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Akira Inoue
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsi
Tadahiro Ishisaka
Introducing Fluent Design
Introducing Fluent Design
c-mitsuba
動的なILの生成と編集
動的なILの生成と編集
terurou
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発
Takahiro Kubo
わんくま名古屋 #37 (20151114) TDD道場 #25
わんくま名古屋 #37 (20151114) TDD道場 #25
Yasuhiko Yamamoto
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
Akira Inoue
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
20060419
20060419
小野 修司
.NET Coreとツール類の今
.NET Coreとツール類の今
Yuki Igarashi
Weitere ähnliche Inhalte
Was ist angesagt?
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
Akira Inoue
.NET Core とマルチプラットフォーム
.NET Core とマルチプラットフォーム
shozon
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
Introduction to VSCode
Introduction to VSCode
Yuki Igarashi
Bluetoothでgo!
Bluetoothでgo!
Kouji Matsui
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Deep Dive C# 6.0
Deep Dive C# 6.0
信之 岩永
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Akira Inoue
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsi
Tadahiro Ishisaka
Introducing Fluent Design
Introducing Fluent Design
c-mitsuba
動的なILの生成と編集
動的なILの生成と編集
terurou
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発
Takahiro Kubo
わんくま名古屋 #37 (20151114) TDD道場 #25
わんくま名古屋 #37 (20151114) TDD道場 #25
Yasuhiko Yamamoto
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
Akira Inoue
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
Was ist angesagt?
(20)
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET Core とマルチプラットフォーム
.NET Core とマルチプラットフォーム
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Introduction to VSCode
Introduction to VSCode
Bluetoothでgo!
Bluetoothでgo!
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Deep Dive C# 6.0
Deep Dive C# 6.0
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsi
Introducing Fluent Design
Introducing Fluent Design
動的なILの生成と編集
動的なILの生成と編集
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発
わんくま名古屋 #37 (20151114) TDD道場 #25
わんくま名古屋 #37 (20151114) TDD道場 #25
Async deepdive before de:code
Async deepdive before de:code
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Ähnlich wie .NET vNext
20060419
20060419
小野 修司
.NET Coreとツール類の今
.NET Coreとツール類の今
Yuki Igarashi
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
SAKURUG co.
20021007
20021007
小野 修司
20050903
20050903
小野 修司
JavaScript And Keywords
JavaScript And Keywords
uupaa
ALMツールたべくらべ
ALMツールたべくらべ
Kaoru NAKAMURA
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Fujio Kojima
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界
Akira Hatsune
Firefox Mobile
Firefox Mobile
Makoto Kato
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在
TomomitsuKusaba
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Akira Inoue
Firefox mobile for android internals
Firefox mobile for android internals
Makoto Kato
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
Ryo Mitoma
Node platforms
Node platforms
kumatch kumatch
ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜
ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜
Kensaku Komatsu
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そう
Mitsuhito Ishino
Fcp
Fcp
Naoto TAKAHASHI
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Yuya Yamaki
Ähnlich wie .NET vNext
(20)
20060419
20060419
.NET Coreとツール類の今
.NET Coreとツール類の今
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
20021007
20021007
20050903
20050903
JavaScript And Keywords
JavaScript And Keywords
ALMツールたべくらべ
ALMツールたべくらべ
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界
Firefox Mobile
Firefox Mobile
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Firefox mobile for android internals
Firefox mobile for android internals
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
Node platforms
Node platforms
ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜
ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そう
Fcp
Fcp
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Mehr von 信之 岩永
YouTube ライブ配信するようになった話
YouTube ライブ配信するようになった話
信之 岩永
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
信之 岩永
C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話
信之 岩永
Unicode文字列処理
Unicode文字列処理
信之 岩永
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
信之 岩永
C# 8.0 null許容参照型
C# 8.0 null許容参照型
信之 岩永
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
信之 岩永
async/await のしくみ
async/await のしくみ
信之 岩永
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
C#言語機能の作り方
C#言語機能の作り方
信之 岩永
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
信之 岩永
それっぽく、適当に
それっぽく、適当に
信之 岩永
.NET Compiler Platform
.NET Compiler Platform
信之 岩永
Orange Cube 自社フレームワーク 2015/3
Orange Cube 自社フレームワーク 2015/3
信之 岩永
Code Contracts in .NET 4
Code Contracts in .NET 4
信之 岩永
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
Coding Interview
Coding Interview
信之 岩永
非同期処理の基礎
非同期処理の基礎
信之 岩永
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
Mehr von 信之 岩永
(20)
YouTube ライブ配信するようになった話
YouTube ライブ配信するようになった話
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話
Unicode文字列処理
Unicode文字列処理
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
C# 8.0 null許容参照型
C# 8.0 null許容参照型
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
async/await のしくみ
async/await のしくみ
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
C#言語機能の作り方
C#言語機能の作り方
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
それっぽく、適当に
それっぽく、適当に
.NET Compiler Platform
.NET Compiler Platform
Orange Cube 自社フレームワーク 2015/3
Orange Cube 自社フレームワーク 2015/3
Code Contracts in .NET 4
Code Contracts in .NET 4
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
Coding Interview
Coding Interview
非同期処理の基礎
非同期処理の基礎
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
Kürzlich hochgeladen
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Kürzlich hochgeladen
(9)
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
.NET vNext
1.
.NET vNext 岩永 信之
2.
自己紹介 • 日本C#ユーザー会 • 日本のC#ユーザーを応援するコミュニティです •
codeseek • 「システムの品質はコードに宿る」をポリシーに活 動をしています • 毎月何かしら勉強会をやっています
3.
今日の内容 • 最近のMicrosoft • .NETの近い将来 •
.NET Native • .NET vNext Cloude Mode 主に.NETプログラムの 実行方式の話
4.
最近のMicrosoft One Windows Device First,
Cloud First
5.
One • One Microsoft •
One Windows • 単一チームで全Windowsを開発 • 単一のコア(NTカーネル) • 単一のストア • 単一API (Windows Runtime) 今、すでにそう なってる/なりつつある 要は、組織改編
6.
Device first, Cloud
first デスクトップ クライアント アプリ Phone/タブレット クライアント アプリ サーバー アプリ 既存資産 Mobile firstCloud first
7.
Mobile first, Cloud
first • “first” (優先して注力はするが、onlyではない) • 既存のデスクトップへの投資もまだ続く • MobileとCloud • 改めてこれから注力すべき場所を強調 (この方針自体は前から変わってない)
8.
.NETにとっては • Mobile first •
ストア越し(審査付き)のアプリ配布 • 低消費電力を求められる • Cloud first • サーバー上でのソースコード手直し • 共有ホスティング型のサーバーへの対応 .NET Native .NET vNext Cloud Mode
9.
.NET Frameworkの 実行方式 これまでの.NET Framework 中間言語とJIT
10.
中間コードとJITコンパイル • .NET Frameworkの中間言語 •
中間言語があることで • 高級言語のコンパイラーを作る人と、CPUごとの最 適化する人の分業化 • セキュリティ チェックしやすい • 動的リンク時に、コード修正の影響を吸収 • 動的な実行(リフレクション) 高級言語 (C#など) 中間言語 (IL) ネイティブ コード コンパイル コンパイル 問題は「いつやるか」
11.
中間言語の良し悪し 利点 • 動的リンク・部分更新しやすい • セキュリティ検証しやすい •
(ソースコード配布よりは)高速 欠点 • .NET Frameworkのランタイム インストール必須 • (ネイティブ配布よりは)低速 • (ソースコード配布よりは)デバッグ・修正が面倒 用途によっては…
12.
中間言語: デスクトップでは 利点 • 動的リンク・部分更新しやすい •
セキュリティ検証しやすい • (ソースコード配布よりは)高速 欠点 • .NET Frameworkのランタイム インストール必須 • (ネイティブ配布よりは)低速 • (ソースコード配布よりは)デバッグ・修正が面倒 JITとかWindowsサービス巡回 とかでないと保証しにくい PCの性能的に 許容範囲 なんだかんだいって JITのメリットあり JIT そんなに頻繁な 修正しない
13.
Just-in-Time • 実行した瞬間にコンパイル 高級言語 (C#など) 中間言語 (IL) ネイティブ コード コンパイル コンパイル 開発環境
実行環境 配布 ビルド時 Just-in-Time (実行した瞬間) 起動した瞬間が重い 起動のたびに処理が走る (最初期からある)
14.
Ngen • Ngen.exe (Native
Image Generator) • ILを事前にネイティブ化するためのツール • 自前管理が必要 • アプリのインストーラー※とかを作って明示的に呼び出し • 参照しているライブラリが更新された時には呼びなおす 必要あり • かなり面倒なのでアプリを Ngenすることはめったにない • .NET自体が標準ライブラリの 高速化のために使ってる ※ 要するに、JITの負担を起動時じゃなくてインストール時に前倒しする (最初期からある)
15.
Auto-Ngen • NgenがWindowsサービスとして常に動いてる • アイドル時に動作 •
利用頻度の高いものを自動的にNgen • デスクトップ アプリの場合はGACアセンブリのみ • Windowsストア アプリの場合はすべてのアセンブリ • よく使うアプリの起動はだいぶ早くなる • インストール直後の起動は相変わらず遅い (.NET 4.5)
16.
問題: 実行環境の多様化 デスクトップ クライアント アプリ Phone/タブレット クライアント
アプリ サーバー アプリ 既存資産 Mobile firstCloud first 要件が変わる
17.
Mobile first 携帯端末中心の.NET Framework 端末側の負担を減らす
18.
中間言語: 携帯デバイスでは 利点 • 動的リンク・部分更新しやすい •
セキュリティ検証しやすい • (ソースコード配布よりは)高速 欠点 • .NET Frameworkのランタイム インストール必須 • (ネイティブ配布よりは)低速 • (ソースコード配布よりは)デバッグ・修正が面倒 ストア サーバー上で やればいい ランタイム分のストレージ 容量使いたくない 性能的に結構困る ストア サーバー上で ネイティブ化 .NET Native
19.
MDIL※ • 部分的に、事前ネイティブ化 • 動的リンクに必要な情報だけ中間言語を残す push
ebp mov ebp,esp cmp dword ptr ds:[5011058h],0 je 00FE2A01 call 74B7AEA8 mov eax,dword ptr [ebp+8] lea edx,[ebp+8] imul eax,dword ptr [edx+4] lea edx,[ebp+8] imul eax,dword ptr [edx+8] pop ebp ret 0Ch int32 Point::X int32 Point::Y int32 Point::Z 型情報だけ残す (動的リンクに必要) ※ Machine Dependent Intermediate Language (Windows Phone 8) ほぼネイティブ
20.
MDIL (Compile in
the Cloud) • ストア サーバー上でMDIL化までやっておく C#コード IL MDIL ネイティブ コード C#コンパイラー MDILコンパイラー リンカー 開発環境でILにコンパイル Windowsストア サーバー 上でILをMDIL化 Windows Phone実機上では レイアウトの解決(リンク)だけ行う インストール直後の起動も高速 (Windows Phone 8)
21.
.NET Native • ストア
サーバー上でネイティブ化 C#コンパイラー 開発環境でILにコンパイル Windowsストア サーバー 上でネイティブ化 ネイティブ化したものを デバイスに配布 C#コード IL 事前コード生成 ILレベル最適化 MDIL ネイティブ コード crossgen コンパイラー (vNext)
22.
.NET Native: in
the Cloud • 基本的にストア アプリ用 • セキュリティ保証などはサーバー上で • アップロード時にはIL、審査付き • クライアント デバイス的には低コスト • JITのコストなし、ランタイムのインストール不要 • Visual Studio上で直接ネイティブ化も可能 • 通常版の.NETとの差で問題が起きないかの確認用 • 特にパフォーマンス (vNext)
23.
.NET Native: 最適化 •
「事前にJIT相当の処理」以上の最適化も • C++最適化コンパイラーと成果共有 • シリアライズなどのコードを事前に展開 • 型情報を見たいからリフレクションを使ってただけで、 実際にはビルド時に型が確定してることが多い • 必要な分だけ静的リンク • ライブラリをまたいだ最適化が可能 • 不要コードは残さないので実行可能ファイルのサイズは 膨らまない (vNext)
24.
.NET Native: リフレクション •
リフレクションも使える ただし… • XAML {Binding}など、推論が効く部分は自動判定し てくれる • それ以外は、自分で「この型はリフレクションで 使ってる」という情報を書かないとダメ (Runtime Directiveファイル) • 動的コード生成は無理 • 式ツリーなどはインタープリター方式になるので遅い (vNext)
25.
Cloud first サーバー、特にクラウド中心の.NET Framework 手軽なソースコード更新 side-by-sideランタイム
26.
中間言語: サーバーでは 利点 • 動的リンク・部分更新しやすい •
セキュリティ検証しやすい • (ソースコード配布よりは)高速 欠点 • .NET Frameworkのランタイム インストール必須 • (ネイティブ配布よりは)低速 • (ソースコード配布よりは)デバッグ・修正が面倒 アプリ稼働時間が長くて、 最初の1回だけのコストは 無視できる(低速でもいい) 開発機とサーバー機でバー ジョンが違って困ることが サーバー上で確認しつつ その場でソースコードを修正したい ソースコード配置 自動パッケージ管理 Cloud Mode アプリごとに別バー ジョンを使えない
27.
.NET vNext Cloud
Mode • クラウド向けの実行形態 • side-by-sideインストール • ソースコード配布 • パッケージ管理 (vNext)
28.
side-by-sideインストール • (サーバーにインストールするんじゃなく) アプリごとに別.NETランタイムを使える • (同一サーバーで) アプリごとにバージョンを変えれる •
共有ホスティング型のサーバーでも安心 • バージョン更新するかどうかをアプリ単位で判断できる • 開発時と完全に同じバージョンを使える • (.NETではめったに見ないけども) バージョン違いに起因する問題を回避できる (vNext)
29.
ソースコード配置 • ビルドという工程不要 • ソースコード書き替えて、ブラウザー更新するだけ •
サーバー上で編集可能 • メモリ上で全部コンパイル • コンパイル結果を一時ファイルに残さない • ディスクI/Oがネックになりにくい • .NET Compiler Service (Roslyn)を利用 (vNext)
30.
補足: .NET Compiler
Platform† • C#/VBコンパイラーを再設計・再実装 • .NET実装 (C#実装のC#/VB実装のVBコンパイラー) • コンパイラーの内部データを誰でも自由に使える • 用途 • C#スクリプティング • ソースコード配置 • .NET vNext (Cloud First) • コード解析 • IDE連携、静的解析ツール † コードネーム“Roslyn”って呼ばれてたやつの正式名称
31.
パッケージ管理 • 自動パッケージ管理 開発機 アプリ
サーバー パッケージ リポジトリ 例 http://nuget.org http://myget.org project.json *.cs "dependencies": { "Library.A": "", "Library.B": "" } var c = new Configuration(); c.AddJsonFile("config.json"); a.UseServices(services => …); ソースコードとパッ ケージ利用情報だけ をアップロード サーバー上で 編集可能 .NETランタイムや、 ライブラリの不足・更新 はクラウドから取得 利用するパッケージ の情報ファイル (vNext)
32.
kproj • (Visual Studio上の)新しいプロジェクト形式 •
「プロジェクト」と「アセンブリ参照」と「パッ ケージ」を区別しない • プロジェクト: 同一ソリューション内の他のプロジェクト を参照 • アセンブリ参照: 標準ライブラリなどのDLLを参照 • パッケージ: NuGetを利用してWeb公開されているライブ ラリを参照 • JSONで管理 (vNext)
33.
旧形式(csproj)
34.
新形式(kproj) • JSON (project.json)でプロジェクト設定を管理 "dependencies":
{ "Newtonsoft.Json": "", "System.Console": "", "Classlibrary1": "" } パッケージ参照 アセンブリ参照 プロジェクト参照 (必要ならバージョン を明示的に指定)
35.
ASP.NET vNext • .NET
vNext (これまでのまとめ) • ソースコード配置 • side-by-sideインストール • パッケージ管理 • これに加えて • IIS(など、特定のアプリサーバー)依存脱却 • 脱System.Webアセンブリ • OWIN (Open Web Inteface for .NET) • Monoでのホストも可能 • ASP.NET MVC / Web API / Web Pagesの統合 • オープンソース、GitHub公開
36.
その他補足
37.
RyuJIT • JITコンパイラーも新しくなる • 既存資産にも投資は続いてる •
JIT方式しなくなるわけじゃない(適材適所) • RyuJITの大きな改善点 • 起動時間短縮 • 今まで64bit JITコンパイラーはサーバー向けだったので、 起動に重きを置かれてなかった • SIMD演算対応
38.
補足: SIMD演算 • Single
Instruction Multiple Data 演算 回路 入力 出力 普通の命令 • 1命令1データ 演算 回路 入力 出力 SIMD命令 • 1命令複数データ 入力 入力 入力 出力 出力 出力 単純な累算処理※なら 並列度の分だけ高速化 ※ ↓こういうの for (var i = 0; i < length; ++i) output[i] = F(input[i]);
39.
標準ライブラリ • ランタイムが3系統別実装 • JIT •
.NET Native • Cloud Mode • 1つの“標準”ライブラリで保守するのは大変 • どうしても事前ネイティブ化しにくい… • サーバーにGUIコンポーネント要るの?… • フットプリント的に余計なもの載せれない… new! new!
40.
1つの標準にできるのか? デスクトップ クライアント アプリ Phone/タブレット クライアント アプリ サーバー
アプリ 既存資産 Mobile firstCloud first 共通部分 この共通部分だけを 「標準」にすべき? PCLみたいな仕組み必須
41.
PCL(Portable Class Library) •
実行環境ごとに 別の「標準ライブラリ」 プロファイルを用意 • ライブラリ側でどの 実行環境をターゲットに するか選ぶ 実行環境ごとに 別メタデータを提供 ターゲット選択
42.
PCLの例 • 例: 2環境 共通部分
43.
PCLの例 • 例: 3環境 共通部分
44.
.NET vNextプロファイル • 今のプロファイル •
デスクトップ向け • Windowsストア アプリ向け • (Phone, Xbox, Silverlight, …) • vNextのプロファイル • .NET Native向け • ストア アプリ向け - 事前ネイティブ化しにくいところ • Cloude Mode向け • GUI関連ごっそりない
45.
まとめ
46.
実行環境の多様化 デスクトップ クライアント アプリ Phone/タブレット クライアント アプリ サーバー
アプリ 既存資産 Mobile firstCloud first
47.
Mobile first, Cloud
first • Mobile: .NET Native • ストア サーバー上でのネイティブ化 • かなりアグレッシブな最適化付き • 一応、リフレクションも利用可能 • Cloud: .NET vNext Cloud Mode • side-by-sideインストール • ソースコード配置 • パッケージ管理
Hinweis der Redaktion
http://japan.zdnet.com/os/analysis/35051280/ いろいろな用途に対して一貫したモデルで開発できるのがMSの強みなのに、縦割りな仕事してどうすんだと。 社内競争で緊張感があったっていう利点もなくはなかっただろうけど。 チームというか、バルマーVSシノフスキー的対立がなかったらPhoneの立ち位置ももう少しましになってたかもしれず。 そういうところを改善しなきゃいけない。
とはいえ。 今、MSの好調な部門はOffice 365とAzureで、 シノフスキー(Phone系やってた)がさって、ナデラ(Azureな人)がCEOになり 元ノキア従業員を中心に18000人のリストラがあり Azureは開発的にもScotGuっていうカリスマが率いてて 割とパワーバランスはCloudの方によってると思う。.NETのイノベーションもCloud方面からの方が多きそう。
一度中間言語を挟むってこと自体は、たいていの言語がやってる。 コンパイラーの内部でだけ中間言語使うものとか、実行時のだけ使うものとかもあるけども。
http://msdn.microsoft.com/ja-jp/library/6t9t5wcf(v=vs.110).aspx インストールに時間がかかるってのもそれはそれで大問題。最初が肝心。いまどき、インストールってだけでも敬遠されるのに、さらに時間かかるとかかったるい。 ほんといまどきは「インストールしてください」ってあるだけでユーザーを9割失う。
逆に、使ってないもののネイティブ イメージを削除したりも自動 .NET Framework自体のインストールの遅さもかなり改善(.NET標準ライブラリ全部をNgenしない。Auto-Ngenのサービスに任せる)
http://blogs.msdn.com/b/msgulfcommunity/archive/2013/03/16/compile-in-the-cloud-with-wp8.aspx http://channel9.msdn.com/Shows/Going+Deep/Mani-Ramaswamy-and-Peter-Sollich-Inside-Compiler-in-the-Cloud-and-MDIL
http://blogs.msdn.com/b/msgulfcommunity/archive/2013/03/16/compile-in-the-cloud-with-wp8.aspx http://channel9.msdn.com/Shows/Going+Deep/Mani-Ramaswamy-and-Peter-Sollich-Inside-Compiler-in-the-Cloud-and-MDIL
P/Invokeとかのマーシャリングもコード事前展開
言葉を選ばずに言えば、Node.js的な実行形態
言葉を選ばずに言えば、Node.js的な実行形態
IDE連携が一番最初の大きな目的なんだけども、Cloud Firstな.NETでも大活躍
ライブラリどころか、ランタイム自体もクラウドのリポジトリからとってくるのよねぇ。 あと、どうも、Phone向けのMDIL生成ツールと同名のexe (crossgen)がK Runtimeに入ってるんで、パッケージの分はいったんMDIL化してそう。 毎回parseとか、毎回JITはしたくないんじゃないかと。
OWINは、デフォ状態で対応してるというよりは、ライブラリでUseOwin的な書き方したら対応できるって感じみたいだけども。
Jetzt herunterladen