記事を始める前に.Net Frameworkというキーワードに触れていきましょう。ASP.NETは、厳密にいうと.Net Frameworkという「Windows標準のアプリケーション実行/開発環境」上で動作するアプリケーションフレームワークフレームワーク)であるからです。

.NET Frameworkとマネージコード

「Window標準のアプリケーション実行/開発環境」といってもよくわからないと思います。そのような方のために、わかろやすいように「マネージコードとアンマネージコード」をイメージしてみました。

マネージコードとアンマネージコードの構造図

襲来のアプリケーションはWindowsやMacなどのプラットフォーム上で直接動作していました。しかし、技術の発展により.NET Framework上で動作できる .NET Framework対応のアプリケーション(以降、.NETアプリケーション)が開発されることになります。

すべての .NETアプリケーション.NET Frameworkによって管理できます。「その動作は許可されたものであるのか」「そのメモリ領域は必要なのか」などのことのすべてを.NET Frameworkで関しできます。そして許可されてない危険な作業はエラーを返します。

このように.NET Frameworkにより管理されるコードをマネージコード(Managed Code)、既存のプラットフォームで管理されて.NET Framewokrが管理しないコードをアンマネージコード(Unmanaged Code)と言います。

.NET Frameworkが管理するか、しないかによって名前が代わります。覚えておきましょう。

.NET Frameworkの構造

.NET Frameworkは大きく、下の二つで構成されてます。

  • 共通言語ランタイム(CLR : Common Language Runtime)
  • .NET Frameworkクラスライブラリ

共通言語ランタイム

共通言語ランタイム(以降、CLR)とは、.NETアプリケーションが共通で利用する実行エンジンです。.NET FrameworkではVisual Basic, C#, C++, F#という言語を利用できます。しかし、これらの言語で作成したすべてのアプリケーションを共通言語ランタイム(CLR)上で動作させるとは言えません。

.NET Frameworkの以前は、それぞれの言語ごとに個別の実行エンジンがありました(Visual BasicならVisual Basicだけの実行エンジンを使ったり)。このため、.NER Framework以前では、使用する言語によっては特定機能が動かなかったり、同じ機能であるにも関わらずパフォーマンスが異なることもありました。

しかし、CLRではVisual Basic、C#、F#、C++いずれの言語もコンパイルするときMicroSoft Intermediate Language(以降、MSIL)という共通の中間言語に変換されるので、開発者がいずれかの言語で開発しても、ほとんど同様のパフォーマンスを得られます

共通言語ランタイム兄貴はすべての言語を制覇できました。

.NET Frameworkクラスライブラリ

.NET Frameworkクラスライブラリは、.NET対応の言語から共通して呼び出せる高機能な部品です。.NET Framework以前、開発者はWin32 APIやMFC、ATL、VB Formsのようなライブラリを目的に応じて自ら選ぶ必要がありました。しかし、.NET Frameworkクラスライブラリを利用するとVisual Basic, C#, C++ いずれを選択しても同様な機能を同様の手順で利用できます。

.NET Frameworkクラスライブラリは、大きく「基本ライブラリ」「ADO.NET」「アプリケーションフレームワーク(以降、フレームワーク)」に分類できます。

基本ライブラリは、文字列や構造化データの操作、セキュリティ/スレッドの制御、ファイルシステムへのアクセスなど、アプリケーションの最も基本的な機能部分を言います。

ADO.NETは、データベースやXML(eXtebsible Markup Language)などへのアクセス手段を提供するライブラリです。

そして、これらのライブラリの上に位置するのがフレームワークです。フレームワークは、さらにWindowsアプリケーションを構築するためのWindowsフォーム/WPF(Windows Presentation Framework)、そして、ASP.NETなどに分類できます。

フレームワークは以下のような機能を含んでます。

  • ユーザーインターフェイスを構築するためのレイアウト作品(コントロール)
  • 特定のアプリケーションに特化したライブラリ
  • アプリケーション開発から運用をサポートする管理アプリケーションやユーティリティ
  • アプリケーション共通のもろもろのルール

フレームワークを利用することで、開発者はアプリケーションに必要な機能を一から作る必要がなくなりました。あらかじめ用意された部品を組み込んでいくだけで良いのです。

プラグインのおかげでスマホを操作するように簡単にASP.NETを使えるなりましたね^^::

ASP.NETのイントロ