Win32平臺與.net平臺的關係
Win32平臺
win32指的是32位指令集,Win32不是32位的Windows作業系統,WinRT也不是Windows RT作業系統。
32位“指令”:僅限於RISC定長指令, 前者說的是每個指令的寬度.
32位“指令集”:一般說的是指令集支援的“典型”資料寬度(地址寬度是另一回事)。一個使用32位指令的指令集,可能是32位的指令集,也可能不是(比如ARMv8 AArch 64模式下的指令長度也是32位)。
Win32就是指適用於32指令集的Windows作業系統.包含:Win9x,NT,Win2K,WinXP,2003,Vista,2008,Win7以及後來的Win8,Win8.1等32位版本的作業系統.回到問題, 32位就是指只能適用32指令集的作業系統,不包含同代產品的64位作業系統.以Win7為例,Win7的32位系統只能執行32位的應用程式.不能執行64位的應用程式.所以屬於Win32的系列.反之亦然.不過,有一個要注意的是, 64位版本的Windows系統是可以相容32的應用程式的.反之則不行.
Win32和WinRT是指Windows作業系統的底層API(應用程式設計介面),在Windows系統上執行的應用程式(各種軟體)通過這些系統級介面與硬體(例如顯示器、鍵鼠等)互動。Win32在Windows 7及以前的系統(包括Windows XP)中被廣泛運用。WinRT是微軟公司在Windows 8中引入的一組新的應用程式設計介面,允許開發者使用更加現代化的語言特性高效開發具有現代風格的應用程式。在Windows 8及以後的作業系統(包括Windows 10)中都包含有Win32和WinRT兩套API。
.NET是.NET Framework的簡稱。.NET Framework是一種採用系統虛擬機器執行的程式設計平臺,以通用語言執行庫(Common Language Runtime)為基礎,支援多種語言(C#、F#、VB.NET、C++、Python等)的開發。
.NET和Win32的關係並非並列,不嚴格的說可以認為.NET是執行在Win32之上。那都有了Win32為什麼還要有.NET?前面說了這是一個程式設計平臺。原始的Win32介面呼叫非常麻煩,支援的程式語言也有限,而.NET可以看成對Win32的封裝,犧牲少量的執行效率換取更好的程式容錯性、更好的開發效率。並且現在還有了.NET Core,可以讓程式碼不依賴.NET Framework,這樣程式在執行的時候就不需要目標機器必須安裝有.NET Framework了。
非託管程式碼主要是基於win 32平臺開發的DLL,activeX的元件,託管程式碼是基於.net平臺開發的。