I’m a C# developer, and I’m trying to grasp what’s the role of WinAPI on Windows development. My perception is that it is the sole exposition of the kernel itself, and that, before .NET, it was also the “Windows development” itself (not counting non-Microsoft technologies), but I’m not sure of none of these statements. Also, I am unsure of what is the relation of WinAPI and the .NET framework. So I got a few questions:
- Is the entire .NET runtime built on top of WinAPI? If so, is WinAPI really the lowest-level interface for developing on Windows?
- What is the role of each on Windows development (in any area, like web, business, software products, etc) nowadays?
- Are there more WinAPI (C/C++) developers than .NET developers nowadays?
- Where do WinRT enters?
The Windows API is (more or less) the substrate that underlies .NET, yes.
No, it is not the lowest level of development for Windows. Windows NT was originally intended to be a sort-of Microkernel, with Win32 as only one of several possible subsystems running on it. These subsystems use the Windows NT “native API” to talk to the microkernel. It’s possible to write other code to use the native API directly as well.
The next step “below” that would probably be device driver code, but it’s enough different that it’s open to question whether it really counts. You don’t normally use it to write applications at all, but (obviously enough) device drivers.
WinRT is basically a new API that sits (more or less) alongside the existing Windows API, and provides services via a COM interface.
I won’t try to cover roles and/or number of developers. Determining roles is largely subjective, and I doubt anybody really knows the exact number of developers doing specific kinds of work.