.NETのバージョンごとのサポート期間について注意事項(LTSとCurrent)

2021年4月19日月曜日

システム開発 技術的備忘録

t f B! P L
 
昨年、11月に .NET5.0がリリースされた。
.NET5.0は以下の記事で解説したように、それまでの.NET4.8とは違い、.NET Frameworkではなく、.NET Core の最新バージョンとなる。
 
 
今後、.NET Framework のアップグレードは行われず、最新版は全て .NET Core 系列のアップグレードがリリースされる。
 
しかし、.NET Framework は今すぐ無くなるわけではなく、少なくとも2029年まで使用する事はできる。
 
この点で、旧.NET Framework と、最新の .NET とのサポート期間や、.NETアプリのマイグレーション(最新基板への移行やシステム再構築)をどのようにすれば良いか、分からなくなる。
そのような分かりにくい .NET の種類とバージョンごとのサポート期間について、解説したいと思う。
ITエンジニア向けの解説は沢山あるが、この記事ではIT素人向けに解説したいと思う。
 
 

.NET Framework と .NET Core は違う

 
.NET Framework と .NET Core , .NET 5.0 の違いについては、先のリンク先の記事で解説しているので、先に読んで欲しい。
もう一度リンクを張っておく。
 
 
.NET Framework は最初に登場した .NET の後継であり、Windowsに標準で搭載されている。
 
これに対し、最新の .NET5.0 に代表される .NET Core 系列の.NETはWindowsに標準搭載されていない。
ユーザーが自分でインストールする。
インストール方法は以下の公式サイトで解説している。
 
 
色々書いてあるが、基本的にインストーラをダウンロードして実行するだけなので簡単である。
複数の.NETは一つのOSに共存できる。
.NET Framework と .NET Core , .NET5.0 も全部共存できる。
 
インストールモジュールには大きく分けて、Runtime と SDK の2種類がある。
Runtime は .NET アプリを実行する為に必要な物を揃えた物で、一般ユーザーは通常はRuntimeだけをインストールすれば事足りる。
SDKは開発に必要なコンパイラなどを含むパックであり、Runtimeを含んでいる。
.NETプログラマーなどがSDKを使用する。
全ての.NETのバージョンにRuntimeとSDKが存在する。
 
統合開発環境のVisual Studio をインストールするとSDKもインストールされる。
 
Runtimeをインストールした後で、SDKを上書きインストールしても特に問題はない。
 

LTS(Long Term Support)を使用する

 
.NETは、.NET Framework でも、.NET Core 系でも細かい周期で最新アップグレード版がリリースされ、初心者にはどのバージョンを使用するべきか分からなくなる。
 
システムやアプリの開発で使用する.NETのバージョンは、必ずLTS(Long Term Support)版を使用する。
LTS版は3年間のサポート期間が保証されている。
LTSではないバージョンはCurrentと呼ばれる。
Current版は通常1年程度しかサポートされないので、実用的なバージョンではない。
正式なシステム開発などではLTS版でなければ、頻繁にマイグレーションしなければならないのでコスト的に実用的では無い。
 
現在、LTSに該当するバージョンは以下の物になる。
 
.NET Framework 3.5
.NET Framework 4.8
.NET Core 3.1
 
.NET 5.0 はLTSではない。2022年2月にはサポート期間が終了する。
今、.NET Core 系で新規開発するなら、.NET Core 3.1 を使用する事になる。
 
後で解説するが、.NET Framework のLTSのサポート期間は非常に長く設定されており、2029年まで使用する事が可能である。
あえて.NET Framework 4.8 で新規開発するのもアリである。
但し将来のアップグレードは期待できない。
 
参考までにMicrosoftの.NET Core のサポートについての解説をリンクしておく。
 
 
.NET Framework については後に解説する。
 

二つのサポートポリシー

 
Microsoftの.NETサポート方針は、.NET Frameworkと .NET Core 系では異なる方針を採用している。
 
.NET Core 系ではモダン ライフサイクル ポリシーを、.NET Framework ではコンポーネントのサポートとしてOSとサポートを一体化している。
 

.NET Core系のモダン ライフサイクル ポリシー

 
モダン ライフサイクル ポリシーをMicrosoftは以下のように説明している。
 
「モダン ライフサイクル ポリシーは、継続的にサービスとサポートが提供される製品およびサービスを対象としています。 このポリシーでは、次の条件を満たす場合に製品またはサービスのサポートが継続されます。
1. お客様は、製品またはサービスを対象に発行されたサービス要件とシステム要件に従って、最新の状態を保っている必要があります。
2. お客様が製品またはサービスを使うには、ライセンスが必要です。
3. Microsoft は、現時点で製品またはサービスのサポートを提供している必要があります。」
 
モダン ライフサイクル ポリシーの対象となる製品およびサービスは、製品またはサービスについて公開されたサービスおよびライセンスの要件に従って最新の状態を保ち、製品またはサービスを使う権利を持っている限りサポートされます。 マイクロソフトは、無料の製品、サービス、またはプレビュー リリースを除き、後継の製品またはサービスを提供せずにモダン ライフサイクル ポリシーの対象となる製品のサポートを終了する場合、少なくとも 12 か月前に通知します。
 
 
 
