net 2015 発表後の .net はどうなったのか?....net 2015 ryujit + simd...
TRANSCRIPT
アジェンダ
• .NET Frameworkとは
• .NET 2015とは
• CoreCLRの導入方法
• DNXによる導入
• CLIによる導入
• Nugetによる導入
•現状の CoreCLRの課題
.NET Framework バージョンの整理
20022005
2008
2010
2012
2003
1.0 1.1 2.04.04.5
1.1 2.0
4.0 4.53.0
3.5
1.0
*3
*3
4.5.2
2013
4.5.2
4.6
4.6
4.6.1
4.6.1
2015
共通言語基盤(CLI : Common Language Infrastructure)
ベースクラスライブラリ (BCL)
.NET Framework の構成
Windows OS
共通言語ランタイム(CLR : Common Language Runtime)
各種ライブラリ
VB C# C++ ・・・
.NET 2015
RyuJIT + SIMD
ガベージコレクター
ランタイムコンポーネント
コンパイラ
.NET コンパイラプラットフォーム(Roslyn)
プログラミング言語の革新性
.NET Framework 4.6 .NET Core 5
Windows 向けに統合された機能セット.NET ライブラリとランタイム
モジュール化と最適化.NET ライブラリとランタイム
ベースクラスライブラリ
NuGetパッケージ
ライブラリ
.NET 2015
アプリケーションフレームワーク GUI
ASP.NET
UWPWebForms、etc
ASP.NET MVC 5、etc
ランタイム
.NETFramework
.NETFramework
.NETFramework
CoreCLR CoreCLRBCL
ライブラリ CoreFX CoreFX
ツール .NET Native .NET Native
ターゲットWindows Windows
Net45,netcore45
dotnet dotnet
.NET 2015の発表後-2014年 11月以降ー• Windows向け
• .NET Framework 4.6.1
• UWPアプリでの CoreCLR採用 (Windows 10で RTM)
• OSS (Linux、MacOS X、FreeBSD)• CoreCLR RC1 (2015年 11月)
• CoreCLR RC3 (2016年 1月)
.NET 2015
アプリケーションフレームワーク GUI
ASP.NETUWP
(Windows 10)WebForms、etc
ASP.NET MVC 5、etc
ランタイム
.NETFramework
.NETFramework
.NETFramework
CoreCLR CoreCLRBCL
ライブラリ CoreFX CoreFX
ツール .NETNative
.NET Native
ターゲットWindows Windows
Net45,netcore45,etc
dotnetdotnet,dnx451,dnxcore50
OSS
CoreCLRとは何か?
•共通言語ランタイム (CLR)の仕様である CLI(Common Language Infrastructure)を実装した新しいランタイム
•共通言語ランタイムとの互換性を持つ
•ベースクラスライブラリのスリム化• Windows用のmscorlib.dll は、約 20.7MB
• CoreCLR用のmscorlib.dllは、約 11.1MB
•その他のライブラリを CoreFXとして開発
アプリケーションフレームワーク• ASP.NET 5 (新 ASP.NET Core)
• ASP.NET MVCテクノロジースタック (MVCやWebAPIなど)
• Windows、Linux、MacOS X、FreeBSDなどをサポート• DNVM (DotNet Version Manager)によるサイドバイサイドの管理 (新 .NET Core CLI)
• Nugetによるパッケージ管理
•ユニバーサルWindowsアプリ• OneCore用のアプリランタイム (Windows 10)• .NET Nativeによるストアコンパイル
CoreCLRの導入方法
• ソースコードよりビルド• https://github.com/dotnet/coreclr/blob/master/Documentation/building/windows-
instructions.md• CoreRun.exeが含まれている• ビルドステータスに注意
• DNVMを使用して導入• https://github.com/dotnet/coreclr/blob/master/Documentation/install/get-dotnetcore-
dnx-windows.md• CoreRun.exeが含まれない点に注意
• Nugetを使用して導入• Nuget Client v3.xが必要• https://www.myget.org/F/dotnet-core/で runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLRのバージョンを確認
• CoreRun.exeが含まれていない点に注意
• 開発者向けMSIで導入 (現時点では、CLIに置き換わっている-推奨-)• http://dotnet.github.io/getting-started/• https://github.com/dotnet/cli• CoreRun.exeが含まれている
DNVMのインストール 1/2
• https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1を実行する
•「 dvmn list」コマンドを実行CLR用の DNXを導入
•「 dnvm install -r coreclr latest -u 」コマンドを実行最新のCoreCLR用の DNXを導入
• project.jsonの作成
project.json
• バージョン番号を確認しますhttps://www.myget.org/gallery/dotnet-core
• エラーが発生したら、バージョン番号を修正します
{"version": "1.0.0-*","dependencies": {},"frameworks" : {
"dnx451" : { },"dnxcore50" : {
"dependencies": {"System.Console": "4.0.0-beta-*","System.Runtime": "4.0.0-rc3-*"
}}
}}
DNVMのインストール 2/2
• 「 dnu restore」コマンドでパッケージをリストアしますエラーが発生したら、URLの JSONファイルを取得して、project.jsonのバージョン番号を修正しますhttps://www.myget.org/gallery/dotnet-coreのバージョン番号と、project.jsonで使用するバージョン番号が一致しないため
• ソースコードを作成します
• 「 dnx . run」コマンドでソースコードを実行します
CLIのインストール (1/2)
• https://dotnetcli.blob.core.windows.net/dotnet/beta/Installers/Latest/dotnet-win-x64.latest.exe
•「dontnet」コマンドを使用する%ProgramFiles%¥dotnetへインストール
•注意点は、nuget v3以降に依存• 「donet new」コマンドで以下を作成「NuGet.Config」「project.json」をカスタマイズするのが簡単
nuget.config
•マシン全体の nuget.config%UserProfile%¥.nugetに配置される
<?xml version="1.0" encoding="utf-8"?><configuration>
<packageSources><!--To inherit the global NuGet package sources remove the <clear/> line below --><clear /><add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-
core/api/v3/index.json" /><add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources></configuration>
project.json
•バージョン番号を確認しますhttps://www.myget.org/gallery/dotnet-core
{"version": "1.0.0-*","compilationOptions": {
"emitEntryPoint": true},
"dependencies": {"NETStandard.Library": "1.0.0-rc2-23811"
},
"frameworks": {"dnxcore50": { }
}}
CLIのインストール (2/2)
•「dotnet restore」でパッケージをリストア
•「dotnet run」でビルドして実行
• dotnet run/dotnet buildが DNXから大きく変更された点
dnx run dotnet run
動的に ILを作成して、実行
実行ファイルを作成して、実行
Nugetのインストール 1/
• Nuget clientの入手https://dist.nuget.org/index.htmlCoreCLR RC3では、v 3以降が必要
• Packages.configを作成しますバージョン番号は、https://www.myget.org/gallery/dotnet-coreで確認
Packages.json
<packages><package id="runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR" version="1.0.1-rc3-23729" /><package id="System.Console" version="4.0.0-rc3-23729" /><package id="System.Diagnostics.Contracts" version="4.0.1-rc3-23729" /><package id="System.Diagnostics.Debug" version="4.0.11-rc3-23729" /><package id="System.Diagnostics.Tools" version="4.0.1-rc3-23729" /><package id="System.Globalization" version="4.0.11-rc3-23729" /><package id="System.IO" version="4.1.0-rc3-23729" /><package id="System.IO.FileSystem.Primitives" version="4.0.1-rc3-23729" /><package id="System.Reflection" version="4.1.0-rc3-23729" /><package id="System.Resources.ResourceManager" version="4.0.1-rc3-23729" /><package id="System.Runtime" version="4.1.0-rc3-23729" /><package id="System.Runtime.Extensions" version="4.1.0-rc3-23729" /><package id="System.Runtime.Handles" version="4.0.1-rc3-23729" /><package id="System.Runtime.InteropServices" version="4.1.0-rc3-23729" /><package id="System.Text.Encoding" version="4.0.11-rc3-23729" /><package id="System.Text.Encoding.Extensions" version="4.0.11-rc3-23729" /><package id="System.Threading" version="4.0.11-rc3-23729" /><package id="System.Threading.Tasks" version="4.0.11-rc3-23729" />
</packages>
Nugetのインストール 2/
• 「nuget restore packages¥packages.config -Source https://www.myget.org/F/dotnet-core/ -PackagesDirectorypackages」コマンドでパッケージをリストアします
• Runtimeフォルダーへ以下をコピーしますcoreclr.dll、mscorlib.dll、corerun.exe (開発者向けMSIより)
• ソースコードをコンパイルします「“C:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥csc.exe” /nostdlib /noconfig /r:packages¥System.Runtime.4.1.0-rc3-23729¥lib¥dotnet5.4¥System.Runtime.dll /r:packages¥System.Console.4.0.0-rc3-23729¥lib¥net46¥System.Console.dll /r:runtime¥mscorlib.ni.dll /out:runtime¥HelloWorld.exe HelloWorld.cs」ポイントは、mscorlibへの参照を行う点です
• 実行は、「Runtime¥corerun Runtime¥HelloWorld.exe」コマンドを実行します
クラスの検索
• http://packagesearch.azurewebsites.net/
•ソースコードを grepする
パッケージのバージョン番号
• https://www.nuget.org/
• https://www.myget.org/gallery/dotnet-core
•プロジェクト https://github.com/dotnet/corefx
まとめ
• .NET 2015とは、Common Language Infrastructureを実装した技術群に対する呼称• Windows専用として、.NET Framework
• マルチ OS対応として、.NET Core (CoreCLR、CoreFX)
• ASP.NET MVC 5ベースのアプリケーションフレームワーク(ASP.NET Core)
• .NET Coreと ASP.NET Coreを OSSとして公開
• Windows 10の UWPアプリ• Windows用の .NET Core (CoreCLR、CoreFX)
• OneCore用のアプリケーションフレームワーク