随着软件规模的日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要,程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分,良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。API是接口的一种,在程序交互中具有重要的作用,而SDK与API有着密不可分的关系。
[ SDK的概念] SDK即“软体开发工具包”,一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。通俗点,是指由第三方服务商提供的实现软件产品某项功能的工具包。
通常SDK是由专业性质的公司提供专业服务的集合,比如提供安卓开发工具、或者基于硬件开发的服务等。也有针对某项软件功能的SDK,如推送技术、图像识别技术、移动支付技术、语音识别分析技术等,在互联网开放的大趋势下,一些功能性的SDK已经被当作一个产品来运营。
开发者不需要再对产品的每个功能进行开发,选择合适稳定的SDK服务并花费很少的经历就可以在产品中集成某项功能。
[ API的概念] API即“应用程序编程接口”,是一些预先定义的函数,目的是作为“介面”沟通两个不同的东西,提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
其实就是别人已经写好的可以实现特定功能的函数,而你只需要根据他提供好的接口,也就是调用他的方法,传入他规定的参数,然后这个函数就会帮你实现这些功能。
从接口interface来说,在计算机领域是指两个不同事物之间交互的地方,大可以到两个完整的不同系统,小可以到两段程序。所以这个I就这么理解。在这个基础上,人和程序交互的地方,叫做UI,user interface,所有人输入的包括鼠标键盘触摸屏声音输入都算。那么程序和程序交互的就叫做API,所有非人对非人交互都通过API进行交互,所谓交互,其实就是传递数据,触发功能。
API应用案例 示例场景:假如你是一家小企业,公司网站上有一个表格是用来给客户注册预约的。你想要凭借这些预约细节信息,让客户能够自动在谷歌日程上创建活动。
API使用:这就意味着,你的网站服务器需要直接与谷歌服务器进行对话,在掌握既定细节信息的情况下,申请创建活动。之后,你的服务器就会接收到谷歌的响应并进行处理,然后将相关信息发送回浏览器,比如说向用户发送一个确认信息。
API产品 现在也有公司将API包装成产品 案例:Weather Underground出售其天气数据API的访问权限给其他人。
API的分类 API又分为(Windows、Linux、Unix等系统的)系统级API,及非操作系统级的自定义API。作为一种有效的代码封装模式,微软Windows的API开发模式已经为许多商业应用开发的公司所借鉴,并开发出某些商业应用系统的API函数予以发布,方便第三方进行功能扩展。如Google、苹果电脑公司,以及诺基亚等手机开发的API等等。
API又分为开放式API(Open API)和私有API。顾名思义,私有API即接口未对外开放。Open API即把网站的服务封装成一系列计算机易识别的数据接口开放出去(是向所有人公开的接口),允许任何人调用它并获取到它背后的数据。
机智云OpenAPI就是这样开放式API,具有设备接入、数据采集、设备远程监控、用户账号管理、设备绑定管理和数据统计分析等技术能力,帮助厂商和开发者迅速构建各类IoT设备,甚至是进行设备管理和经销商等功能。
[ SDK和API的区别] SDK相当于开发集成工具环境,API就是数据接口。在SDK环境下调用API数据。
实际上SDK包含了API的定义,API定义一种能力,一种接口的规范,而SDK可以包含这种能力、包含这种规范。但是SDK又不完完全全只包含API以及API的实现,它是一个软件工具包,它还有很多其他辅助性的功能。 SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK编程”。
通俗点来讲
API:预先定义好的统一接口 SDK:调用API实现功能,是你的车轮和引擎 APP:你造出来的宇宙飞船~
[ 关于机智云Open API]
机智云是一个开放的物联网设备平台,它为企业和个人开发者提供设备接入、用户账号管理、用户与设备绑定管理、设备远程监控、定时任务以及设备高级数据等服务。这些数据都是存储在机智云的数据库中的。
那么作为开发者,如何去访问这些数据呢?机智云Open API 就是机智云对外提供这些数据的访问接口,提供如下功能: 用户管理:用户的注册、登录、密码重置等功能 消息中心:用户查看消息、标记已读和删除系统消息等功能 绑定管理:用户与设备的绑定、解绑等功能 设备远程监控:获取设备的当前状态、设备上报的原始数据、设备的上下线记录、设备的远程控制等功能 设备分享:比如用户把自己的绑定设备分享给其他用户,解绑其他用户对自己设备的绑定等 设备分组:对多个设备进行分组,发送一次指令就能控制分组下的多个设备 设备联动:通过创建设备间联动规则,当设备触发规则后,联动控制其他设备。 用户场景:用户可通过场景功能预设的一系列设备动作并在需要时触发。 定时任务管理:设备定时任务的增删改查等 通用定时任务:可对单个设备、设备分组和场景设置定时任务。 高级数据接口:比如对设备上报的数据按天取最大值、平均值等 系统信息:比如查看当前 Open API 版本,获取所有可能的错误列表等 更多 http://docs.gizwits.com/zh-cn/Cloud/openapi_apps.html
|