关于API与SDK的一些小知识

写在前面:最近查了一部分这方面的资料,基本都是转载整合的,来源有百度百科、知乎、CSDN博客等,不能具体列出作者,请见谅。由于水平有限,部分内容可能有偏差,希望不要误人子弟。

  • SDK——Software Development Kit
  • 软件开发工具包,一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
  • 它可以简单的为某个程序设计语言提供应用程序接口 API 的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK 还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。

         APIApplicationProgramming Interface)——应用程序编程接口是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

  • Windows API

API函数包含在Windows系统目录下的动态连接库文件。WindowsAPI是一套用来控制Windows的各个部件的外观和行为的预先定义的Windows函数。

更易理解来说:Windows系统除了协调应用程序的执行、内存的分配、系统资源的管理外,同时他也是一个很大的服务中心。调用这个服务中心的各种服务(每一种服务就是一个函数)可以帮助应用程序达到开启视窗、描绘图形和使用周边设备等目的,由于这些函数服务的对象是应用程序,所以称之为ApplicationProgramming Interface,简称API 函数。

凡是在Windows工作环境底下执行的应用程序,都可以调用Windows API。

  • API与GUI

API接口属于一种操作系统或程序接口,GUI接口属于一种图形操作系统。两者都属于直接用户接口。有时公司会将 API作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式API。

  • 往往API具备以下几个特征:

1)在系统中是最外层的接口,是供用户直接调用的;

2)稳定:如果系统的接口经常变得话,用户肯定疯了;

3)定义清楚:方法名应该一目了然,参数数据结构良好,文档丰富清晰;

4)多形式:指的是API可以用java进行export,以库的形式提供,也可以通过REST的方式进行访问等等。

  • API不一定是代码…

例如…

我写个程序,然后告诉调用者,你要引用某个文件然后调用某个函数就是实现某功能,这是API…

我写个程序,然后告诉调用者,你只要按我给你的格式读写某个文本文件就能实现某功能,这也是API…

比如使用JQuery就是调用其API




作者:aaaron7

链接:https://www.zhihu.com/question/20225153/answer/82373708
来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

我认为,API,是你,严格得来说是你得代码,和一个第三方的实体进行沟通的方式得 集合。

比如你和Windows系统沟通,需要调用Windows提供得API(CreateWindowEx, bitblt,等等)。(以C语言函数得形式)
你和.Net框架进行沟通,需要调用.Net提供得Api。(以C#,VB函数/类得形式)
你和新浪微博进行沟通,需要调用新浪微博提供得Api。(以Http请求得形式)

所以Api,比较准确得定义应该是,一个软件系统对其他软件系统提供得服务。


那什么是open api, 其实open api也是api,并且没有一个准确得定义区分什么是api,什么是open api,什么是不open的api。
open api,根据我得经验,一般是指有这样得一个系统,一开始是封闭得。比如最开始得Twitter,或者google,或者facebook。突然有一天,他们开放了!他们公布了一组api,来获得他们内部得一些数据,执行一些操作。

这个时候,这样得api, 我们就称之为open api。


那什么是SDK呢?
最开始的定义就是, api的集合,我们就称之为SDK。
还是拿之前得windows的例子来说,windows提供得所有Api得集合,就称之为 Windows SDK。

然后,随着时间得演化,聪明而又懒惰得程序员们,又给SDK赋予了新的意义。

通过Windows得Api,来开发windows程序是复杂且繁琐得。十分不友好,所以就有了像.Net这样得框架。他封装了底层得Windows Api,然后改造成一组新得,更加易于使用得Api给开发者们使用。

像.Net这种,以一组Api作为输入,以另外一组Api作为输出得中间件,就是现在人们所说得SDK。如下图:


再举一个微博的例子,新浪微博提供了一组Http请求形式得Api。由于现如今构造Http请求也算是一件麻烦事,所以逐渐就有了,“新浪微博iOS SDK”。这个SDK封装新浪微博得Http接口,提供了一组Objective C或者Swift形式接口。


那现在问题来了,什么是 “框架”
.NET框架,Cocoa框架,WPF框架……

简单得说……很厉害得SDK,就可以称自己为……框架。

猜你喜欢

转载自blog.csdn.net/sinat_40730205/article/details/78331808