疑問解決(.NET Framework)

2015/10/16

.NETを触ってみよう

・概要
 .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検索で  
Google
・TOPへ戻る

メールはこちらに