.NET Framework、.NET Core、.NET Standard、.NETの違い
問題の概要
.NETエコシステムには「.NET Framework」「.NET Core」「.NET Standard」「.NET」という類似した名称のテクノロジーが存在し、初心者がそれらの違いと用途を理解するのは困難です。これらの概念を明確に区別し、どのようなシチュエーションでどのテクノロジーを選択すべきかを理解することは、現代の.NET開発において不可欠です。
.NETの基本概念
まず重要な前提として、.NETは言語横断的な開発プラットフォームです。C#、VB.NET、F#などのプログラミング言語をサポートし、共通の中間言語(IL)にコンパイル後、共通のランタイム環境で実行されます。
.NETエコシステムのコア要素
- 言語: C#、VB.NET、F#など
- コンパイラ: ソースコードを中間言語(IL)に変換
- ランタイム: ILをネイティブコードに実行 (CLR共通言語ランタイム)
- クラスライブラリ: 開発者が利用する共通APIセット
各テクノロジーの詳細な解説
1. .NET Framework
- 用途: Windows専用アプリケーション開発(デスクトップ/Web)
- プラットフォーム: Windowsのみ
- 状況: レガシーシステム(最終バージョンは4.8.x)
- サポート: メインストリーム開発終了(セキュリティアップデートは継続)
- 特徴:
- Windows固有技術(WCF、ASP.NET Web Forms等)を完全サポート
- 長年の実績あるエンタープライズ向けソリューション
重要
.NET Frameworkの新規開発は推奨されません。既存システムのメンテナンス用途に限定し、新規プロジェクトでは後述の.NETを採用すべきです。
2. .NET Core → .NET (5以降)
- 進化: .NET Core は .NET 5+ へ改名/統合
- 用途: クロスプラットフォーム対応アプリ開発
- プラットフォーム: Windows/macOS/Linux/iOS/Android
- 最新状況: .NET 8+ (2025年現在のアクティブバージョン)
- 特徴:
- ゼロから書き直されたモダンな設計
- 軽量で高性能
- オープンソース(MITライセンス)
- コンテナ化環境に最適
- マイクロサービスアーキテクチャ対応
// .NETでの基本的なコンソールアプリ例
using System;
Console.WriteLine("Hello, Cross-Platform .NET!");
3. .NET Standard
- 本質: 仕様(実装ではない)
- 目的: 異なる.NET実装間でのバイナリ互換性確保
- 動作原理:
- APIの共通セットを定義
- .NET Standard準拠ライブラリは対応実装であればどこでも実行可能
- 使用シナリオ例:
- .NET Framework プロジェクトと .NET プロジェクトで共通ライブラリを共有
.NET Standardのバージョン互換性
.NET Standard | .NET Framework | .NET Core | .NET (5+) |
---|---|---|---|
1.0 - 1.6 | 4.5 - 4.8 | 1.0 - 3.1 | ❌ |
2.0 | 4.6.1+ | 2.x+ | ✅ |
2.1 | ❌ | 3.x+ | ✅ |
.NET Standardの将来性
.NET 5以降では基本ライブラリの統一が完了し、.NET Standardの役割は縮小。新規プロジェクトでは.NET Standard 2.0/2.1のみを考慮し、それ以上のバージョン計画はありません。
バージョン履歴と命名の変遷
1. .NET Framework (2002~) : Windows専用プラットフォーム
2. .NET Core 1.0-3.1 (2016~2020) : クロスプラットフォーム版
3. .NET 5+ (2020~) : .NET Coreの後継、単一プラットフォームに統合
(.NET Framework 4.xとのバージョン衝突回避のため5開始)
技術選定ガイドライン(2025年現在)
プロジェクトタイプ | 推奨テクノロジー | 理由 |
---|---|---|
新規クロスプラットフォーム | .NET (最新版) | 最新機能、パフォーマンス、長期サポート |
既存.NET Framework更新 | .NET Framework | 互換性維持(WPF/WinForms等) |
マルチターゲット共有ライブラリ | .NET Standard 2.0 | 最大互換性(古いFramework含む) |
.NET Core/標準系間共有 | .NET Standard 2.1 | 最新API利用可能 |
最新プロジェクトの推奨アプローチ
.NET 8+はWindows専用機能(Windows Forms/WPF)も提供しています。
主要技術の比較表
特徴 | .NET Framework | .NET (Core/5+) | .NET Standard |
---|---|---|---|
プラットフォーム | Windowsのみ | クロスプラットフォーム | 仕様のみ |
オープンソース | ❌ | ✅ | ✅ |
軽量/高速起動 | △ | ✅ | N/A |
アクティブ開発 | ❌ | ✅ | ❌ |
コンテナ対応 | △ | ✅ | N/A |
マイクロサービス | 非推奨 | 推奨 | N/A |
移行戦略
ステップバイステップ移行:
markdown1. .NET Frameworkアプリを.NET Standardライブラリ経由で分割 2. 部分的なコンポーネントを.NETに移植 3. 最終的に全システムを.NETに移行
Windows固有機能の対応:
- WCF ➔ gRPCやASP.NET Core Web APIへ移行
- ASP.NET WebForms ➔ BlazorやRazor Pagesへ代替
結論
- 新規開発: 常に最新の**.NET**(現在.NET 8+)を採用
- 既存システム: .NET Frameworkはメンテナンスフェーズ移行を計画
- 共有ライブラリ: ターゲット環境で.NET Standard 2.1をサポートしていれば採用
- 学習リソース: 公式Microsoftドキュメントが常に最新情報を提供
変革するエコシステムではありますが、.NETの未来は単一プラットフォーム(.NET 5+)への収束が明確です。新しいプロジェクトではクロスプラットフォーム対応かつ高性能な.NETを選択し、既存システムは段階的移行を検討するのが最善の戦略です。