By Daniel Laufenberg on 07/28/2024
.NETエコシステムの命名は、エンジニアにとって特に混乱を招くトピックの一つです。私が.NETエコシステムで開発を始めた頃、.NET Coreはちょうど人気を集め始めていました。しかし、コーディングフォーラムなどで「xxはASP .NET 4.8では動作しない」や「.NET Standard xyzは.NET Framework xyzではサポートされていない」といった文章などに何度も出くわし、かなり混乱していたのを覚えています。.NETエコシステムに初めて足を踏み入れたばかりの方なら「なにがなんだかわかんない」と思うことでしょう。 本記事では、違いをできるだけ簡単に説明します。
.NET Framework: 2002年2月に導入されたレガシーフレームワークで、Windows上でのみ動作します。
.NET Core: Linux、Windows、macOSで動作する新しいバージョンの.NETです。.NET 5以降、「Core」の命名が外されました (一番混乱を招く部分です)。
.NET Standard: .NET Framework、.NET Core、および他のランタイムをサポートするライブラリを構築するための仕様です。
正当な理由がない限り、このバージョンの.NETで新しいプロジェクトで新しい開発を始める企業は稀ですが、多くの企業は既存のアプリケーションに.NET Frameworkを使用しています。これらのアプリケーションには、レガシーの社内デスクトップアプリケーションや、まだ移行されていないウェブアプリケーションなどが含まれます。.NET FrameworkはWindowsベースの環境でのみサポートされているため、 Frameworkバージョンで構築されたアプリケーションを実行するにはWindowsOSを用いたサーバーが必要となります。構築可能なアプリケーションタイプには、WPF、WinForm、ASP.NETがなどがあります。現時点ではサポート継続されていますが、新しい開発は行われておらず、Microsoftから新しいアップデートをリリースされる予定もありません。
.NET Coreは.NETエコシステムの最先端テクノロジーとなっております。.NET Frameworkとは異なり、.NET Coreは完全にクロスプラットフォームであり、macOSやLinuxに向けた開発もできます。この進化により、通常Windowsシステムを使用しない企業も.NETをアプリケーション開発の有力な選択肢として検討できるようになりました。.NET Coreの最初のバージョン(1.0)は2016年6月27日にリリースされ、現時点(7月2024年)では、最新の公式リリースはNET 8になっております。.NET 5のリリース以降、「Core」のブランド名は外され、以降のバージョンを単に.NETと呼ぶようになりました。しかし、「Core」のブランド名を削除することは一見不要、または混乱を招くではないかと思う人も多いでしょう。これに関して、Microsoftは、「今後のバージョンの.NET Coreが主要な実装であることを強調するため」に行ったと会社公式ドキュメンテトに記述しています (公式リンク)。
また、NET Coreで開発できるアプリケーションの種類はかなり幅広く、ウェブ、デスクトップに限らず、モバイルアプリケーション(.NET 5以降)の開発も可能になりました。Microsoftは全アプリケーション形容を.NETプラットフォームに統一する事を目的としています。
.NET Standardは.NET Coreまたは,.NET Frameworkとは全く違う物と考えるのが正しいでしょう。.NET Standardはアプリケーション開発フレームワークではなく、さまざまなバージョンの.NETに対応するC#ライブラリを構築するための仕様です。.NET Standardに準拠する事で、.NET Framework、.NET Core、Xamarin、Mono、UWP、Unityなどに対応するライブラリを作成できます。例えば、.NET Standard 2.0は、.NET Framework 4.6.1以降および.NET Core 2.0以降に対応します。多くの企業は、レガシーシステムと新しいシステムの両方でサポートされるコードを書く必要があるため、.NET Standardに基づいた下位互換性のあるライブラリを構築することで、効率よくコードを再利用できます。
.NETエコシステムで使用されるさまざまな名前の違いを理解は深まったでしょうか?。StackOverflowや他のコーディングフォーラムで回答を見る際に、.NETのバージョンが明示されていない場合は、投稿日を確認してする事でベージョンが推定できます。例えば、2016年6月以前の投稿であれば、おそらく.NET Framework関係の質問でしょう。スニペットが載ってる場合は、使用されているNamespaceを検索などをして、バージョンの調べる事もできます。
アクセス制御を実施するために、Microsoft Entra IDをウェブアプリケーション(Razor Pages)に統合する方法について詳しく解説します。