Contenu connexe
Similaire à Net6 Overview
Similaire à Net6 Overview (20)
Plus de Tomohiro Suzuki (16)
Net6 Overview
- 5. 5
.NETプラットフォームの統合は、2019年5⽉6⽇に 「.NET - A unified Platform」とし
てコンセプトが発表。
2020年11⽉の .NET 5 のローンチで統合が完了する予定だった。
Introducing .NET 5 (https://devblogs.microsoft.com/dotnet/introducing-
net-5/)
.NET - A unified Platform のコンセプト
・1つのSDK、1つのランタイム、1つのコードベースで、クラウド、ウェブ、デスクトップ、モバ
イル、ゲーム、IoT、AI、あらゆる種類のアプリケーションを構築できる
・.NETを学んだ後は、同じスキルで上記のすべてのワークロードを構築できるようになる
.NETプラットフォームの統合
- 6. 6
2020/11
.NET 5 では、.NET Framework .NET Core が統合された
Xamarin の統合は間に合わず、.NET 6 へ延期
2021/11
.NET 6 では、 Xamarin の統合は間に合わず、また延期。
2022/Q2
.NET MAUI( .NET Multi-platform App UI ) のローンチ⽬標
.NET 6 の iOS、Android、macOS、MacCatalyst の各ワークロードの GA⽬標
あと半年ちょっと程度で、.NET のプラットフォームの統合が完了し、
.NET - A unified Platform が実現(の予定)
.NETプラットフォームの統合(度重なる完全統合の延期)
- 7. 7
Preview として、Windows 版の Visual Studio 2022 から .NET MAUI が利⽤可能。(Visual
Studio 2022 for Mac はまだ未対応)
Visual Studio 2022 for Mac でも ios、android-aot のワークロード
(Microsoft.iOS、Microsoft.Android)が Preview で利⽤可能。
.NET MAUI は、Xamarin.Forms の後継の Android、iOS、macOS、および Windows ⽤の .NET
を使⽤してネイティブクロスプラットフォームアプリを構築するためのマルチプラットフォームアプリ UI
Preview ではすでに、Microsoft.iOS、Microsoft.Android の名称が使⽤されている。
.NETプラットフォームの統合(MAUI / Android / iOS)
- 10. 1
.NET 6 では、公開されているベンチマークで Node.js よりも10倍速い
Entity Framework Core は .NET 5 と⽐べて最⼤92%の速度向上を実現
既存の .NET Web アプリケーションを .NET 6 にマイグレーションするだけでも速度
の向上を⾒込める。
パフォーマンスの向上に注⼒する最⼤の理由は、「クラウドコンピューティングのコス
ト削減」
クラウドはスケールアップ、スケールアウトでコストが予想以上にアップする
詳しく知りたい⽅は
https://devblogs.microsoft.com/dotnet/performance-improvements-in-
net-6/
1. パフォーマンスの向上
- 13. 13
Intel Tiger Lake および、AMD Zen 3 に Control-flow Enforcement Technology (CET)とし
て搭載されている機能。
x64 CPU に依存した機能のため、x64 プラットフォームと対応OSでのみ有効にできる。
CET はシャドウスタック(コールスタックの「影」となる第2の別のスタック)を使ってすべてのリターン
アドレスを記録。
x64 のアセンブリ⾔語で、CALL 命令ごとにリターンアドレスがコールスタックとシャドースタックの両⽅
にプッシュされ、RET 命令ではコールスタックとシャドースタックの両⽅からリターンアドレスをロードする。
2つのアドレスが⼀致しない場合、プロセッサは制御保護例外(#CP—Control-Protection
Exception)を発⾏。これがカーネルにトラップされ、セキュリティを保証するためにプロセスを終了さ
せる。
シャドウスタックはリターンアドレスのみを格納するため、追加のメモリオーバーヘッドを最⼩限に抑え
ることができる。
3-1. ハードウェア強制型スタック保護
- 15. 15
.NET でも最近 ARM64 関連のサポートが強化されているが、これは⾒逃せない動き。
ARM64 は x64 に⽐べ電⼒効率で⼤幅に優れている。
クライアントマシン 1 台レベルでは、消費電⼒の差はたかが知れているが、
クラウドのデータセンターの規模になるとその差は膨⼤。
ARM64 のサポートが今後進めば、クラウドでも ARM64 の利⽤がどんどん進む。
x86 と併⽤されるが、同じ性能であれば ARM64 の⽅が料⾦が安くなる可能性が⾼い。
将来を⾒据え、場合によっては x86 から ARM64 に移⾏できる準備も進めておくためにも、
ARM64 の動向はウオッチしておいた⽅が良い。
4-1. ARM64 関連
- 16. 16
.NET 6 では、x64 および ARM64 .NET インストーラーがサイドバ
イサイドでインストールされ、x64 と ARM64 の共存を実現。
x64 と ARM64 のビルドが別々の場所にインストールされる
これまでは、x64 と ARM64 のビルドがお互いに上書きされた
macOS や Windows の ARM64 マシンで、.NET 6 RC2 以降
を利⽤するには、ARM64 と x64 の .NET 6 と 以前の .NET
(.NET 5 / .NET Core 3.1 など)のすべての .NET SDKとランタ
イムを⼀旦アンインストールして再インストールする必要がある。
再インストール時に利⽤する以前のバージョンの .NET(.NET 5
/ .NET Core 3.1 など)の .NET SDKとランタイムは今後提供す
る予定。
4-2. ARM64 関連(SDK / ランタイム関連)
- 17. 17
SDKは、ARM64 では .NET 6 以降のみをサポート。
ランタイムは、ARM64 および x64 のすべてのサポート中のバージョンをサポート。
Windows ARM64 ⽤の .NET 5 SDK は、.NET 6 RTM に合わせて早期にサポートを
終了。
ARM64 アーキテクチャ上では、ネイティブ・アーキテクチャのパフォーマンスの享受、1つの
SDK を管理すればよいなど、よりより良い体験ができるため ARM64 SDKの利⽤を
推奨。
.NET Framework でも、「.NET Framework 4.8.1」で ARM64 のサポートが追加され
る。
4-2. ARM64 関連(SDK / ランタイム関連)
- 18. 18
.NET 6 では、ワークフローで .NET アプリのユニバーサルバイナリーを公開することはでき
ない。
この機能の必要性を .NET 7 で再検討。
現在、macOS 向けとしては Intel 専⽤のバイナリーしかビルドきまない。ユニバーサル
バイナリーではない Apple Silicon 専⽤のバイナリーもビルドできない。
ビルドした Intel 専⽤のバイナリーを Rosetta 2 を介して Apple M1 上で動作させるこ
とはできる。
4-3. ARM64 関連(macOS ユニバーサルバイナリー)
- 19. 19
注意、これは私⾒です!個々のケースによって考え⽅は様々ですが、基本的な考え
⽅のヒントとお考えください
可能な限り、 .NET 6 に移⾏することを推奨。
.NET 6 で移⾏を⾒送る場合でも、次の LTS である 2023 年の .NET 8 リリースを
ターゲットに移⾏を進めるように進めることを推奨。
移⾏を推奨する最⼤の理由はセキュリティ。
セキュリティ対策関連については、今後のロードマップが⽰されている
https://github.com/dotnet/designs/blob/main/accepted/2021/runtime-
security-mitigations.md
.NET 6 に移⾏すべきか .NET Framework にとどまるべきか
- 20. 20
.NET 6 に新たなセキュリティ対策や HTTP/3 など新たな注⽬すべき機能が実装され
始めている、
2年後の .NET 8(次のLTS) リリース時には .NET Framework 4.8 と⽐べかなりの
機能の差が拡⼤すると⾒込まれる。
.NET 6 以降に実装されるセキュリティ対策は単なるセキュリティパッチではない。
CPU の新機能に依存し、ランタイムの構造に⼿を⼊れる根本的な対策を含む
したがって、.NET 8 の世代では、 .NET Framework 4.8 はサポート期間内ではある
が、セキュリティ対策の観点からはあくまでもパッチの提供にとどまり、根本的な対策
は⾏われず、世代的に陳腐化したものとなってしまう
.新たなセキュリティ対策や機能は .NET 6 以降にのみ実装
- 21. 21
新規アプリなら .NET 6 を選択
いまだに、.NET 6 を「枯れていない」という理由で避ける意⾒も⾒聞きするが、
.NET Core の系統も、.NET 6 で 5 世代⽬であり充分「枯れて」いる。
(枯れてないことに起因するトラブルは基本的に起きない)
新規アプリ開発のリスクは .NET Framework 4.8 と差はない
このタイミングで .NET 6 を「枯れていない」として避けることは、
逆に「ではいつになれば、枯れていると判断できるのか」というお話に…
(いつまでも移⾏できなくなる、最後の最後に移⾏すると逆に苦労が多い)
移⾏の指針(新規アプリ)
- 25. 25
.NET アップグレード アシスタントで以下の種類の .NET Framework アプリの移⾏が
サポートされている。
.NET Framework Windows フォーム アプリ
.NET Framework WPF アプリ
.NET Framework ASP.NET MVC アプリ
.NET Framework コンソール アプリ
.NET Framework クラス ライブラリ
.NET アップグレード アシスタント