SlideShare a Scribd company logo
C# Tokyo イベント
自己紹介: @tanaka_733
◦ 「Observability(可観測性)プラットフォーム」がお仕事
◦ Go, Java, JavaScript, Ruby, PHP, Rustに加えてC#やってます
◦ クラウドもオンプレもWindowsもLinuxもコンテナもサーバーレスもやってます
Microsoft MVP for Azure & Development Technologies
◦ Q#もやっています
今日のセッションについて
.NET 5関連の新機能を30分でざっくりと知ったつもりになる
細かいところは立ち入らない (C# 9の新機能とか)
ASP.NET Core, EF Coreも立ち入らない
.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
https://github.com/dotnet/designs/blob/main/accepted/2020/net5/pic01.png
なにがアップデートされた?
.NET 5
ASP.NET Core 5
Entity Framework Core 5
C# 9, F# 5
Visual Studio, Visual Studio for Mac, VS Codeなどのツール
.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対応
.NET 5 新機能一覧 (2)
◦ 配布オプションの追加
◦ ClickOnceでのクライアントアプリの展開
◦ 単一の実行ファイルへの対応
◦ コンテナイメージサイズの縮小とcgroup v2への対応
◦ Server Coreイメージの追加
◦ 自己完結型アプリケーションの配布サイズを小さくする機能
◦ JsonSerializer の改善
◦ WindowsでもICUを利用へ
◦ .NET5の一部としてWinRT APIをサポート
◦ ネイティブコード運用の改善
◦ アプリケーションコードの潜在的なバグを見つける分析機能
◦ オブザーバビリティ(OpenTelemetry)やマイクロサービス(Tye)対応
.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/
.NET Frameworkはサポートされます
◦ .NET Framework 4.8が最後のメジャーリリース
◦ 機能追加などは行われない
◦ バグ修正や信頼性向上、セキュリティ更新などは予定
◦ Windowsが新しくなっても提供される
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の一部ではない)
Null許容型に関するアノテーションを
.NETライブラリ全体に付与完了
◦ ドキュメントにはまだ反映しきれていない
◦ Visual StudioのF12によるメタデータ参照や source.dot.net で確認
https://devblogs.microsoft.com/dotnet/annou
ncing-net-5-0/#nullability-annotation-
improvements
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/
.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より引⽤(次ページも)
.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)
さまざまなパフォーマンス改善
◦ 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/
P95+ 最悪値でも予測可能に
とあるWebアプリの処理時間のヒストグラム
頻度
処理時間
P95
P99
P95=95%パーセンタイル値
全体で遅い処理にも着目し、改善する
平均、最頻値、P95、P99
平均(緑線)
P95(青線)
とあるWebアプリの処理時間の時間変化
P99(黄線)
ARM64対応
◦ Windows ARM64も含めてARM64対応
◦ .NET 5としては対応しているがWPFは未対応 (来年前半予定)
◦ ARM64でのパフォーマンス改善
◦ .NETライブラリでのARM64固有コードの改善
◦ RyuJITによって生成されたコード品質の改善
◦ https://devblogs.microsoft.com/dotnet/arm64-performance-in-net-5/
さまざまな展開方法のサポート・改善
◦ ClickOnceに対応
◦ .NET Core 3.1および.NET 5 以降のWinForm, WPF, ConsoleApp
◦ SmartScreenなどWindows側のセキュリティ機能にも対応
◦ 単一ファイルサポートの拡大
◦ トリミングによりファイルサイズの削減が可能に
◦ コンテナイメージの縮小
◦ Windows Server Coreイメージを追加
.NETライブラリとしての
System.Text.Jsonの高速化・機能追加
◦ 不変型やレコード型にも対応
◦ Newtonsoft.Jsonからの移行用のドキュメント
◦ 機能例
◦ デフォルト値の無視など新しいグローバルオプション
◦ パブリックでないプロパティアクセサーの使用
◦ KeyがstringでないDictionaryのサポート
◦ NullをConverterで扱うかどうかを制御可能に
◦ HttpClientの拡張メソッドとして
GetFromJsonやPutAsJsonなどが利用可能に
WindowsでもICUを使うように
◦ ICU - International Components for Unicode
◦ カルチャや文字列の他、タイムゾーン情報を含んでいる
◦ .NET Core 3.1まではWindowsではOS固有のNLSを利用
◦ 最近だと「令和」がいつ対応されるかで話題に
◦ .NET 5以降はWindowsでもデフォルトでICUを利用
◦ NLS利用も可能
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/
開発プラットフォーム
視点でのまとめ
デスクトップ開発
◦ Windows Forms、WPFデザイナー
◦ Visual Studioツール
◦ ClickOnceインストーラー
◦ 3rd Partyのコントトール
◦ 自己完結型、単一ファイルなEXEファイル
◦ 実行マシンに.NET Frameworkのインストールが不要に
◦ パフォーマンス改善
◦ Webview2 (Edge Chromium)など最新のコントロール
è かずきさんのセッションで説明が?
Web開発
◦ RazorもしくはBlazorが主要なフレームワーク
◦ 新機能は主にBlazor関連
◦ Razorまわりは機能改善・パフォーマンス向上
◦ もちろん、Blazorもパフォーマンス向上
◦ .NET Frameworkから移植されない技術は
例えば次のような移行がおすすめされている
◦ WebFormはBlazorへ
◦ WCFはgRPCへ
マイクロサービスやオブザーバビリティへの投
資
◦ マイクロサービスを活用するための機能・プロジェクト
◦ REST API
◦ OpenAPI
◦ API REPL
◦ Clientコード生成
◦ Tye => 松村さんのセッションで!
◦ オブザーバビリティ(可観測性)を実現するための機能
◦ 監視をし、サービス改善のために必要なアクションをとれるようにする
◦ dotnet-monitorによる診断機能
◦ OpenTelemetryプロジェクトに対(主に分散トレーシングとメトリクス)

