.NET Coreの次期メジャーバージョンである.NET Core 3.0が最近プレビューステージに入った。.NET Core 3.0では、Windows Presentation Foundation(WPF)、Windows Forms(WinForm)、Entity Framework(EF)、Blazor、C# 8、.NET Standard 2.1を使用したデスクトップアプリケーションの構築がサポートされる。
InfoQが最近報告したように、WPFとWinFormの両方が最近MITライセンスの下でオープンソース化されている。.NET Core 3.0の一部であるが、現時点ではWindowsでしか利用できず、Microsoftは他のプラットフォームへの移植を計画していないようである。しかし、これがオープンソースであるという事実は、コミュニティによってmacOSとLinuxに移植される可能性を表す。
.NETデスクトップにWindowsデスクトップアプリケーションのサポートを追加するだけでなく、この新リリースではBlazorコンポーネントを導入することで.NET Core Web開発サポートも前進している。BlazorはオープンなWeb標準ベースの実験的フレームワークであり、WebAssembly .NETランタイム上で実行され、モバイルを含むブラウザで表示されるUIコンポーネントを作成できる。フルスタック開発向けに.NETを利用できるようにしている一方で、Blazorはプレアルファ版であり、Microsoftはまだ技術的な問題をまとめることとコミュニティの関心を測ることに取り組んでいる。
C# 8.0は、.NET Core 3のもう1つの主要コンポーネントである。これは、C#ロードマップに追加されたときに、InfoQが記事にしていた多くの新しい言語機能を提供する。例えば、null許容型、既定のインターフェイスメソッド、非同期ストリーム、範囲、再帰パターンがあり、他にも多くの機能が提供される。
.NET Core 3では、新しいバージョンのEF Framework EF Core 3もサポートされる。これにはLINQ実装の大幅な変更が含まれ、それによって、生成されたクエリの正確性と効率が向上し、非効率的なクエリを検出できる。これに関連して、Entity Framework 6.3は.NET Core 3に含まれ、開発者はそれに依存する既存のアプリケーションを移植することができる。
.NET Coreの主な利点は、.NET Frameworkと比較して.NET Coreは比較的簡単に進化させることができることである。マイクロソフトの.NETプログラム管理ディレクターのScott Hunterはこのように述べている。これは、.NET Coreがアプリケーションの実行可能ファイル内にパッケージ化されているため、アプリがOSバンドルのフレームワークから実質的に独立しているためである。それに対して、OSに組み込まれた.NET Frameworkは、それに依存する膨大な数の既存アプリケーションとの互換性を維持することを余儀なくされており、その進化は非常に遅くなっている。その証拠に、.NET Coreは、すべての.NET実装で利用可能なAPIのベースラインを定義する.NET Standardの進化を推進し始めた。実際、.NET Standard 2.1には、.NET Core 2.1以降、.NET Coreのオープンソース開発の一部として、Span<T>
、ValueTask
などを含めて導入された約3,000の新しいAPIが追加されている。
最後に注記として、.NET Core 3のもう1つの重点分野はIoTである、とHunter氏は書いており、Raspberry PiとArduinoデバイスで使用されるGPIO、PWM、SPI、I2C APIのサポートを提供している。
これは、2019年後半にリリースされる予定の.NET Core 3の新機能の概要である。試したい場合は、MicrosoftのWebサイトからdownload .NET Core 3 Preview 1をダウンロードしてください。