BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Microsoftが .NET 5 をリリース

Microsoftが .NET 5 をリリース

原文(投稿日:2020/11/10)へのリンク

本日の .NET Conf 2020で、マイクロソフトは (開発ブログで同時に発表された) .NET 5をリリースした。新しいリリースは、.NET Core 3.1の改善に焦点を当てている。より小さな単一ファイルアプリケーション、Windows ARM64のサポート、.NET 5のキーとなる機能の1つであるより高性能なJsonSerializer API、および多くの大幅なパフォーマンスの改善。このリリースの一部として、新しい主要な言語バージョン (C# 9およびF# 5)も紹介されている。

(画像提供: Scott Hunter's presentation at NET Conf)

Microsoftは昨年、.NET 5がデスクトップ、Web、クラウド、モバイル、ゲーム、IoT、AIアプリケーションの統合プラットフォームになることを発表した。当時の目標は、.NET Core、.NET Framework、Xamarin、Mono (.NETの元のクロスプラットフォーム実装) の最高の機能を統合した、単一の .NETランタイムとフレームワーク、クロスプラットフォームを作り出すことだった。しかし、世界的な健康パンデミックのため、統合は .NET 6に延期された (2021年11月にリリースされる予定) 。.NET Confでのリリースイベント中に、Microsoft on .NETのプログラム管理ディレクターであるScott Hunter氏は、統合プラットフォームを実現するという継続的な使命を再確認した:

私たちは、.NETプラットフォームを統合する旅を続けています。1つの .NETに対する私たちのビジョンは、ライブラリ、ツール、SDK、およびランタイムの統合されたセットです。.NET 5は、.NET Coreで利用可能なすべてのものを利用し、いくつかのクラウドおよびWeb投資を追加することから、この旅を開始します [...] 。

統合プラットフォームのビジョンは、Microsoft on .NET CoreのプリンシパルプログラムマネージャであるRichard Lander氏によっても強化された。ただし、元のスコープが変更されたにもかかわらず .NET 5は、いくつかの新機能とともに .NET Core 3.1に比べて多くの改善をもたらす。このリリースで最も関連性の高い機能の1つは、Windows ARM64のサポートの追加であり .NETをそのようなプラットフォームでネイティブに実行できるようにする。その結果、Surface Pro Xなどのデバイスは、Windows Forms、WPF、およびASP.NET Coreアプリを実行できるようになる。

このリリースのもう1つの重要な機能は、単一ファイルアプリケーションの改善である。単一ファイルアプリケーションは、アプリとそのすべての依存関係を含む単一ファイルとして公開およびデプロイされる。また、自己完結型にすることもできる。つまり、独自の .NETランタイムを実行できる。これは、特定のランタイムバージョンに依存するアプリにとって特に興味深いものである。.NET 5は、より効率的なメモリ使用量を備え、「さまざまなオペレーティングシステムにわたるマイクロサービスのコンテナ化されたアプリケーションにより適した」 (Hunter氏による) 小さな単一ファイルアプリケーションをもたらす。ただし、.NET 5の単一ファイルアプリは主にLinuxに焦点を合わせていることに注意する必要がある。WindowsおよびmacOS用のアプリには、追加のファイル (ネイティブランタイムバイナリ) が必要である。この状況は .NET 6で再検討される。


.NET 5には、さまざまな領域でのパフォーマンスの改善も含まれている。ガベージコレクター (GC) は、収集の効率化、コア数の多いマシンでのスケーラビリティの向上、およびその他の多くのマイクロ最適化によって大幅に改善された。このリリースには、ハードウェア組み込み関数 (ARM64を含む) とAPI最適化が改善されたJust-In-Time (JIT) コンパイラの新しいバージョンも含まれている。Roslyn (C#およびVisual Basicコードをインタープリター型言語にコンパイルするために使用される .NETコンパイラプラットフォーム) も、新しいパフォーマンスに重点を置いたAnalyzersC# Source Generatorsの導入により改善された。Source Generatorsを使用すると、開発者はユーザコードを検査し、コンパイルに追加できる新しいソースファイルを生成できる。一部のシナリオでは、実行時の実行時リフレクション呼び出しとILウィービングを置き換えるために使用できる。

.NET 5のその他の関連するパフォーマンスの向上には、正規表現HTTP 1.1リクエストハンドリングHTTP/2スケーリング、および文字列パターンが含まれる。すでに .NET Core 3.1のJSON APIにはバックポートされ大幅な改善が加えられたが .NET 5はコレクション処理の改善新しいキャッシュレイヤを備えたより優れたJsonSerializerを備えている。gRPCフレームワークも特別な注目を集めた。Microsoftのベンチマークは .NET Core 3.1よりも大幅にパフォーマンスが向上していることを示している (サーバで60%、クライアントで230%高速) 。gRPCは基盤となるプロトコルとしてHTTP/2を使用するため、新しいHTTP/2実装も、観察されたパフォーマンスの向上に部分的に関与している。最新の .NET IOタイプ (Span<T>ReadOnlySequence<T>、およびIBufferWriter<T>) のサポートの追加など、Google.Protobufパッケージの関連する変更も、gRPCのパフォーマンスに直接影響した。.NET 5のすべてのパフォーマンス改善の包括的なリストはここにある。

(画像提供: Scott Hunter's presentation at NET Conf)

新しいリリースでは、コンテナイメージのサイズが縮小され新しいコンテナAPI新しいターゲットフレームワーク名も追加されている。.NET 5では、ターゲットフレームワークは、プロジェクトのターゲットとなるAPIのセットを識別するために使用される短いコードネームである Target Framework Monikers (TFM) を使用して .csproj プロジェクトファイルで指定される:

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
</PropertyGroup>


ASP.NET Coreフレームワークには、新機能、パフォーマンスの向上、互換性の変更も含まれている。新機能には、Microsoft.Identity.Webを使用したAzure AD認証、SignalRでの並列ハブ呼び出しのサポート、ASP.NET Core APIプロジェクトでのデフォルトのOpen API Specification (Swagger) が含まれる。Blazor WebAssemblyのパフォーマンスの向上は、複雑なUIレンダリング (コンポーネントの仮想化と事前レンダリング) とJSONシリアル化に重点を置いている。その結果 .NET 5のBlazor WebAssemblyは、ほとんどのシナリオでBlazor WebAssembly 3.2よりも2〜3倍高速である。

最後に、.NET 5には関連する言語の更新も多数ある。C# 9は、プログラムの単純さとデータの不変性に重点を置いており、レコード、トップレベルステートメント、改善されたパターンマッチングなどのいくつかの新機能をもたらす。F# 5は、多くのパフォーマンスの向上と、非常に要望の多かった2つの新機能が付属している。補間文字列とOpen Type宣言 (C#のオープン静的クラスと同様) である。F# 5は、Jupyter Notebooksnteract、およびVSCode Notebooksでも完全にサポートされている。予想どおり、開発ツールチェーンも更新された。Visual Studio 2019の新しいバージョン (Windowsの場合は16.8Macの場合は8.8) も本日リリースされ (.NET 5は既に含まれている) 、ClickOnceアプリケーションのデプロイメントが .NET Core 3.1および .NET 5両方でサポートされるようになった。

Microsoftによると、.NET 5はすでにプロダクション環境にデプロイする準備ができている。.NET WebサイトBing.com最初のプレビューリリースから .NET 5で実行されており、公式リリースノートに記載されているように「Microsoftのチームとその他の企業によってプロダクション環境およびパフォーマンステスト用にすでに積極的に使用されています」。.NET 5の完全なリリースノートはここにあり、.NET Core 3.1から .NET 5への移行に関する重大な変更の包括的なリスト (WinRT APIをサポートするための新しいモデルを含む) はここにある。.NET 6の最初のプレビューは、年末に予定されている。現在の .NET開発ロードマップはここから入手できる。

この記事に星をつける

おすすめ度
スタイル

BT