More Related Content
Similar to 20201127 .NET 5
Similar to 20201127 .NET 5 (20)
More from Takayoshi Tanaka
More from Takayoshi Tanaka (20)
20201127 .NET 5
- 4. .NET 5 ダウンロード
◦ インストーラー(OSごとのインストーラーおよびインストールスクリ
プト)
◦ https://dotnet.microsoft.com/download/dotnet/5.0
◦ コンテナイメージ
◦ https://hub.docker.com/_/microsoft-dotnet
◦ リリースノート
◦ https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0.0/5.0.0.md
◦ 既知の問題
◦ https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0-known-issues.md
- 7. .NET 5 新機能一覧 (1)
◦ C# 9とF# 5へアップデート
◦ コンパイル時にコード生成を可能にするC# Source Generatorの導入
◦ IEEE 754のbinary16 に対応する数値型としてHalf 構造体の導入
◦ null許容参照型のアノテーション導入の完了
◦ Target Framework (TFM)が大きく2つに
◦ 特定のOS(主にWindows)のみで動作するAPIの使用を検出し修正可能に
◦ WebAssembly環境を考慮
◦ さまざまなパフォーマンス改善
◦ 文字列処理・正規表現やネットワーク関連などの改善 GitHubのissue
◦ 95%パーセンタイル以上(P95+)でも予測可能で一貫したパフォーマンスが得られるようにする改善
Improving P95+ latency · Issue #37534 · dotnet/runtime · GitHub
◦ GC、JITなどの改善
◦ ARM64対応
- 8. .NET 5 新機能一覧 (2)
◦ 配布オプションの追加
◦ ClickOnceでのクライアントアプリの展開
◦ 単一の実行ファイルへの対応
◦ コンテナイメージサイズの縮小とcgroup v2への対応
◦ Server Coreイメージの追加
◦ 自己完結型アプリケーションの配布サイズを小さくする機能
◦ JsonSerializer の改善
◦ WindowsでもICUを利用へ
◦ .NET5の一部としてWinRT APIをサポート
◦ ネイティブコード運用の改善
◦ アプリケーションコードの潜在的なバグを見つける分析機能
◦ オブザーバビリティ(OpenTelemetry)やマイクロサービス(Tye)対応
- 9. .NET のリリースとサポートモデル
2019年12月 2020年11月 2021年11月 2022年11月 2023年11月
.NET Core 3.1
LTS
.NET Core 5.0
GA
.NET Core 6.0
LTS
.NET Core 7.0
GA
.NET Core 8.0
LTS
最低3年
次のGA+3か月
次のGA+3か月
最低3年
Microsoftのサポートは最新のサービスアップデートに対して提供
コミュニティによるサポートや、3rd Partyからのサポートもあり
https://devblogs.microsoft.com/dotnet/net-core-releases-and-support/
- 11. C# 9.0とF# 5.0
◦ C# 9.0は.NET 5.0のみサポート
◦ .NET Core 3.1以下で動くかもしれないけどサポートはされない
◦ What’s new in C# 9.0
◦ C# 9.0の新機能はまたC# Tokyoでやりましょう
◦ IEEEのbinary16 (float16)に対応したHalf 構造体の導入
◦ Source Generatorでコンパイル時コード生成が可能に
◦ https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/
◦ (厳密にはC# 9.0の一部ではない)
- 13. Target Framework Names (TFM)
はプラットフォーム共通とOS固有のものへ
◦ .NET5ではnet5.0とnet5.0-windows…
◦ net5.0-windows10 やnet5.0-windows10.0.17763.0 などOSバージョンを制限できる
◦ WPF、WinFormsはnet5.0-windowsのみで動作
◦ .NET 6 でXamarinが入るとnet5.0-androidなども追加
◦ Microsoft.Win32.RegistryのようなWindows固有APIを
◦ なにもせずに利用すると警告が出る
◦ 利用したいときは属性もしくは条件チェックを行う
◦ WebAssembly環境にはTFMは用意しない
◦ プロジェクトの設定でBrowserサポートを追加すると
Browserで利用できないAPIを呼び出すと警告される
◦ https://devblogs.microsoft.com/dotnet/the-future-of-net-standard/
- 14. .NET 5 performance improvements
TechEmpower benchmarks round 20 predicted perf increases for .NET 5 over .NET Core 3.1
+38%11,712,405 RPS
Plaintext
+42%1,243,436 RPS
Json
+20%417,818 RPS
Fortunes
Internal tests of .NET 5 performed on equivalent hardware as TechEmpower
Keynote - Welcome to .NET 5より引⽤(次ページも)
- 15. .NET 5 performance improvements
ž +30% socket performance improvement on Linux over .NET Core 3.1
ž JSON serialization performance improved +19% over .NET Core 3.11
ž Serialization of large collections & arrays improved 3x and are now zero-alloc
ž gRPC server performance exceeds Go, C++ and Java2
1 All 104 JSON serialization benchmarks improved
2 https://github.com/LesnyRumcajs/grpc_bench/wiki/2020-08-11-bench-results
0
10000
20000
30000
40000
50000
60000
rust_tonic_mt dotnet_grpc go_grpc cpp_grpc_mt java_grpc
gRPC Server Performance Requests/Sec
(higher is better)
- 16. さまざまなパフォーマンス改善
◦ GCやJIT関連
◦ coreclrをC/C++実装からC#実装へしたことがパフォーマンス改善作業を容易に
◦ マネージドコードからネイティブコードを呼ぶオーバーヘッドが大きかった箇所もある
◦ C#がマネージドコードである利点をランタイム、GC、JITで生かし改善している
◦ 文字列処理、ネットワークなど機能面の高速化
◦ Int.ToString、DateTime、DateTimeOfset、Encoding.UTF8など
◦ 正規表現
◦ コレクション、LINQ
◦ ネットワーク、HTTP/2対応の改善
◦ 暗号、リフレクションなどなど
◦ P95+にフォーカスした改善
◦ https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/
- 19. ARM64対応
◦ Windows ARM64も含めてARM64対応
◦ .NET 5としては対応しているがWPFは未対応 (来年前半予定)
◦ ARM64でのパフォーマンス改善
◦ .NETライブラリでのARM64固有コードの改善
◦ RyuJITによって生成されたコード品質の改善
◦ https://devblogs.microsoft.com/dotnet/arm64-performance-in-net-5/
- 20. さまざまな展開方法のサポート・改善
◦ ClickOnceに対応
◦ .NET Core 3.1および.NET 5 以降のWinForm, WPF, ConsoleApp
◦ SmartScreenなどWindows側のセキュリティ機能にも対応
◦ 単一ファイルサポートの拡大
◦ トリミングによりファイルサイズの削減が可能に
◦ コンテナイメージの縮小
◦ Windows Server Coreイメージを追加
- 22. WindowsでもICUを使うように
◦ ICU - International Components for Unicode
◦ カルチャや文字列の他、タイムゾーン情報を含んでいる
◦ .NET Core 3.1まではWindowsではOS固有のNLSを利用
◦ 最近だと「令和」がいつ対応されるかで話題に
◦ .NET 5以降はWindowsでもデフォルトでICUを利用
◦ NLS利用も可能
- 23. WinRT 相互運用機能
◦ .NET Core 3.1までのものと互換性がないため、
利用していたプロジェクトを.NET 5対応するためには移行が必要
◦ 新しい機能は .NET 5.0かつWindows10 version1809以降で利用可能
◦ 新しい言語機能を取り入れるなど利用しやすくしている
◦ https://blogs.windows.com/windowsdeveloper/2020/11/10/announcing-c-
winrt-version-1-0-with-the-net-5-ga-release/
- 25. デスクトップ開発
◦ Windows Forms、WPFデザイナー
◦ Visual Studioツール
◦ ClickOnceインストーラー
◦ 3rd Partyのコントトール
◦ 自己完結型、単一ファイルなEXEファイル
◦ 実行マシンに.NET Frameworkのインストールが不要に
◦ パフォーマンス改善
◦ Webview2 (Edge Chromium)など最新のコントロール
è かずきさんのセッションで説明が?