「.NETCoreおよび.NET5サポートライフサイクルは、各リリースのサポートを提供します。時間の長さとサポートの程度は、いくつかの資格に基づいて異なります。
お客様は、ロングタームサポート(LTS)リリースまたは現在のリリースを選択できます。すべてのリリースの品質は同じです。唯一の違いは、サポートの長さです。LTSリリースは、3年間無料のサポートとパッチを利用できます。現在のリリースでは、15か月間無料のサポートとパッチが提供されます。
リリースのサポートライフサイクル内で、システムはリリースされたパッチアップデートで最新の状態を維持する必要があります。」
 
 
.NET Core 系列の最新の .NET は今後ほぼ毎年アップグレード版がリリースされ、LTSも二年ごとにリリースされる予定になっている。(サポート期間は3年間)
 
ユーザーとしては、LTSを使用する場合でも、三年以内に次の最新版の .NET にアップグレードしなければならない。
「最新の状態を保つ」のはユーザーの義務である。
 
正確なサポート期間としては、
LTS版の場合はリリースから3年間、
Current(非LTS版)の場合は、「次のバージョンがリリースされてから3ヶ月以内の期間」となっている。
 
最新のCurrent版 .NET5.0 以降は、毎年.NETの最新版がリリースされ、Current版とLTS版が交互にリリースされる。
従って、Currentのサポート期間は、翌年次のLTS版がリリースされてから3ヶ月以内なので、実質15ヶ月である。
LTS版は3年である。
 
.NET5.0 はCurrent(非LTS)版なので、翌年リリースされる .NET6.0 はLTS版となる。
.NET6.0 は2021年11月のリリースが予定されている。
 
 

.NET Framework のコンポーネントのサポート

 
.NET Framework のLTSは以下の二つとなる。
 
 
.NET Framework 3.5
.NET Framework 4.8
 
.NET Framework のライフサイクル ポリシーをMicrosoftは以下のように説明している。
 
「バージョン 4.5.2 以降は、NET Framework は Windows オペレーティング システム (OS) のコンポーネントとして定義されています。 コンポーネントに対するサポートは親製品と同じであるため、NET Framework 4.5.2 以降は、インストール先の基盤となる Windows OS のライフサイクル ポリシーに従います。」
 
「.NET Framework 3.5 SP1 (Windows 10 Version 1809 および Windows Server 2019 以降) は、スタンドアロン製品であり、5 年間のメインストリーム サポートと、その後の 5 年間の延長サポートが提供されます。 Windows 10 Version 1809 および Windows Server 2019 より前にリリースされたオペレーティング システムの場合、.NET 3.5 SP1 はインストール先の Windows バージョンのコンポーネントのままになります。」
 
「.NET Framework 4.x とその更新プログラムのライフサイクル ポリシーに変更はなく、引き続き OS のコンポーネントとして定義され、インストール先の Windows のバージョンと同じライフサイクル ポリシーが適用されると見なされます。」
 
 
サポートポリシーにおいて.NET FrameworkはOS(Windows)のコンポーネント(部品)として扱われる。
これはOSのサポートポリシーに合わせてサポートするという意味だ。
OSのサポートが続けばコンポーネントのサポートも続く。
OSのサポートが終わればコンポーネントのサポートも終わる。
.NET Framework はWindows版しか存在しないので、LinuxやMacなどを考慮する必要は無い。
.NET Framework は今後アップグレードしないため、次のバージョンを意識する必要が無い。
 
Windows7 に標準インストールされていた .NET Framework 3.5 は、引用にあるように、5年のメインストリームサポートと、更に5年の延長サポートが受けられる。
もちろんこれはOSのWindowsが最新版を維持している事が前提である。
2028年までは .NET Framework 3.5 を使用できる事になる。
 
有効な、NET Framework 4.5.2 以降の最新版は、.NET Framework 4.8 なので、その他の .NET Framework は、4.8 にアップグレードする事になると思う。
 
.NET Framework 4.8 については、サポートの終了日が明言されていない。
よって、常識的に考えて、古い .NET 3.5 より長く使えるはずなので、2028年以降も使用可能であると考える事が出来る。
 
現状で最もサポート期間の長い .NET は、.NET Framework 4.8 となる。
 
連続サポート期間なら最新の.NETより、アップグレードを終了した.NET Framework 4.8 の方が長いのだ。
 
ここが .NETのややこしいところでもある。
 
 

各.NETのサポート期間

 
.NET Framework と、.NET Core と 最新の .NET のサポート期間を以下に明記する。
 
.NETCoreおよび.NET5リリースのライフサイクル
バージョン
 
初回リリース日
 
サポートレベル サポートの終了
 
.NET 5
 
2020年11月10日
 
Current
 
