マイクロソフトのVisual Studio C++と共によく使われる用語である、ATL、MFC、ActiveX、.NETについてまとめてみた。
AFLとは
ATLは、Active Template Library の略です。
COM コンポーネントを作成するのに使います。COM コンポーネントを利用すると、.NET Framework のアプリから Win32 の機能を容易に利用できます。
Active Template Library (ATL) は、COMプログラミングを簡単に行えるようにするためのマイクロソフトによるテンプレートベースのC++専用ライブラリとも言えます。
ATLは、様々なCOMオブジェクト、OLEオートメーションサーバ、ActiveXコントロールを開発できるように作られている。
ATL 1.0は1996年に公開され、Microsoft Visual C++にはバージョン6.0からATLが標準で付属するようになりました(VC 6.0付属のバージョンはATL 3.0)。
Visual C++ 2013以降はDLL版のATLは廃止され、スタティックリンク版のみの提供となっています。
Microsoft Visual Studio 2012までは、ATLおよびMFCは有償版のエディション(StandardもしくはProfessional以上)のみに付属するライブラリだったが、2014年にリリースされたVisual Studio Community 2013は無償版でありながら、機能的にはProfessionalエディション相当となり、ATL/MFCも付属しています。
MFCとは
MFC は Microsoft Foundation Class の略です。
マイクロソフトがVisual C++用に開発した、Windows用のアプリケーション構築のためのアプリケーションフレームワーク(クラスライブラリ)です。
Win32 API を直接使用せずにデスクトップアプリなどを開発するのに使用します。
Win32等のWindowsAPIを吸収した、いわばラッパーと言われるものです。
これを使えば、APIのバージョンの違いとかあまり気にせずにプログラミング出来ます。
ATLとMFCの違い
両者は使用方法としては大きな違いがありません。
ATLはある意味でCOMコントロールの開発環境として、MFCに対する軽量の代替物とも言えます。
CLR
CLRは Common Language Runtime の略です。
CLRは、 .NET Framework と Win32 の両方を使うアプリ向けにクラスライブラリを作ったり、C++ で .NET Framework のクラスライブラリを利用するコンソールアプリを作ったりするのに使用します。
COM とは
COMは、Component Object Modelの略です。
COMとは、マイクロソフトが提唱するソフトウェアの再利用を目的とした技術のことです。
アプリケーションソフトウェア間での通信や、オペレーティングシステムとアプリケーションソフトウェアとのAPIに用いられます。
ActiveXとCOMの違い
ActiveXとはCOMを使ったプログラムのことです。
ActiveXとCOMの唯一の違いは、自らレジストリにCOMの情報を登録する機能をもっているか否かです。
ActiveXは、自らレジストリにCOMの情報を登録する機能をもっています。
.NET FrameworkとCOMの違い
.NET Framework は Microsoft が設計した共通中間言語 (Common Intermediate Language/CIL) と呼ばれる中間言語を実行する仮想マシン環境(ランタイム)のことで、ネイティブシステムを抽象化するシステムとして動作します。
Microsoft は .NET Framework を Windows などの自社システム向けにしか提供していませんが、オープンソースで .NET Framework 互換環境を開発する動きもあり、中でも Mono と呼ばれるプロジェクトが大きな成果を出しています。
.NET Framework と COM モデルは、コンポーネントを再利用できること、言語に依存しないことなど、主要なテーマの多くを共有しています。
そのため、.NET Framework は、COM から自然に進化したモデルとなっています。
Windows プラットフォームは完全に .NET に移行 しようとしています。
コメント