15

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

4

4 回答 4

41

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

知识很少是无用的。如果您正在编写低级实用程序,那么学习 Windows API 的工作原理是绝对必要的,即使在使用 C++ 或 Delphi 编写本机应用程序时也非常方便。当您编写 .NET 应用程序时,情况就不那么好了,但很多 .NET 运行时库在很大程度上依赖于 Windows API。因此,了解它是如何“在幕后”工作的非常有用。

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

在大多数 .NET 开发中,您可能不需要了解有关 Windows API 的任何内容。但它肯定不疼。我知道,我对 Windows API 编程的理解增强了我对 .NET 的某些部分为何以它们的方式工作的理解。此外,在与 Windows API 开发作斗争之后,我更能体会到 .NET 给我带来的巨大生产力提升。

于 2013-08-12T18:26:15.543 回答
19

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

一些客户(即不少人)会说 Microsoft 产品太贵,并会借此机会 1) 一直使用 Windows 8 及之前的版本,并且永远不要从 Microsoft 购买其他产品;或 2) 将他们的业务系统转换为使用 *nix 或 Apple 系统。

请注意,以上不是我的猜测。这正是 1960 年代 IBM 强迫客户群迁移到 360 系列硬件时发生的事情。当时 360 与以前的 IBM 大型机完全不同,客户必须对现有软件进行重大改造才能在新机器上运行。许多 IBM 客户选择与 Sperry-Rand 和其他硬件供应商合作,因为新机器和转换的成本低于 IBM 360 和转换的成本。

IBM 几乎因为企业的自由选择权而倒闭!他们(IBM)吸取了教训。直到今天,仍然可以在当今的 IBM 大型机上运行 1960 年代编写的程序。

于 2013-08-12T20:50:49.760 回答
3

WIN API 仍在开发中。

取决于您打算做什么,可能有用,也可能没有..

是的,有些事情是 .Net 无法完成的,在这种情况下,您可以使用 PInvoke。但是 INMH 你不需要知道 WINAPI,只需要知道在需要时在哪里搜索..

http://www.pinvoke.net/default.aspx

于 2013-08-12T18:26:35.227 回答
0

您仍然可以在 .NET 中使用 win32 api:

http://msdn.microsoft.com/en-us/magazine/cc164123.aspx

于 2013-08-12T18:24:14.517 回答