.NET API 与 .NET SDK

.NET API vs .NET SDK

免责声明:我是 Windows SDK 和 API 的新手,并且总体上是 API 和 SDK 的新手。

我曾经编写过一个 Web 应用程序,通过它的 PHP SDK 使用 Evernote 的 API,但没有真正理解 SDK 与 APIs。最近,一位同事告诉我,有一个 Windows SDK 没有太多提及 .NET,而 .NET 有 "its own SDK and API." 这有意义吗?谁能用印象笔记的场景来类比一下?

SDK 就像旅行社为您准备好前往未知领域而准备的东西:工具、文档、用例示例、头文件。 API 就像当地人承诺始终遵守的那个国家的标准做事方式。

Evernote 创建了一种与他们的服务交互的标准方式:一种合同。 SDK 通常会提供可用接口的文档,包括该软件开发工具包 (SDK) 中的应用程序编程接口 (APIs)。例如,Windows SDK has lots of tools, header files and other goodies that only developers would need and want. It doesn't appear to include WinAPI documentation as that is available on MSDN.

WinAPI 由通过 Windows 分发的 DLL 公开的函数组成。您可以在 Visual C++ 中直接使用它们。在 .Net 中使用它们需要平台调用。这些是应用程序可能想要做的常见事情:创建一个新的 window、打开并写入磁盘上的文件,或者为用户打开一个浏览对话框以 select 一个数据文件。我相信您熟悉 Windows 打开文件对话框;想象它不存在,每个应用程序都必须自己制作。一方面,许多用户会感到困惑。每个应用程序的做法都会有所不同。

.Net 确实拥有任何 CLR(公共语言运行时)语言原生的完整功能框架:C#、Vb.net、托管 C++ 和许多其他语言。通常,.net 调用实际上只是在后台调用 WinAPI;那毕竟是在"way"下办事Windows。

最后一点:有一个可下载的 Windows SDK,但实际上没有 single-download“.Net SDK”这样的东西。 Microsoft 将所有 .Net 资源下载统称为“.Net SDK”的一部分,但通常 "SDK" 是您解压的单个文件。