win32 api已经过时了吗?

c_p*_*jim 12 .net c c# windows winapi

win32 api仍在开发中,今天值得学习吗?你可以使用原生api的.net框架做你能做的一切吗?

Jim*_*hel 37

Windows API仍在开发中.例如,请参阅Windows 8.1适用于开发人员的新API和功能以及Windows 8和8.1 API索引.过时了吗?不见得.总是需要了解Windows如何在较低级别工作的人.有人必须编写设备驱动程序和低级系统实用程序.

知识很少无用.如果您正在编写低级实用程序,那么学习Windows API如何工作是非常必要的,即使在用C++或Delphi编写本机应用程序时也非常方便.在编写.NET应用程序时不那么容易,但是大多数.NET运行时库在很大程度上依赖于Windows API.因此,了解它如何在"引擎盖下"工作是非常有用的.

此外,还有一些.NET库没有公开的东西.例如,我正在处理的C#程序需要访问另一个开发人员在C++应用程序中使用的Waitable Timer..NET库不提供该特定内核对象的包装器,因此我必须自己编写,这涉及深入研究Windows API.

在大多数.NET开发中,您可能不必了解有关Windows API的任何信息.但它肯定没有伤害.我知道,通过理解Windows API编程,我理解为什么.NET的某些部分以他们的方式工作.此外,在努力开发Windows API之后,我更能够体会到.NET给我带来的巨大生产力提升.

  • 感谢更新,那个更有意义.在相关的说明中,您没有在答案中提到WinRT.使用WinRT [基于Win32 API](http://en.wikipedia.org/wiki/Windows_Runtime#Technology),您可以用WinRT替换每次出现的.NET,并得出相同的有效结论. (3认同)

Jac*_*man 16

这个问题的另一个答案是从专业软件管理的角度来看.具体来说,微软淘汰Win32 api的成本太高了.也就是说,如果他们在Windows 9中不支持它,那么当前运行需要API的程序的每个客户都将重新评估他们使用任何Microsoft产品的需求.

一些客户,即不止一些客户,会说微软的产品价格过高,并且会借此机会1)保留在Windows 8上,直到时间结束,并且永远不会从微软购买另一种产品; 或者2)将他们的业务系统转换为使用*nix或Apple系统.

注意,以上不是我的推测.这种情况发生在IBM在1960年代,当时他们迫使他们的客户群迁移到360系列硬件.当时的360与之前的IBM大型机完全不同,客户必须大幅度重新使用现有软件才能在新机器上运行.许多IBM客户选择与Sperry-Rand和其他硬件供应商合作,其中新机器和转换的成本低于IBM 360和转换的成本.

由于企业有选择权自由,IBM几乎破产了!他们(IBM)吸取了教训.到目前为止,仍然可以在当今的IBM大型机上运行1960年代编写的程序.

  • +1有趣的历史课. (3认同)