.NET Framework
Microsoft .NET Framework(マイクロソフト ドットネット フレームワーク)は、マイクロソフトが開発していたアプリケーション開発・実行環境である。バージョン4.8をもって.NET Frameworkのメジャーアップデートは終了し、セキュリティとバグ修正のための更新は継続されるが、以降の新規開発における推奨環境は.NETとなった[2]。
![]() | |
開発元 | マイクロソフト |
---|---|
対応OS |
Windows 7, Windows Server 2008 R2, それ以降[1] |
後継 | .NET |
サポート状況 | セキュリティ・アップデートとバグ修正のみ対応 |
種別 | プラットフォーム |
ライセンス |
Microsoft EULA, Microsoft Reference License (BCL), MITライセンス, プロプライエタリ |
公式サイト |
dotnet![]() |
Windowsアプリケーションだけでなく、XML WebサービスやウェブアプリケーションなどWebベースのアプリケーションなども包括した環境となっている。一般に.NETという場合、.NET全体の環境を指す。現在はOSS版の.NET CoreやMonoも包括した技術仕様の総称を.NETと呼び、プロプライエタリの初期から存在する従来のWindows専用実装のみを.NET Frameworkと呼んで区別している。
アーキテクチャ
編集共通言語基盤
編集.NET Frameworkにおける最も重要な概念は共通言語基盤 (CLI) に含まれている。CLIの目的は言語に依存しない開発環境および実行環境を提供することである。マイクロソフトによるCLIの実装は共通言語ランタイム (CLR) と呼ばれる。CLRは次の主要な5項目からなる。
- 共通型システム (CTS: Common Type System)
- 共通言語仕様 (CLS: Common Language Specification)
- 共通中間言語 (CIL: Common Intermediate Language)
- ジャストインタイムコンパイラ (JIT: Just-in-time compiler)
- 仮想実行システム (VES: Virtual Execution System)
アセンブリ
編集CILのコードはアセンブリ(WindowsにおいてはPE形式)の中に格納される。アセンブリは配置・バージョン・セキュリティの単位である。
メタデータ
編集全てのCILコードはそれ自身の情報をメタデータとして保持している。CLRは正しいメソッド呼び出しが行われていることをメタデータによってチェックしている。メタデータはコンパイラによって生成されるが、開発者が独自のメタデータをカスタム属性として付加することも可能である。
設計目標と重要な特徴
編集.NET Frameworkは次のような目標に基づいて設計されている。
- 相互運用性
- .NETアプリケーションや.NETクラスライブラリではないプログラムとの相互運用を可能にするためのアクセス方法を提供する。例えばCOMコンポーネントへのアクセスは
System.Runtime.InteropServices
やSystem.EnterpriseServices
などの名前空間によって提供され、それ以外の機能はP/Invokeによって提供される。 - 共通の実行環境
- .NET Frameworkにおいてはあらゆる言語で記述されたプログラムが共通中間言語と呼ばれる中間言語にコンパイルされる。マイクロソフトの実装では、この中間言語はJITコンパイラによって実行時にネイティブコードにコンパイルされる。これらの概念は共通言語基盤の仕様に含まれており、マイクロソフトによる共通中間言語の実装を共通言語ランタイムと呼ぶ。
- 言語への非依存性
- .NET Frameworkは共通型システムと呼ばれる概念を導入した。共通型システムの仕様には共通言語ランタイムでサポートされるデータ型について定義されている。このため、複数の言語を用いた開発が可能になる。
- 基本クラスライブラリ (BCL)
- 基本クラスライブラリは全ての.NET Frameworkで利用可能なクラスライブラリである。BCLはファイル入出力、グラフィックス、データベース、XML文書処理など、多くの共通機能をカプセル化したクラス群を提供する。
- 配置
- ソフトウェアをコンピュータにインストールする際、既にインストールされているソフトウェアとの相互干渉やセキュリティといった問題に注意しなければならない。.NET Frameworkはこういった要求に応えるための機能やツールを提供する。
- セキュリティ
- .NET Frameworkではサンドボックスの概念を用いることなく、様々な権限レベルでコードを実行することができる。
用語
編集- マネージコード
- CLRがメモリを完全に把握/管理できるコード。.NET Frameworkで作成するコードの大半はマネージコードである。マネージコード以外のコード(Win32アプリケーション、COMコンポーネントやアンセーフなコード)をアンマネージコードという。
- アプリケーションドメイン
- CLRから見たプロセス空間のようなもので、それぞれ独立したドメインの中でコードを動作させることができる。一つのアプリケーションはCLRを一つしかホストできないが、CLRには複数のアプリケーションドメインを持つことができる。
- メタデータ
- 依存関係をはじめクラスや型、インタフェースなどコードに関する情報。
- 属性
- メソッドやクラス、アセンブリに宣言できメタデータとして格納される情報。
System.Attribute
から派生させたクラスとして開発者が独自に作成でき、実行時に参照・利用できる(カスタム属性)。またCLRのみが認識できる擬似カスタム属性もある。 - アセンブリ
- アプリケーションを配置、利用するときの単位。アセンブリにはメタデータが含まれており、サテライトアセンブリを除き、モジュール、リソースも含まれている。アプリケーションドメインに読み込むことのできる最小の単位でもある。
開発環境
編集C#、Visual Basic .NET、F#、JScript .NETのコンパイラ、各種ツール、ドキュメントなどのSDKはマイクロソフトから無償で配布されている。
統合開発環境
編集.NET Frameworkに対応しているものは以下。
- Microsoft Visual Studio
- Visual Studio Code
- JetBrains Rider
- SharpDevelop - 2016年を最後に終了
- Embarcadero Prism - 2012年を最後に終了
- Borland C# Builder - 2006年を最後に終了
.NET Frameworkだけでなく、互換環境であるMonoや.NET Coreに対応しているものもある。
Microsoft Visual Studio へのプラグイン
編集オープンソース化
編集2014年11月12日、米国マイクロソフトによるイベント「Connect();」で、.NET Frameworkのうち下記の物をMITライセンスの下で公開したことが発表された[3]。
- .NET Framework 4.6 リファレンスソース
- ASP.NET 5
- Entity Framework 6
- .NET Core 1.0 (発表当初は5)
- .NET Compiler Platform ("Roslyn")
これらは製品レベルの実装であり、シェアードソース実装ではない。ターゲットとして、既存のWindowsプラットフォームの他に、LinuxとOS Xが含まれる。
.NET Framework 4.6 のリファレンスソースがMITライセンスになったことにより、それが Mono 4.0 に取り込まれた[4]。
マイクロソフト社以外の実装
編集また.NET Frameworkの基盤となっている仕様である共通言語基盤 (CLI) はEcmaインターナショナル、ISO、JISにて標準化されており[5][6][7]、マイクロソフト以外のベンダーが独自に実装することもできる。実際にXamarinによるMonoプロジェクトをはじめ、いくつかのオープンソースによる実装プロジェクトがある。それらを使うことで.NET FrameworkでコンパイルしたプログラムをLinuxやmacOSなどのWindows以外のOSでも動かすこともできる。なお、マイクロソフトによるCLIの実装を共通言語ランタイム (CLR) と呼ぶ。.NET FrameworkはCLRにその他ライブラリ群を加えたものと言える。
近年[いつ?]では共通言語ランタイム上でJava仮想マシンの実装を試みるIKVM.NETなどのオープンソースプロジェクトも活発化している。
Windows以外のプラットフォームでの実装
編集- Mono
- オープンソースプロジェクトによる.NET Framework互換環境の実装。統合開発環境としてMonoDevelopがある。
- DotGNU Project
- オープンソースプロジェクトによる.NET Framework(CLI+MS拡張)互換環境の実装。GPLに基づいて開発(一部ライブラリなどに例外等がある)。
- Shared Source CLI
- マイクロソフトによるFreeBSD/Mac OS X/Windows向けのECMA CLI/C#の実装。
- .net by au
- BREWプラットフォームを用いたKDDIおよび沖縄セルラー電話が提供するau携帯電話専用の.NET Framework互換環境の実装。ただし、利用できるのは法人専用端末のE05SH、E06SHの2機種とWindows XP Professional SP3がインストールされたPCのみ[8]。
- .NET Core
- マイクロソフトによるクロスプラットフォームかつオープンソースのリファレンス実装。2016年6月27日にv1.0がリリースされている[9]。
バージョン
編集バージョン名 | バージョン番号 | リリース日 |
---|---|---|
Pre-beta | ?.?.?.? | 2000年7月11日 |
1.0 Beta1 | 1.0.?.0 | 2000年9月 |
1.0 Beta2 | 1.0.2914.0 | 2001年6月20日 |
1.0 | 1.0.3705.0 | 2002年1月5日 |
1.0 SP1 | 1.0.3705.209 | 2002年3月19日 |
1.0 SP2 | 1.0.3705.288 | 2002年8月7日 |
1.0 SP3 | 1.0.3705.6018 | 2004年8月31日 |
1.0 SP3 (XP MCE/TPC, KB974378) | 1.0.3705.6073 | 2009年10月14日 |
1.1 | 1.1.4322.573 | 2003年4月1日 |
1.1 SP1 | 1.1.4322.2032 | 2004年8月30日 |
1.1 SP1 (Server 2003) | 1.1.4322.2300 | 2005年3月30日 |
1.1 SP1 (KB974378) | 1.1.4322.2443 | 2009年10月14日 |
2.0 | 2.0.50727.42 | 2005年11月7日 |
2.0 (NT6.0) | 2.0.50727.312 | 2007年1月30日 |
2.0 (KB928365) | 2.0.50727.832 | 2007年7月10日 |
2.0 (NT6.0, KB974378) | 2.0.50727.1003 | 2009年10月14日 |
2.0 SP1 | 2.0.50727.1433 | 2007年11月19日 |
2.0 SP1 (NT6.0 SP1) | 2.0.50727.1434 | 2008年2月4日 |
2.0 SP1 (NT6.0 SP1, KB974378) | 2.0.50727.1873 | 2009年10月14日 |
2.0 SP1 (KB2265906, .NET 3.5) | 2.0.50727.1882 | 2010年8月11日 |
2.0 SP2 | 2.0.50727.3053 | 2008年8月12日 |
2.0 SP2 (KB959209) | 2.0.50727.3074 | 2009年1月26日 |
2.0 SP2 (KB974378) | 2.0.50727.3603 | 2009年10月14日 |
2.0 SP2 (KB2265906, .NET 3.5 SP1) | 2.0.50727.3615 | 2010年8月11日 |
2.0 SP2 (NT6.0 SP2) | 2.0.50727.4016 | 2009年4月29日 |
2.0 SP2 (NT6.0 SP2, KB974378) | 2.0.50727.4200 | 2009年10月14日 |
2.0 SP2 (NT6.0 SP2, KB2265906, .NET 3.5 SP1) | 2.0.50727.4206 | 2010年8月11日 |
2.0 SP2 (NT6.1) | 2.0.50727.4927 | 2009年7月13日 |
2.0 SP2 (NT6.1 SP1) | 2.0.50727.5420 | 2010年11月19日 |
3.0 | 3.0.4506.30 | 2006年11月6日 |
3.0 (NT6.0) | 3.0.4506.26 | 2007年1月30日 |
3.0 SP1 | 3.0.4506.648 | 2007年11月19日 |
3.0 SP2 | 3.0.4203.21523.0.4506.21233.0.6920.1453 | 2008年8月12日 |
3.0 SP2 (NT6.0 SP2) | 3.0.4506.40373.0.6920.4000 | 2009年4月29日 |
3.0 SP2 (NT6.1) | 3.0.4203.49263.0.4506.49263.0.6920.4902 | 2009年7月13日 |
3.0 SP2 (NT6.1 SP1) | 3.0.4203.54203.0.4506.54203.0.6920.5011 | 2010年11月19日 |
3.5 | 3.5.21022.8 | 2007年11月19日 |
3.5 SP1 | 3.5.30729.1 | 2008年8月12日 |
3.5 SP1 (NT6.1) | 3.5.30729.4926 | 2009年7月13日 |
3.5 SP1 (NT6.1 SP1) | 3.5.30729.5420 | 2010年11月19日 |
4.0 | 4.0.30319.1 | 2010年4月13日 |
4.5 | 4.5.50709.17929 | 2012年8月15日 |
4.5.1 | 4.5.50938.18408 | 2013年10月12日 |
4.5.2 | 4.5.51209 | 2014年5月5日 |
4.6 | 4.6.00081.00 | 2015年7月20日 |
4.6.1 | 4.6.01055 | 2015年11月30日 |
4.6.2 | 4.6.01586 | 2016年8月2日 |
4.7 | 4.7.02053 | 2017年4月5日 |
4.7.1 | 4.7.02556 | 2017年10月17日 |
4.7.2 | 4.7.03056 | 2018年4月30日 |
4.8 | 4.8.03761 | 2019年4月18日 |
4.8.1 | 2022年8月9日 |
CLR バージョンと共存性
編集各バージョンは上位互換性が概ねある。しかし、上位互換性が保証されているのは、CLR のバージョンが同じものであり、CLR のバージョンが同じ物は1つしかインストールできない[10]。現在、下記の CLR バージョンが存在する[11]。
- 1.0: .NET Framework 1.0
- 1.1: .NET Framework 1.1
- 2.0: .NET Framework 2.0〜3.5
- 4.0: .NET Framework 4.0〜4.8
.NET Framework 1.0
編集.NET Frameworkの最初のバージョンである。Windows 98、NT 4.0、2000、XP向けに提供された。 Windows XP SP1のCD-ROMには標準でインストーラーが収録されている。
.NET Framework 1.1
編集.NET Frameworkの最初のバージョン更新である。 Windows XP SP2およびSP3のCD-ROMには標準でインストーラーが収録されている。
.NET Framework 1.0からの主な変更点
- ASP.NETのモバイル向け機能の追加
- セキュリティ仕様の変更
- ODBCとOracle Database用のデータ接続の標準サポート
- IPv6のサポート
- 多数のAPIの変更
.NET Framework 2.0
編集いくつかのAPIの追加とCLRに変更が加えられた。次のような特徴を持っている。Microsoft Visual Studio 2005以降で開発可能である。 Windows Server 2003には標準搭載されている。Windows NT 4.0への対応はこのバージョンで打ち切られた。
.NET Framework 1.1からの主な変更点
- データバインディングの新しいAPIの追加
- ASP.NETのウェブコントロールを幾つか追加
- ネイティブアプリケーションへの新しいホスティングAPI
- CLRのジェネリクスの対応
- 64ビット(x64とIA-64)システムへの対応
- .NET Micro Frameworkの追加
- 多数のAPIの変更
.NET Framework 3.0
編集もともと「WinFX」という名称で提供される予定だったが、提供の5か月前の2006年6月に現在の名称に変更された[12]。Windows VistaやWindows Server 2008には標準搭載されている。Windows 98、ME、2000への対応はこのバージョンで打ち切られ、Windows XPより前のOSでは動作しない。
クラスライブラリやCLRなどの基盤は.NET Framework 2.0から変更されておらず、以下の4つの新しいテクノロジーを加えたものとなっている。
- Windows Presentation Foundation (WPF)
- XMLに基づく新しいユーザインタフェースサブシステム。
- Windows Communication Foundation (WCF)
- 新しい通信サブシステム。
- Windows Workflow Foundation (WF)
- ワークフローによるアプリケーション開発のためのフレームワーク。
- Windows CardSpace (WCS)
- ユーザの個人情報をセキュアに管理し、統一されたアクセス方法を提供するためのフレームワーク。
.NET Framework 3.5
編集Windows 7に標準搭載されている。Visual Studio 2008以降で開発可能。Windows 8以降では既定で無効化されており、インターネット接続もしくはインストールメディアを利用して明示的な有効化すなわちインストールが必要となる[11]。バージョン3.0と同様、CLRのバージョンは2.0のままで、いくつかの追加が行われている。.NET Framework 3.5のリリースと同時に基本クラスライブラリ (BCL) はMicrosoft Reference Licenseのライセンス下で公開された。また、J#言語が開発言語として対応を終了した。サポート終了は、バンドルしているWindowsのサポート終了日か2028年10月10日のどちらか短い方となる。
主に含まれる変更点は
- ASP.NET AJAXの対応
- Language Integrated Query
- C#とVBコンパイラの変更
等がある。
.NET Framework 4
編集2010年4月13日にリリースされた。CLRのバージョンは4となる。Visual Studio 2010以降で開発可能。
- F# のフル サポート
- 動的言語ランタイム (DLR)
- Managed Extensibility Framework (MEF)
- Parallel Extensions(並列プログラミング)
- Velocity(分散キャッシュAPI)
- NUI(Windows タッチ)アプリケーションの開発
など。
.NET Framework 4.5
編集2012年8月15日にリリースされた。Windows 8に標準搭載されている。Visual Studio 2012以降で開発可能。CLRのバージョンは継続して4[11]。前バージョンである.NET 4を置き換える形となっている。そのため.NET 4とは共存できないが、.NET 4.5は.NET 4とほぼ完全な互換性があるとされている。Windows XPへの対応が打ち切られ、Vista以降が必須となった。
- Windows Modernスタイル アプリケーション(Windowsストアアプリ)の開発
- 非同期プログラミング
- 既存機能の大幅な改良
4.5.1が2013年10月12日にリリースされた。Windows 8.1に標準搭載されている。4.5.2が2014年5月5日にリリースされた。なお.4.5.1はVisual Studio 2013で対応したが、追加パッケージ (Developer PackまたはTargeting Pack) をインストールすることで、Visual Studio 2012にて4.5.1以降を開発に利用することも可能である[13]。
.NET Framework 4.6
編集2015年7月20日にリリースされた。Windows 10 ver.1507に標準搭載され、Vista以降が必要。Visual Studio 2015にて対応。継続して4.xは一つのバージョンしかインストールできない。
- ASP.NET 5対応
- RyuJIT - 新しい64ビット版のJITコンパイラ
- .NET Native
- オープンソース化
4.6.1が2015年11月30日にリリースされた[14]。4.6.1ではWindows Vista/Windows Server 2008のサポートが終了している。4.6.2は2016年8月2日にリリースされた[15]。
.NET Framework 4.7
編集Windows 10 ver.1703と同時に、2017年4月5日にリリースされた[16]。これまでの.NET/Visual Studioの新バージョン公開スケジュールとは異なり、.NET 4.7よりもVisual Studio 2017のリリースが先行する形となった。旧OSへのバックポートもアナウンスされ、2017年5月2日に利用可能となった[17]。なお、.NET Framework 4.7以降はWindows 10 ver.1507/1511についてはWindows 10 ver.1507/1511のサポートが終了しているため、サポート外になっている。
2017年10月17日、Windows 10 ver.1709と同時に4.7.1がリリースされた[18]。 2018年4月30日、Windows 10 ver.1803と同時に4.7.2がリリースされた[19]。
.NET Framework 4.8
編集2019年4月18日に正式リリースされた[20]。本バージョンをもって.NET Frameworkのメジャーアップデートは終了するが、バグ修正やセキュリティ修正のサポート、Windowsへの搭載は継続される[2]。
Windows 11のInsider Previewビルド22504には、ARM64のネイティブサポートを追加した.NET Framework 4.8.1が搭載されることがアナウンスされた[21][22]。
2022年8月9日、Windows 10 ver.20H2以降を対象に4.8.1がリリースされた[23]。
脚注
編集- ^ atikmapari. “ライフサイクルに関する FAQ - .NET Framework”. learn.microsoft.com. 17 May 2024閲覧。
- ^ a b Scott Hunter (2019年5月6日). “.NET Core is the Future of .NET”. .NET Blog. マイクロソフト. 2019年9月21日閲覧。 “.NET Framework 4.8 will be the last major version of .NET Framework. If you have existing .NET Framework applications that you are maintaining, there is no need to move these applications to .NET Core. We will continue to both service and support .NET Framework, which includes bug–, reliability– and security fixes.”
- ^ Announcing .NET 2015 Preview: A New Era for .NET | .NET Blog
- ^ Mono 4.0.0 Release Notes | Mono
- ^ Ecmaインターナショナル (2006年6月). “Standard ECMA-335 Common Language Infrastructure (CLI)” (英語). 2008年1月15日閲覧。
- ^ ISO/IEC (2006年9月27日). “ISO/IEC 23271:2003Information technology -- Common Language Infrastructure” (英語). ISO/IEC JTC 1/SC 22. 2008年1月15日閲覧。
- ^ マイクロソフト (2006年11月20日). “Microsoft(R) .NET Frameworkの基本仕様である共通言語基盤 (CLI) がJIS X 3016として公示”. 2008年1月15日閲覧。
- ^ KDDI(2009-01-21)「.net by au (ドットネット バイ エーユー)」の提供開始について 2009-02-27閲覧。
- ^ GitHub - dotnet/core at 1.0.0
- ^ Windows TIPS:.NET Frameworkのバージョンを整理する - @IT
- ^ a b c .NET Framework Versions and Dependencies
- ^ マイクロソフト (2006年6月12日). “WinFX から .NET Framework 3.0 への名前変更について”. MSDNライブラリ. 2009年1月15日閲覧。
- ^ .NET Framework サポート ライフサイクル ポリシーについて (2015年10月) – Visual Studio 日本チーム Blog
- ^ .NET Framework 4.6.1 is now available! - .NET Blog - Site Home - MSDN Blogs
- ^ Announcing .NET Framework 4.6.2 | .NET Blog
- ^ Announcing .NET Framework 4.7 | .NET Blog
- ^ Announcing the .NET Framework 4.7 General Availability | .NET Blog
- ^ Announcing the .NET Framework 4.7.1 | .NET Blog
- ^ Announcing the .NET Framework 4.7.2 | .NET Blog
- ^ Announcing the .NET Framework 4.8 | .NET Blog
- ^ Announcing Windows 11 Insider Preview Build 22504 | Windows Insider Blog
- ^ Windows 11のテキスト入力にテーマ機能、絵文字パネルも強化 ~まずはプレビュー版に投入 - 窓の杜
- ^ Announcing .NET Framework 4.8.1 | .NET Blog
関連項目
編集- アンダース・ヘルスバーグ - マイクロソフト社の.NET Framework設計者
- .NET
外部リンク
編集- .NET Foundation
- .NET Blog
- Microsoft/dotnet - GitHub
- Reference Source - Microsoft 社によるソースコード公開サイト
- .NET Framework ドキュメント | Microsoft Docs
- .NET Framework を学習する | Microsoft Docs
- .NET Framework のバージョンを整理する - @IT