More Related Content

PPTX
(ゲームじゃない方の)switchで遊びたい話
PDF
Q#基礎 ver1.1
PDF
ゼロから始めるQ#
PDF
マイクロサービス開発が捗る Project Tye
PDF
.NET Core時代のCI/CD
PDF
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
PDF
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
PDF
未知との交信!?Project SignalR
(ゲームじゃない方の)switchで遊びたい話
Q#基礎 ver1.1
ゼロから始めるQ#
マイクロサービス開発が捗る Project Tye
.NET Core時代のCI/CD
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
未知との交信!?Project SignalR

What's hot (20)

PDF
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
PDF
(過去バージョン) Q#基礎 ver1.0
PDF
【BS2】.NET 6 最新アップデート
PPTX
復習も兼ねて!C#6.0-7.0
PDF
.NET の今と今後に思うこと (Tokyo Ver.)
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
PDF
.NET 5 勉強会 ~.NET Framework から .NET へ~
PDF
Introduction to VSCode
PDF
テスト駆動で行うネットワーク自動化のすすめ
PDF
.NET 最新ロードマップと今押さえておきたい技術要素
PDF
VSCodeで始めるAzure Static Web Apps開発
PDF
PHPerだってサーバーレスしたい!
PPTX
Wasm blazor and wasi 2
PDF
Azure Functions Tips
PDF
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
PDF
【BS7】GitHubをフル活用した開発
PDF
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
PDF
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
(過去バージョン) Q#基礎 ver1.0
【BS2】.NET 6 最新アップデート
復習も兼ねて!C#6.0-7.0
.NET の今と今後に思うこと (Tokyo Ver.)
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
.NET 5 勉強会 ~.NET Framework から .NET へ~
Introduction to VSCode
テスト駆動で行うネットワーク自動化のすすめ
.NET 最新ロードマップと今押さえておきたい技術要素
VSCodeで始めるAzure Static Web Apps開発
PHPerだってサーバーレスしたい!
Wasm blazor and wasi 2
Azure Functions Tips
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
【BS7】GitHubをフル活用した開発
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Ad

Similar to 20201127 .NET 5 (20)

PPTX
20170527 inside .NET Core on Linux
PDF
Dotnetcore30forwindesktop
PDF
[Japan Tech summit 2017] DEP 005
PDF
20191120 beyondstudy#21 kitaoka
PDF
NET5 and Diagnostics
PDF
The Twelve-Factor (A|M)pp with C#
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
PDF
.NET アプリを改善して実践する継続的インテグレーション
PDF
.NET Coreとツール類の今
PPTX
About .Net vNext
PPTX
About .Net vNext
PPTX
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
PDF
.NET Coreから概観する.NETのOSSへの取り組み
PPTX
20160709 .NET Core on RHEL
PDF
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~
PDF
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
PPTX
ASP.NET vNextの全貌
PDF
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
PDF
Node予備校 vol.1 名古屋
PDF
IBM Rational Team Concertに触れてみた
20170527 inside .NET Core on Linux
Dotnetcore30forwindesktop
[Japan Tech summit 2017] DEP 005
20191120 beyondstudy#21 kitaoka
NET5 and Diagnostics
The Twelve-Factor (A|M)pp with C#
はてなにおける継続的デプロイメントの現状と Docker の導入
.NET アプリを改善して実践する継続的インテグレーション
.NET Coreとツール類の今
About .Net vNext
About .Net vNext
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
.NET Coreから概観する.NETのOSSへの取り組み
20160709 .NET Core on RHEL
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
ASP.NET vNextの全貌
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
Node予備校 vol.1 名古屋
IBM Rational Team Concertに触れてみた
Ad