.NET 6リリースから3か月後
(2022年2月頃)
.NET Core 3.1 2019年12月3日 LTS 2022年12月3日
.NET Core 2.1 2018年5月30日 LTS 2021年8月21日
 
今後のリリース予定製品
バージョン
 
予定リリース日
 
サポートレベル サポートの終了
 
.NET 6.0
 
2021年11月に予定 LTS
 
2024年11月に予定
 
.NET 7.0
 
2022年11月発売予定 Current
 
2024年2月に予定
 
.NET 8.0
 
2023年11月に予定 LTS
 
2026年11月に予定
 
 
 
.NET Framework のサポート期間
バージョン サポートの終了
.NET Framework 3.5





 
Windows Server 2019 換算の場合、
通常2023年
延長2028年
OSによる。

 
.NET Framework 4.8
 
サポートの終了は公言されていない。
 
 

.NETの選択基準

 
2021年11月以降に新規システム開発するなら、.NET6.0一択だと思う。
 
開発が、2021年11月以前でリリースが11月以降なら、.NET6.0のプレビュー版で開発して、11月以降に本番.NET6.0リリースでテストし直してリリースすべきだろう。
 
2021年11月以前にリリースするなら、.NET Core 3.1 で開発してリリースすべきだ。
その上で2022年12月3日までにマイグレーションを行う計画を立てておく。
基本的に.NETアプリの開発は、SIer契約などで良くある「作りっぱなし納品」契約には不向きで、継続開発が必要になる。
 
経産省のDXレポートにあるように、アジャイル開発やレベニューシェア型契約やプロフィットシェア型契約が必要になるかも知れない。
 
最新版を維持するのがユーザーの義務になっているから、システムやアプリも常に最新版に継続的マイグレーションが必要になる。
長期的システム開発運用計画が必要だ。
 
 
逆に「作りっぱなし納品」契約にする必要があるなら、あえてアップグレードの終わった .NET Framework 4.8 で開発するのもアリだと思う。
 
少なくとも2028年までサポートが終了することはないと思う。
もっと継続される事も考えられる。
 
但し、今後登場する最新技術は使用できない。
 
 
パッケージ製品などでは、.NET Framework 3.5 を使用している所もあると思う。
 
こちらは、できるだけ2023年までにマイグレーションを済ませるように計画すべきだ。
顧客ユーザーが延長サポートを受けてでも古いバージョンを使用したいと望むなら、延長サポートを前提に2028年までにマイグレーションする計画を立てても良い。
 
延長サポートは通常は有料である。
 
 
以上、.NETの分かりにくいサポートポリシーについて、IT素人さん向けに説明してみた。
 
お役に立てば幸いだ。

Window10サポート終了(2021/06/15追記)

 
2021年6月24日にMicrosoftが、Windows 10 のサポートを2025年10月14日に終了することを正式に発表した。
 
以下のリンクがその報道です。
 
以下はMicrosoftのサポート期間の資料です。
 
.NET Core 系列は、それ独自のライフサイクル ポリシーがあるのでWindowsのライフサイクルとは関係無く独立していると思うが、.NET Framework はインストール先の Windows のバージョンと同じライフサイクル ポリシーが適用されるため、Windows10のサポートが2025年で終わるなら、それと同時に.NET Framework のサポートも終わる事になる。
Windows Server の場合は.NET Framework のサポート終了時期は見えないが、少なくともWindows10に関しては、2025年10月14日に.NET Framework のサポートを終了することになる。
スタンドアロンアプリやスマートクライアントシステムなどで、デスクトップアプリを.NET Framework で使用している場合、それは2025年10月14日までしか使用できないことになる。
 
.NET Framework 3.5に関しては通常2023年までしか元々サポートしないと発表されていたので、これは既存予定と変わらない。
しかし、延長サポートは2028年まで行われるはずだったのが、2025年までで終わることになったので、これは予定変更となる。
 
.NET Framework 4.8に関してはサポートの終了は公言されていなかったが、.NET Framework はWindowsのコンポーネントとして扱われ、そのサポート期間はインストール先の Windows と同じになる。
Windows10が2025年に終了するなら、.NET Framework のサポートも同時に終わる。
.NET Framework 4.8 のサポートはクライアント側においては2025年10月14日までと考えられる。
延長サポートについては分からないが、期待は薄いと思う。
通常サポート2025年10月14日まで、延長サポートはWindows10の延長サポート次第と言ったところだろう。
 
Windows Server においては、もう少し長くサポートされると思う。
しかし、早急に .NET Framework から .NET Core系列の .NET 6.0 への移行を進めた方が良いことに変わりはないだろう。

このブログを検索

Translate

人気の投稿

自己紹介

自分の写真
オッサンです。実務経験は Windows環境にて C#,VB.NET ,SQL Server T-SQL,Oracle PL/SQL,PostgreSQL,MariaDB。昔はDelphi,C,C++ など。 趣味はUbuntu,PHP,PostgreSQL,MariaDBかな ?基本無料のやつ。

QooQ