.NET Framework
テンプレート:Infobox Microsoft .NET Framework(マイクロソフト ドットネット フレームワーク)は、マイクロソフトが開発したアプリケーション開発、実行環境。
WindowsアプリケーションだけでなくXML WebサービスやウェブアプリケーションなどWebベースのアプリケーションなどを取り入れた環境。一般に.NETという場合、.NET全体の環境を指す。
また.NET Frameworkの基盤となっている仕様である共通言語基盤 (CLI) はEcmaインターナショナル、ISO、JISにて標準化されており[1][2][3]、マイクロソフト以外のベンダーが独自に実装することもできる。実際にXamarinによるMonoプロジェクトをはじめ、いくつかのオープンソースによる実装プロジェクトがある。それらを使うことで.NET FrameworkでコンパイルしたプログラムをLinuxやMac OS XなどのWindows以外のOSでも動かすこともできる。なお、CLIのマイクロソフトの実装を共通言語ランタイム (CLR) と呼ぶ。.NET FrameworkはCLRにその他ライブラリ群を加えたものと言える。
近年では共通言語ランタイム上でJava仮想マシンの実装を試みるIKVM.NETなどのオープンソースプロジェクトも活発化している。
目次
設計目標と重要な特徴
.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ではサンドボックスの概念を用いることなく、様々な権限レベルでコードを実行することができる。
アーキテクチャ
共通言語基盤
テンプレート:Main .NET Frameworkにおける最も重要な概念は共通言語基盤 (CLI) に含まれている。CLIの目的は言語に依存しない開発環境および実行環境を提供することである。マイクロソフトによるCLIの実装は共通言語ランタイム (CLR) と呼ばれる。CLRは次の主要な五項目からなる。
- 共通型システム (CTS: Common Type System)
- 共通言語仕様 (CLS: Common Language Specification)
- 共通中間言語 (CIL: Common Intermediate Language)
- ジャストインタイムコンパイラ (JIT: Just-in-time compiler)
- 仮想実行システム (VES: Virtual Execution System)
アセンブリ
テンプレート:Main CILのコードはアセンブリ(WindowsにおいてはPE形式)の中に格納される。アセンブリは配置・バージョン・セキュリティの単位である。
メタデータ
テンプレート:Main 全てのCILコードはそれ自身の情報をメタデータとして保持している。CLRは正しいメソッド呼び出しが行われていることをメタデータによってチェックしている。メタデータはコンパイラによって生成されるが、開発者が独自のメタデータをカスタム属性として付加することも可能である。
バージョン
各バージョンは上位互換性が原則としてある。しかし、1.1から2.0へは一部が上位互換性がない。2.0以降は上位互換があるとされている。
バージョン名 | バージョン番号 | リリース日 |
---|---|---|
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.2152テンプレート:-3.0.4506.2123テンプレート:-3.0.6920.1453 | 2008年8月12日 |
3.0 SP2 (NT6.0 SP2) | 3.0.4506.4037テンプレート:-3.0.6920.4000 | 2009年4月29日 |
3.0 SP2 (NT6.1) | 3.0.4203.4926テンプレート:-3.0.4506.4926テンプレート:-3.0.6920.4902 | 2009年7月13日 |
3.0 SP2 (NT6.1 SP1) | 3.0.4203.5420テンプレート:-3.0.4506.5420テンプレート:-3.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日 |
.NET Framework 1.0
.NET Frameworkの最初のバージョンである。Windows 98、NT 4.0、2000、XP向けに提供された。
.NET Framework 1.1
.NET Frameworkの最初のバージョン更新である。
- .NET Framework 1.0からの主な変更点
- ASP.NETのモバイル向け機能の追加
- セキュリティ仕様の変更
- ODBCとOracle Database用のデータ接続の標準サポート
- IPv6のサポート
- 多数のAPIの変更
.NET Framework 2.0
いくつかのAPIの追加とCLRに変更が加えられた。次のような特徴を持っている。Microsoft Visual Studio 2005以降で開発可能である。
- .NET Framework 1.1からの主な変更点
- データバインディングの新しいAPIの追加
- ASP.NETのウェブコントロールを幾つか追加
- ネイティブアプリケーションへの新しいホスティングAPI
- CLRのジェネリクスの対応
- 64ビット(x64とIA-64)システムへの対応
- .NET Micro Frameworkの追加
- 多数のAPIの変更
.NET Framework 3.0
もともと「WinFX」という名称で提供される予定だったが、2006年6月に現在の名称に変更された[4]。Windows VistaやWindows Server 2008には標準搭載されている。Windows Me以前およびWindows 2000以前では動作せず、Windows XP以降が必要である。
クラスライブラリや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
バージョン3.0と同様、CLRのバージョンは2.0のままで、いくつかの追加が行われている。.NET Framework 3.5のリリースと同時に基本クラスライブラリ (BCL) はMicrosoft Reference Licenceのライセンス下で公開された。また、J#言語が開発言語として対応を終了した。
主に含まれる変更点は
- ASP.NET AJAXの対応
- Language Integrated Query
- C#とVBコンパイラの変更
等がある。
マイクロソフト社のクラウドサービスであるWindows Azureはこのバージョン3.5上で稼動している。
.NET Framework 4
CLRのバージョンは4となる。Visual Studio 2010 で対応した。
- F# のフル サポート
- 動的言語ランタイム (DLR)
- Managed Extensibility Framework (MEF)
- Parallel Extensions(並列プログラミング)
- Velocity(分散キャッシュAPI)
- NUI (Windows タッチ)アプリケーションの開発
など。
.NET Framework 4.5
CLRのバージョンは4.5となる。これまでの更新とは異なり、前バージョンである.NET 4を置き換える形となっている。そのため.NET 4とは共存できないが、.NET 4.5は .NET 4とほぼ完全な互換性があるとされている。Windows XPへの対応が打ち切られ、Vista以降が必須となった。
- Windows Metro スタイル アプリケーションの開発
- 非同期プログラミング
- 既存機能の大幅な改良
開発環境
C#やVisual Basic (Visual Basic.NET)、JScript.NETのコンパイラ、各種ツール、ドキュメントなどSDKはマイクロソフトから無償で配布されている。
統合開発環境
- Microsoft Visual Studio
- Borland C# Builder for the Microsoft .NET Framework
- Borland Delphi
- Borland Delphi Prism
- SharpDevelop
- MonoDevelop
用語
- マネージコード
- CLRがメモリを完全に把握/管理できるコード。.NET Frameworkで作成するコードの大半はマネージコードである。マネージコード以外のコード(Win32アプリケーション、COMコンポーネントやアンセーフなコード)をアンマネージコードという。
- アプリケーションドメイン
- CLRから見たプロセス空間のようなもので、それぞれ独立したドメインの中でコードを動作させることができる。一つのアプリケーションはCLRを一つしかホストできないが、CLRには複数のアプリケーションドメインを持つことができる。
- メタデータ
- 依存関係をはじめクラスや型、インタフェースなどコードに関する情報。
- 属性
- メソッドやクラス、アセンブリに宣言できメタデータとして格納される情報。
System.Attribute
から派生させたクラスとして開発者が独自に作成でき、実行時に参照・利用できる(カスタム属性)。またCLRのみが認識できる擬似カスタム属性もある。 - アセンブリ
- アプリケーションを配置、利用するときの単位。アセンブリにはメタデータが含まれており、サテライトアセンブリを除き、モジュール、リソースも含まれている。アプリケーションドメインに読み込むことのできる最小の単位でもある。
Windows以外のプラットフォームでの実装
- Mono
- オープンソースプロジェクトによる.NET Framework互換環境の実装。
- DotGNU Project
- オープンソースプロジェクトによる.NET Framework(CLI+MS拡張)互換環境の実装。GPLに基づいて開発(一部ライブラリなどに例外等がある)。
- Shared Source CLI
- MicrosoftによるFreeBSDとMac OS XとWindowsのECMA CLI/C#の実装。
- .net by au
- BREWプラットフォームを用いたKDDIおよび沖縄セルラー電話が提供するau携帯電話専用の.NET Framework互換環境の実装。ただし、利用できるのは法人専用端末のE05SH、E06SHの2機種とWindows XP Professional SP3がインストールされたPCのみ[5]。
脚注
関連項目
- アンダース・ヘルスバーグ - マイクロソフト社の.NET Framework設計者
外部リンク
- .NET Framework を学習する
- Microsoft .NET Framework Developer Centerテンプレート:Ja icon
- Microsoft .NET Framework 3.0 Community (NetFx3)
- Shared Source CLI
- .NET Frameworkのバージョンを整理する - @IT
ダウンロード
- .NET Framework ダウンロード情報
- .NET Framework 4.5
- .NET Framework 4.0
- .NET Framework 3.5
- .NET Framework 3.0
- .NET Framework 2.0 日本語
- .NET Framework 1.1
- 再頒布 パッケージ
- 日本語 Language Pack
- Service Pack 1 - 2000/XP/98/Me, Server 2003
- ASP.NET セキュリティ アップデート - KB886903
- Software Development Kit
テンプレート:マイクロソフト テンプレート:Windows Components
テンプレート:.NET- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ KDDI(2009-01-21)「.net by au (ドットネット バイ エーユー)」の提供開始について 2009-02-27閲覧。