More from Takayoshi Tanaka (20)

PDF
deep dive distributed tracing
PPTX
202202 open telemetry .net handson
PPTX
202109-New_Relic-for-csharp-engineers
PDF
20210129 azure webapplogging
PPTX
Unity(再)入門
PPTX
最近のQ#について
PDF
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
PDF
20191024 Get Start gRPC with ASP.NET
PDF
New Relicで始める、.NET Applications on AWSのObservability
PPTX
C#エンジニアのためのdocker kubernetesハンズオン (再)
PPTX
20190806 Q# Measurements
PPTX
C#エンジニアのためのdocker kubernetesハンズオン
PDF
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
PDF
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
PDF
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
PDF
Try! Visual Studio 209 git feature
PDF
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
PDF
New features of Azure Cloud Provider at OCP 3.10
PDF
Open shift on azure stack
PPTX
Introduction to SQL Server on RHEL
deep dive distributed tracing
202202 open telemetry .net handson
202109-New_Relic-for-csharp-engineers
20210129 azure webapplogging
Unity(再)入門
最近のQ#について
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
20191024 Get Start gRPC with ASP.NET
New Relicで始める、.NET Applications on AWSのObservability
C#エンジニアのためのdocker kubernetesハンズオン (再)
20190806 Q# Measurements
C#エンジニアのためのdocker kubernetesハンズオン
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
Try! Visual Studio 209 git feature
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
New features of Azure Cloud Provider at OCP 3.10
Open shift on azure stack
Introduction to SQL Server on RHEL

20201127 .NET 5

  • 2. 自己紹介: @tanaka_733 ◦ 「Observability(可観測性)プラットフォーム」がお仕事 ◦ Go, Java, JavaScript, Ruby, PHP, Rustに加えてC#やってます ◦ クラウドもオンプレもWindowsもLinuxもコンテナもサーバーレスもやってます Microsoft MVP for Azure & Development Technologies ◦ Q#もやっています
  • 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
  • 6. なにがアップデートされた? .NET 5 ASP.NET Core 5 Entity Framework Core 5 C# 9, F# 5 Visual Studio, Visual Studio for Mac, VS Codeなどのツール
  • 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/
  • 10. .NET Frameworkはサポートされます ◦ .NET Framework 4.8が最後のメジャーリリース ◦ 機能追加などは行われない ◦ バグ修正や信頼性向上、セキュリティ更新などは予定 ◦ Windowsが新しくなっても提供される
  • 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の一部ではない)
  • 12. Null許容型に関するアノテーションを .NETライブラリ全体に付与完了 ◦ ドキュメントにはまだ反映しきれていない ◦ Visual StudioのF12によるメタデータ参照や source.dot.net で確認 https://devblogs.microsoft.com/dotnet/annou ncing-net-5-0/#nullability-annotation- improvements
  • 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イメージを追加
  • 21. .NETライブラリとしての System.Text.Jsonの高速化・機能追加 ◦ 不変型やレコード型にも対応 ◦ Newtonsoft.Jsonからの移行用のドキュメント ◦ 機能例 ◦ デフォルト値の無視など新しいグローバルオプション ◦ パブリックでないプロパティアクセサーの使用 ◦ KeyがstringでないDictionaryのサポート ◦ NullをConverterで扱うかどうかを制御可能に ◦ HttpClientの拡張メソッドとして GetFromJsonやPutAsJsonなどが利用可能に
  • 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)など最新のコントロール è かずきさんのセッションで説明が?
  • 26. Web開発 ◦ RazorもしくはBlazorが主要なフレームワーク ◦ 新機能は主にBlazor関連 ◦ Razorまわりは機能改善・パフォーマンス向上 ◦ もちろん、Blazorもパフォーマンス向上 ◦ .NET Frameworkから移植されない技術は 例えば次のような移行がおすすめされている ◦ WebFormはBlazorへ ◦ WCFはgRPCへ
  • 27. マイクロサービスやオブザーバビリティへの投 資 ◦ マイクロサービスを活用するための機能・プロジェクト ◦ REST API ◦ OpenAPI ◦ API REPL ◦ Clientコード生成 ◦ Tye => 松村さんのセッションで! ◦ オブザーバビリティ(可観測性)を実現するための機能 ◦ 監視をし、サービス改善のために必要なアクションをとれるようにする ◦ dotnet-monitorによる診断機能 ◦ OpenTelemetryプロジェクトに対(主に分散トレーシングとメトリクス)