先月、.NET 5.0 の RC2 がリリースされた。
.NET 5.0 RC2の発表
公式発表では、
「これは.NET5.0のほぼ最終リリースであり、11月の公式リリース前の2つのRCの最後です。
RC2は『稼働』リリースです。本番環境での使用がサポートされています。」
と言っている。
これまでの .NET 4.8 シリーズと、.NET 5.0 は名前が似ているので同じ物に見えるかも知れないが、両者は全然違う物なので、システムのセットアップなどをする時には両者の違いに注意する必要がある。
これまで、Windows で .NET Framework を使用してシステムのセットアップなどを行ってきた人には「.NET 4.0 から .NET 4.8 まで」と、「.NET 5.0 以降」のバージョンは異なる製品として扱う必要がある。
情技師(ITエンジニア)なら既に知っていると思うが、システム運用に関わる非情技(非エンジニア)向けに両者の違いを解説しておく。
他のサイトでも両者の違いは解説されているが、情技師(ITエンジニア)向けの説明が多いので、この記事を書くことにした。
「.NET」は4種類ある
現在使用されているプラットフォームとしての .NET には大きく分けて四種類あると思って欲しい。
その四種類は以下の系列である。リリースされた順番に並べる。
.NET Framework 3.5 (.NET 2.0系列)
.NET Framework 4.8 (.NET 4.0系列)
.NET Core 3.1 (.NET Core 系列)
.NET 5.0 (.NET Core 系列)
.NET はバージョンアップの過程で、時々古い規格を廃止して、異なる規格の元で再始動する事がある。
最初の .NET 1.0 の規格は、.NET 2.0 がリリースされる時に廃止された。
.NET 2.0 以降では .NET 1.0 で開発されたアプリは使用できなくなった。
同じ事が、.NET 4.0 がリリースされた時にも行われた。
.NET 2.0 以降では .NET 2.0 から .NET 3.5 までで開発されたアプリは使用できなくなった。
.NET 2.0 から .NET 3.5 までのバージョンアップは互換性が維持され、 .NET 2.0で開発されたアプリは .NET 3.5 上でも稼働した。
技術の進歩の過程で古い技術が、定期的に捨てられているのだ。
他の技術でも行われている事である。
.NET 4.0 以降では、 .NET 3.5 までの規格で開発されたアプリは稼働しない。
.NET 4.0 の規格は .NET 4.8 まで互換性が維持され同じアプリが稼働した。
しかし、.NET 5.0 以降では .NET 4.0 の規格は廃止される。
.NET 5.0 以降では、 .NET 4.8 までの規格で開発されたアプリは稼働しない。
だから、業務で .NET 4.0 から .NET 4.8 までの規格で開発されたシステムを運用している人は、.NET 5.0 をインストールしても、そのシステムは稼働しない。
別途 .NET 4.8 をインストールする必要がある。
.NET は複数バージョンをインストールして共存する事ができるので、 .NET 4.8 と .NET 5.0 を両方インストールする事に問題はない。
もし .NET 4.7 以前 .NET 4.0 以降で開発されたシステムなら .NET 4.8 をインストールすれば良い。
.NET 4.0 から .NET 4.8 までの範囲には互換性がある。
先の四種類の .NET系列の中では互換性があるから、系列の最新版だけインストールすればアプリは稼働する。
「.NET 5.0」は「.NET Core」の系列に含まれる
.NET Core 3.1 (.NET Core 系列) とは、Linux や Mac など Windows 以外の OS でも同じアプリが稼働するように作られた VM(仮想マシン) である。
VM(仮想マシン)の代表格は Java だが、.NET は元々 Microsoft が Java を Windows に組み込もうとしたが、仕様の変更がライセンス権限の関係で難しかった為、独自に開発したVMが .NET である。
Java がどの OS でも稼働する VM であるように、.NET も構造上はどこの OS でも稼働する VM として開発されている。
しかし、開発当初は Microsoft の Windows 囲い込み戦略のため、.NET は Windowsでしか稼働しなかった。
しかし、近年 CEO交代による経営方針の変更により、.NET は オープンソース化して、どこの OS でも稼働するプラットフォームになった。
この「どこの OS でも稼働する」ように一部を改変されたものが、「.NET Core」である。
2016年に .NET Core 1.0 がリリースされて以来、バージョンアップが繰り返され、現在は 3.1 が最新バージョンとなっている。
実は、.NET 5.0 とは、.NET Core 3.1 の次のバージョンなのである。
つまり、.NET 5.0 は「.NET Core 系列」の最新バージョンである。
.NET 4.8 以前は「.NET Framework」と呼ばれる。
「.NET Core」は「どこの OS でも稼働する」別の .NET系列の呼び名である。
「.NET Framework」は一部に Windows 固有の機能を操作できる機能を含んでいる。
「.NET Core」ではこの Windows 固有の機能は削除されている。
同様に「.NET 5.0」でもこの Windows 固有の機能は削除されている。
古い規格が削除されるだけではないのだ。
「.NET 5.0」では「.NET Framework」や「.NET Core」と言う呼称も廃止され、シンプルに「.NET」と呼ばれる。
「.NET 5.0」で廃止される機能
「.NET Core 3.1」から「.NET 5.0」への移行で廃止される機能は以下の公式サイトで説明されている。
バージョン 3.1 から 5.0 への移行の破壊的変更
また、多くの .NET Framework ユーザーにとって需要な「.NET Core系列で使用できなくなる機能」は以下の公式サイトで解説されている。
再統合された .NET:.NET 5 に関する Microsoft の計画
以下に引用する。
「.NET 5 のフレームワークでは主要な API セットが利用できますが、この 20 年ほどの間に開発されたあらゆる機能が含まれているわけではありません。.NET Standard 2.1 で指定されているすべての API がサポートされることを期待するのはもっともですが、Web Forms、Windows Communication Foundation (WCF) サーバー、Windows Workflow を含め、もっと “レガシ” な API のいくつかはサポートされません。これらは、.NET Framework のみに留まることになります。.NET 5 内で同じ機能性を実現したい場合は、これらの API を次のように移植することを検討してください。
・ASP.NET Web Forms => ASP.NET Blazor
・WCF サーバーおよびリモート => gRPC
・Windows Workflow (WF) => Core WF (github.com/UiPath/corewf)
WCF サーバーのサポートが行われないことは、一部の人にとって間違いなく残念なことです。しかし、Microsoft では最近、MIT オープン ソース ライセンス下でソフトウェアをリリースすることを決定しました。このソフトウェアはコミュニティの管理下に入ることになります (github.com/CoreWCF/CoreWCF を参照)。.NET Framework を独立してリリースするにはまだ行うべき作業がたくさんありますが、その間にも、クライアント側の WCF API は利用可能です (github.com/dotnet/wcf を参照)。」
業務システム開発で需要な点は
「ASP.NET の WebForms」
「WCF」
が使用できなくなる点になると思う。
また、以下の公式発表によると、
.NET5.0で計画されているVisualBasicのサポート
以下に引用する。
「今後、VisualBasicを言語として進化させる予定はありません。
これにより、言語の安定性がサポートされ、VisualBasicの.NETCoreバージョンと.NETFrameworkバージョン間の互換性が維持されます。
言語の変更が必要な.NETCoreの将来の機能は、VisualBasicではサポートされない可能性があります。」
「Visual Basic」は将来のバージョンアップでサポートされない可能性があると説明している。
少なくとも今後の業務システムの技術選定において、WebForms を使用した ASP.NET 開発と、WCFを用いたスマートクライアント開発は選択できないと考えるべきだ。
また、開発言語として「Visual Basic」は選択すべきでは無いだろう。
.NET 5.0 正式リリース (2020-11-11追記)
2020年11月11日1時ごろ、正式に .NET 5.0 がリリースされた。
Microsoft Visual Studio Community 2019
Version 16.8.0
もダウンロードされてきます。
.NET 5.0 使用して以下のコードが動きました。
using System;
Console.WriteLine(“Hello World!”);
とり急ぎお伝えします。
2021年4月19日に追記
.NETのサポート期間についての解説記事を書きました。興味があればご覧ください。
.NETのバージョンごとのサポート期間について注意事項(LTSとCurrent)
2021年11月10日に追記
長期サポートの .NET6.0 が正式リリースされました。
遂に正式リリース! .NET 6.0 LTS への移行の勧め。
2023年11月21日に追記
.NET 8 がリリースされました。
以下の記事で .NET のリリース期間とライフサイクルについて、解説してします。