我是一名C#开发人员,我正在努力了解WinAPI在Windows开发中的作用。我的看法是它是内核本身的唯一阐述,并且在.NET之前,它也是“Windows开发”本身(不包括非Microsoft技术),但我不确定这些语句都不是。另外,我不确定WinAPI和.NET框架的关系是什么。所以我有几个问题:
答案 0 :(得分:5)
Windows API(或多或少)是.NET的基础,是的。
不,它不是Windows的最低级别的开发。 Windows NT原本打算成为一种Microkernel,Win32只是其中运行的几个可能子系统之一。这些子系统使用Windows NT“本机API”与微内核通信。也可以编写其他代码来直接使用本机API。
下一步“下面”可能是设备驱动程序代码,但它有足够的不同,它是否真的很重要。您通常不会使用它来编写应用程序,但(显然已经足够)设备驱动程序。
WinRT基本上是一个新的API(或多或少)与现有的Windows API一起,并通过COM接口提供服务。
我不会尝试涵盖角色和/或开发人员数量。确定角色在很大程度上是主观的,我怀疑是否有人确实知道开展特定工作的开发人员的确切数量。
答案 1 :(得分:2)
WinAPI是原生Windows api之上的一个层,没有记录。曾经有过另外两个api层,Posix和OS / 2,但它们已经不再使用了。 .NET框架也是一个api层。在Windows上,它确实将winapi层用于核心OS服务。但这并不是唯一的,例如Mono可以运行在Linux和OSX之上。
对于本机用户模式Windows开发,WinAPI确实是您使用的核心API层。当然还有很多程序员使用它。但大多数程序员使用.NET,Java或Web托管语言,如Javascript或PHP。
WinRT是WinAPI的替换。它是基于COM的,而不是WinAPI的基于C的接口。在开发工具中很少见到它们,它们各自的运行时具有WinRT的“投影”,因此您不必直接编写COM代码。所以你仍然可以编写C#代码。只是有不同的基类。