この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
少し前の話となりますが、11/11 に .NET 5 がリリースされました。この記事ではそもそも .NET とはなにか、そして .NET 5 とはなにか、そしてどこへ行くのか (行きそうか) を若干の思い出とともに記述していきます。
.NET Framework と .NET Core
.NET 5 の前に、.NET Framework の話をします。.NET はソースコードを中間言語にコンパイルし、実行環境で動作するときにネイティブコードにすることで、どの環境でも (ランタイムがあれば) 動作することをウリにしていました。Java に対抗したのでしょうが、実際には Windows 以外に .NET Framework ランタイムは提供されなかったのでどの環境でも動作することはありませんでした。2002~2003年頃には .NET Framework の TV CM がバンバン流れていたことを思い出します。
実際に筆者が携わったときは Visual Studio 2002/2003 且つ .NET 1.0 でしたが、順次バージョンアップされ、2019年にリリースされた .NET 4.8 が最終版となります。
その間、.NET Framework と動作するバイナリ (exe) が相違する、オープンソースでクロスプラットフォームな .NET Core も開発されました。.NET Core は Windows だけでなく、Linux や macOS でも動作します。3.1 までリリースされました。
今回 GA した .NET 5 は .NET Core 3.1 のメジャーアップデートとして、また .NET Framework 4.8 の後継 (=移行先) としてリリースされたものです。
※.NET Framework のバイナリは .NET 5 では動作しませんので移行する必要があります。
※.NET Standard の話は割愛します。
.NET 5 の新機能
.NET 5 は Windows、macOS、Linux に対応しており、CPU アーキテクチャは x86、x64、Arm32、Arm64 に対応しています (詳細は公式を参照ください)。
新機能としては、(.NET Core 3.1 からの) パフォーマンスのアップデート、C# 9.0 の構文や型の追加や GC を改善する一方、ASP.NET Web Forms や WCF が削除されており、ASP.NET Web Forms は ASP.NET Blazor が、WCF は gRPC が移行パスとなります。なんと WinForm は生き残りました。因みにクラシックな SharePoint は Web Forms です。
LTS は .NET 6 や 8 などの偶数ナンバーとなります。
詳細は以下をご参照ください。
Announcing .NET 5.0 | .NET Blog (microsoft.com)
C# – 再統合された .NET:.NET 5 に関する Microsoft の計画 | Microsoft Docs
.NET の行く末
Blazor / Xamarin / Maui / Uno (クラスプラットフォーム UI) など、重複する技術領域があり、今後紆余曲折ありそうです。
しかし、.NET 5 により、真にクロスプラットフォームとなったことは価値のあることで、さらにデスクトップからモバイル、Web までカバーしており今後も使用されることは間違いないでしょう。その他、サポートされず完了もしないかもしれない実験的プロジェクト (Kubernetes への展開が容易になる Project Tye や Blazor Electron/ネイティブ、Blazor Dynamic JS 等) も多々あり、個人的に注目していきたいところです。
この記事により、.NET への興味が引き立てられましたら幸いです。