Win32 APIと.NET Frameworkの違いを教えてください あとGUIアプリを作るのはどちらがお勧めでしょうか? それぞれのメリットを教えていただけると幸いです

Win32 APIと.NET Frameworkの違いを教えてください あとGUIアプリを作るのはどちらがお勧めでしょうか? それぞれのメリットを教えていただけると幸いです

プログラミング10,234閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

1

簡単に言うと、Win32 API は Windows の機能を他のプログラムから呼び出すことができるようにしたものです。古いものは関数の形で実装されていますが、比較的新しいものは COM という仕組みになっています。 COM : Compnent Object Model http://ja.wikipedia.org/wiki/Component_Object_Model .NET Framework は、プログラムを作りやすいように(プログラムから使いやすいように)、Win32 API と同等の機能をクラスライブラリとしてまとめたもの。クラスライブラリの中から Win32 API を呼び出している場合があります。 GUI プログラムを作るのは .NET Framework を使う方がお手軽です。 .NET Framework を使用しないプログラム ( Win32 API を使用したプログラム ) では、メモリの取得・開放をプログラミングで行わなければならないのですが、.NET Framework を使用したプログラムではメモリの開放は自動的におこなってくれるのでメモリ管理も楽になります。 しかし、.NET Framework だけでは実装できないこともあります。そうした場合、該当部分だけ Win32 API を使用すると実現可能となることがあります。該当部分だけ Win32 API を使用する場合、Win32 API が使用するメモリについては自動的に開放されることはないので、そのメモリ領域については取得・開放をプログラミングで行わなければなりません。

1人がナイス!しています

ThanksImg質問者からのお礼コメント

わかりやすい回答ありがとうございます。 頑張ってみます

お礼日時:2011/10/17 22:45

その他の回答(1件)

2

比較対照は、質問の2点の他に、さらにCOM/DCOM があります。 時代的に昔から最近のものへと並べると、 Win32 DLL COM/DCOM .NET の順番になります。 なお、Win32 DLL と COM/DCOM は、昔からある技術とは言え、今も現役の重要な技術です。 しかし、お勧めを聞かれれば、使いやすさが改善され、かつ、高機能化された.NET が良いです。 <Win32 DLL> Win32 DLLは、32ビット版Windowsからの(すなわち、Windows95以降の)Windows自体を構成する技術です。 すなわち、32ビット版のWindowsの登場の当時に、その時のマイクロソフトのテクノロジーを、Win32 DLL と言うプログラムに詰め込んだと言うことです。 プログラマーは、Win32 DLL によるAPI (外部公開された機能)をインポートする(呼び出して利用する)ことにより、Windows上で動作するアプリケーションを作れます。 なお、Win32 DLLは、オブジェクト指向を考慮していますが、そのAPI は、C言語形式です。 なお、オブジェクト指向とは、簡単に説明しますと、プログラムをグループ化(部品化)して行く技法です。 C言語は、まだオブジェクト指向が普及する前からある言語ですので、C言語の言語仕様は、オブジェクト指向の技術は取り入れられていません。 すなわち、Windows自体は、オブジェクト指向を考慮して作られたOS ですが、そのAPI は、C言語形式なので、オブジェクト指向を知らないプログラマーでも、Windows用アプリケーションが作れます。 <COM/DCOM> もっとオブジェクト指向を本格的にしたのが、COM/DCOM と言う技術です。 Windowsの機能は、C++ と言うオブジェクト指向対応言語で作られるように成って行きました。 ただし、このCOM/DCOM でも、上記のWin32 DLL と同じように、API のエクスポート(外部公開)の形式 は、C言語の書式に近いです。 COM/DCOM が登場した当時でも、まだC++ のプログラマーは少なかったので、C言語のプログラマーが利用しやすいように考慮されていました。 ただし、プログラム部品を利用する側ではなく、プログラム部品を作る側では、C++を活用した(オブジェクト指向を活用した)プログラミングが可能になりました。 (ActiveX や ATL 等の形式のプログラムを作り、オブジェクト指向を活用するようになった) <.NET> インターネットの普及にともない、マイクロソフトは、COM/DCOM 仕様で作るプログラムを、インターネット上で動作させるように試みました。 しかし、COM/DCOM 仕様は、インターネット仕様と相性が悪く、無理でした。 そこで、完全にインターネット仕様に対応させた技術が、.NET です。 その.NET テクノロジーにより作られた、実際のプログラムが .NET Framework です。 インターネット仕様への対応だけではなく、オブジェクト指向も完全対応しています。 すなわち、 .NET Framework 自体は、もちろんオブジェクト指向で、かつ、API のエクスポートの形式も、オブジェクト指向形式になりました。 その結果、使いやすく、かつ、高機能化されました。 [C言語プログラマーの場合] オブジェクト指向は、プログラミングをしやすくする技法です。 プログラムを部品化するのですから、過去に作った部品を、新しいソフトの開発の際に、再利用することが可能です。 また、ある部品と、別の部品を組み合わせて、機能拡張することも可能です。 よって、オブジェクト指向は、プログラミングをしやすくするための技法です。 ただし、C言語に慣れ親しんでいるプログラマーの中には、「オブジェクト指向は、どうも苦手」と言う人もいます。 そのような場合は、Win32 DLL のAPI を活用して下さい。 そうではなく、オブジェクト指向に抵抗がない人は、.NET は、使いやすく、かつ、高機能なので、 .NET を利用して下さい。 [参考: 関連質問] http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1173530306

2人がナイス!しています