net 2015 発表後の .net はどうなったのか?....net 2015 ryujit + simd...

33
.NET 2015 発表後の .NET はどうなったのか? 日本マイクロソフト株式会社 デベロッパー エバンジェリズム統括本部 荒井 省三

Upload: others

Post on 27-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

.NET 2015発表後の

.NETはどうなったのか?

日本マイクロソフト株式会社

デベロッパーエバンジェリズム統括本部

荒井 省三

アジェンダ

• .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

UWPと CoreCLRCoreCLR

CoreFX

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プロジェクト

CoreFXプロジェクト

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が含まれている

DNX (DotNet eXecution Environment)- CoreCLR CLI-

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」コマンドでソースコードを実行します

.NET Core commandline(CLI)-tools

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

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」コマンドを実行します

CoreCLRの現状の課題

パッケージ化の課題

•目的のクラスがどのアセンブリにあるのか

•パッケージのバージョン番号は

クラスの検索

• 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用のアプリケーションフレームワーク