・概要 |
.NET Frameworkはマイクロソフトが開発したアプリケーション開発および実行環境です。
それまで、WindowsではWin32上で動作させていましたが、
.NET Frameworkでラッピングするようになりました。
Windows以外のOSでも .NET Framework実装がされており、
.NET用に開発したアプリケーションはWindows以外でも動作する可能性があります。 |
・仕組み |
開発言語は様々ありますが、
どの言語で開発しても中間共通言語(CIL)にコンパイルされます。
.NET Frameworkは、その中間共通言語を
共通言語基盤(CLI)の実装である共通言語ランタイム(CLR)で
ネイティブコードに変換しつつ実行します。 |
・特徴 |
.NETの特徴のひとつとしてメモリ管理があります。
Javaの様にガベージコレクト機能があり、
基本的にメモリの開放は.NET側が行ってくれます。
新しいプロセスを初期化すると、連続したアドレス空間をプロセス用に予約します。
このアドレス空間をマネージヒープと呼び、
すべての参照型はマネージヒープに割り当てられます。
ガベージコレクタはマネージヒープをジェネレーション(0,1,2の3種類)で管理し、
ライフタイムが長いオブジェクトほど利用されていると判断します。
|
種
類
|
解
説 |
ジェネレーション0
gen0
|
新しく作成されたオブジェクト
|
ジェネレーション1
gen1
|
比較的ライフタイムの長いオブジェクト
|
ジェネレーション2
gen2
|
ライフタイムの長いオブジェクト
|
|
また.NETで扱うメモリは下記3種類になります。
|
種
類
|
解
説 |
スタック
|
ローカル変数、メソッドのパラメータ、戻り値等が保管されま す。
メソッド用に確保されたスタック領域は、
メソッドから戻るときに自動的に開放されます。
(ガベージコレクタの役割ではありません)
ただし参照型の場合は、参照のみスタック領域で、
オブジェクト自体はマネージドヒープに確保されます。
|
アンマネージド
ヒープ |
アンマネージドコード時等に利用されます。
(幅広く使われます)
|
マネージド
ヒープ |
ガベージコレクタの処理対象領域です。
|
|
|
・バージョン |
|
バー
ジョン |
特
徴 |
1.0 |
・最初のリリースバージョン
・Windows98,NT4.0,2000,XP向け |
1.1
|
|
2.0 |
・64ビット対応
・.NET Micro Frameworkの追加
|
2.1 |
・マイクロソフト製は存在しない |
3.0 |
・WindowsXP以降向け
・Windows Presentaion Foundation(WPF)対応
・Windows Communication Foundation(WCF)対応
・Windows WorkFlow Foundation(WF)対応
・Windows CardSpace(WCS)対応 |
3.5 |
|
4.0 |
・F#対応
・動的言語ランタイム(DLR)対応 |
|
|
・言語 |
|
言
語 |
備
考 |
VB |
VisualBasicです。 |
C#
|
|
J# |
|
C++マネージ拡張 |
C++で.Netアプリケーションを作成できるようにマネージ拡張したも
のです。
VisualStudio2002から利用可能。 |
C++/CLI |
C++をCLI上で動作するように拡張したものです。
VisualStudio2005から利用可能。 |
F# |
|
|
|
・テクニック |
|
内
容 |
テ
クニック |
テキストボックスの複数行対応 |
テキストボックスを複数行に対応するためには、
Multilineプロパティをtrueにします。
各行にアクセスしたい場合は、
C++/CLI では、Textbox->Lines です。 |
|
|
|
|
・フォーム |
フォームを作成すると下記ファイルが作成されます。
|
ファ
イル
|
解
説 |
cs(C#)
vb(VB) |
フォームのソースファイルになります。
|
Designer.cs(C#)
Designer.vb(VB) |
フォームのデザインやコントロールの
基本的なプロパティを保存しているファイルになります。 |
resx |
リソースが保存されているファイルになります。
またDesignOnly属性を付けたプロパティはこちらに保存されます。 |
|
また、フォームを継承するとデフォルトでは継承先のコントロールを変更することができません。
これは、Modifiersプロパティで設定できます。
|
VB
|
C# |
解
説 |
Public |
Public
|
アクセス制限なし
|
Protected
|
Protected
|
フォーム内と派生(継承先)フォームからアクセス可能 |
Protected Friend |
Protected Internal
|
Protected+同一アセンブリ内
|
Friend |
Internal |
同一アセンブリ内
※VBのデフォルト |
Private |
Private |
フォーム内のみ
※C#のデフォルト |
|
|
・アプリケーション設定ファイル |
アプリケーションの固有の設定を記述したり、設定を保存したりします。
フォームアプリケーションの場合はapp.comfig、
Webアプリケーションの場合はweb.comfig に保存されます。
|
・DbProviderFactory |
.NET2.0からデータベースを共通で扱えるDbProviderFactory機能が実装されています。
ただしこの機能で使えるデータベースはアプリケーション設定ファイルに記載が必要になります。 |
・モジュールとアセンブリ |
.NETで作られたモジュールは、メタデータとCILで構成されます。
一つのモジュールしか紐付かないアセンブリは、シングルモジュールアセンブリと呼びます。
シングルモジュールアセンブリの場合、モジュールにアセンブリの情報を含みます。
その領域はマニフェストと呼び、モジュール内部はマニフェスト・メタデータ・CILで構成されます。
複数のモジュールが紐付くアセンブリは、マルチモジュールアセンブリと呼びます。
なぜマルチモジュールアセンブリの概念ができたかというと、
いわゆる”DLL地獄”(DLL Hell)を避けるためです。
|
・VisualStudioとの関係 |
.NETとVisualStudioとの関係は下記の通りです。
|
|
2005SP |
2008 |
2008SP1 |
2010
2010SP1
|
2012 |
2013 |
2015 |
サポート
.NET
バージョン |
2.0
|
2.0
3.0
3.5 |
2.0
3.0
3.5SP1 |
2.0
3.0
3.5SP1
4 |
2.0
3.0
3.5SP1
4
4.5 |
2.0
3.0
3.5SP1
4
4.5
4.5.1
|
|
SQL Server |
2005
|
2005 |
2008 |
2008 |
2008 |
2008 |
|
|
|
・UAC(ユーザアカウント制御)問題 |
.NET固有の問題ではありませんが、
Windows VISTA以降、UACの概念が導入されたため、
Windowsソフトを作成する際は下記に注意する必用が有ります。
|
項目 |
内容 |
フォルダにアクセスできない。 |
特定のフォルダ(c:\等)にアクセスすると例外を発生させる場合や、
実際には違うフォルダに保存している場合があります。
対策としては、Documents and Settings フォルダに設定ファイル等を保存する。
|
レジストリにアクセスできない。 |
特定のキーにアクセスすると例外を発生させる場合や、
実際には違うキーに保存している場合があります。
|
|
|
・単語集 |
|
名
称 |
解
説 |
P/Invoke |
|
マネージドコード
アンマネージドコード |
CLRによって管理されるコードをマネージドコード
管理されないコードをアンマネージドコードと呼ぶ。 |
CIL
(Common Intermediate Language) |
共通中間言語 |
PE
(Portable Execute) |
Windows上で実行可能と識別されるバイナリデータを指す。 |
モジュール |
PE形式のファイルを指す。
.NETコンパイラは、ソースコードを解析し、CILに置き換えてモジュールを作成します。
.NETのモジュールは、メタデータとCILから成り立ちます。 |
アセンブリ |
CLRはアセンブリをロード、実行する。
アセンブリには実態はなく、1個以上のモジュールから成り立ち、
その情報をアセンブリが保持している。 |
メタデータ |
CLRへの情報群 |
DLL地獄(DLL Hell) |
Win32では、ExeやDLL等複数のモジュールが緩い結合(ファイル名)で結びついていて、
あるDLLが変更になっても、他のモジュールは検知できず、
動作がおかしくなる場合がある。 |
グローバル・アセンブリ・キャッシュ
(GAC) |
グローバルに参照できるアセンブリ配置場所 |
アセンブリのコードベース |
アセンブリの検索位置
”アプリケーションファイル名.config”に記載される。 |
|
|
さらに情報が欲しい方は、Google検索で
|
・TOPへ戻る |