IDE 、SDK 、API区别、库、框架、组件、CLI
IDE:集成开发环境:包括代码编辑器、代码检测、代码调试器、译器/解释器、以及其他工具
SDK:SDK是IDE的基础引擎 ,比IDE更基本,因为它通常没有图形工具。工程师为辅助开发某类软件的相关文档、范例和工具的集合,使用SDK可以提高开发效率,更简单的接入某个功能。
举例说明:一个产品想实现某个功能,可以找到相关的SDK,工程师直接接入SDK,就不用再重新开发了。
.NET SDK 是一组库和工具,开发人员可用其创建 .NET 应用程序和库。 它包含以下用于构建和运行应用程序的组件:
- .NET CLI。
- .NET 库和运行时。
dotnet驱动程序。
API:应用程序接口,可以通过这个程序提供的公开接口,使用程序给功能。API 接口实现计算机软件之间的相互通信
框架:为开发
组件:
CLI:NET Core命令行界面(CLI)是一个新的跨平台工具,用于创建,还原程序包,构建,运行和发布.NET应用程序。.NET CLI 附带了 .NET SDK。
1、使用命令行CLI(command-line interface)工具用于安装、运行、卸载软件的原因是命令可以详细的显示出哪里出问题了,如果直接点击软件安装,不知道哪里出错了。cli对程序员提供更多信息
2、物联网、服务器是没有GUI界面的,只能通过CLI和机器交换
3、有时候运行效率更高,可以把命令写成.bat文件。
链接:https://zhuanlan.zhihu.com/p/338580653
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
前言
什么是 API?
什么是 SDK?
两者之间有何关系?
欢迎来到本次的每周一问系列。
既然点进来了,相信你或多或少都听说过这两个名词了,因此,在为你解答之前,让我们先从一个例子出发。 假如你想开发一个 OCR 应用(通俗的说就是文字识别应用),他的功能是识别用户上传的一张图片,然后将图片中的文字识别出来返回给用户。如下图所示:

通常,OCR 应用的后端服务都会部署在云上,那么我们应该如何在移动应用程序与基于云的服务之间进行通信呢
这就是 API 和 SDK 的用武之地了。
API
API 的特点
通信
首先我们要明白的是 API 是和通信有关的,是用于应用(服务)与其他应用(服务)对话所定义的协议。在上述例子中,你可以简单理解为 API 是 OCR 应用和云端服务之间沟通的桥梁。
那么 API 到底是什么?
API 全称 Application Programming Interface,即「应用程序接口」。
一般是指一些预先定义的函数,目的是供应用程序与开发人员基于某软件或硬件得以访问一组程序的能力,而又无需访问源码,或理解内部工作机制的细节。
以 Java 为例,当你想要实现一个数组排序的功能时,你是会先手写一个排序算法,还是直接使用Arrays.sort()函数?我想你心里是有答案的。
抽象
其次,我们要理解,API 的另一个重要特点——抽象。
抽象指的又是什么?
还是以这个 OCR 应用为例,当我们在使用云端提供的文字识别能力时(比如百度文字识别),他的背后可能会有成千上万的代码,比如提供识别能力的机器学习的代码、提供 Web 能力的后端代码等等。

但是你作为一个 APP 的开发者,你需要去看这些代码是怎么写的吗?难道不知道背后的源码就不能调用百度提供的文字识别能力了吗?当然不是。
通常服务商已经给你提供了文档,告诉你如何去调用相应服务,只要你按照他的要求来即可。

因此,在你的 APP 和 OCR 服务之间,API 抽象出所有复杂的逻辑,简化了调用过程,这使得你只需要考虑获取所需的数据即可。
标准化
API 是标准化的,这意味着存在有关如何定义 API 的行业标准,比如 SOAP、REST、GraphQL 等。
我在《你的第一本 SpringBoot 书》中写到什么是 RESTful API,有兴趣的小伙伴可以点击阅读,这是我正在写的一本 SpringBoot 入门教程,目前还没完工,欢迎读者们不要吝啬自己的建议 。
API 的构成要素
那么,API 通常由什么组成呢?
首先,我们要发送一些数据到云端,即所谓的「请求」。
从本地应用发请求到云端,我们需要分几步完成,以 REST 为例。
对于 REST API 调用请求,第一步是指定传输的方法,通常是和 HTTP 方法对应的,如下图所示:

当你想要上传一张图片时,通常会使用 POST 方法,然后是传递一些参数,包括请求的内容(图像本身)。然后加上需要请求的地址,即可构成一个完整的请求。如下图所示:

之后,服务器再以 JSON 等形式将数据返还给你,在你使用的云服务的文档中也会有所标注。

SDK
说了这么多,你应该对 API 有所了解了,那么这时候问题就来了,作为开发人员,你如何在实际的项目中调用 API?
你要自己构造 HTTP 请求、拼接 URL、添加需要的参数、处理返回的 JSON 对象,麻烦吗?
麻烦。
那有没有什么好的办法简化这些操作,使得我只需要给一张图片然后就给我返回结果的呢?
自然是有的,这就是接下来我们要说的 SDK 了。
SDK 全称 Software Development Kit,软件开发工具包。
一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
通俗来讲就是第三方服务商提供的实现产品软件某项功能的工具包。例如 JDK 就是一种 SDK。
还是以上面的 OCR 应用为例,如果使用了某厂商的 SDK 服务,那么我们连 HTTP 请求的构建都不需要了,仅调用一个方法,可能的代码如下图所示。
OCRResult res = ocrClient.ocr("pic.jpg").getResult();
通过调用这行代码,SDK 会自动封装 API 请求,而且作为响应,你获得的结果也不一定是 JSON 对象,也有可能是代码,例如上述代码段里的OCRResult,这是因为 SDK 也已经将 JSON 对象反序列化成你需要的对象,比如一个 Java Model。
SDK 相当于开发集成工具环境,API 就是数据接口。API 可以在 SDK 提供的“环境”里请求。同样的,这里的“环境”也是一个抽象的概念。如果不使用 SDK,也可以直接调用 API,只不过,这个环境就要由开发者自己实现了。
区别
其实从上面的内容,我们也已了解到,API 在更多场合下更像是 SDK 的一个子集,他们的区别如下:
- API 通常是一个函数,有特定的功能;而 SDK 是一个很多功能函数的集合体,更像是一个工具包。
- API 通常扮演数据接口的形象,SDK 相当于一个工具环境,通常是需要在 SDK 的环境下调用 APl。
- SDK 相较于 API 封装层次更高。
IDE 、SDK 、API区别、库、框架、组件、CLI的更多相关文章
- Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo
前两篇文章分享了基于 vite3 vue3 的组件库基础工程 vue3-component-library-archetype 和用于快速创建该工程的工具 yyg-cli,但在中大型的企业级项目中,通 ...
- 小程序-文章:微信小程序常见的UI框架/组件库总结
ylbtech-小程序-文章:微信小程序常见的UI框架/组件库总结 1.返回顶部 1. 想要开发出一套高质量的小程序,运用框架,组件库是省时省力省心必不可少一部分,随着小程序日渐火爆,各种不同类型的小 ...
- 微信小程序常见的UI框架/组件库总结
想要开发出一套高质量的小程序,运用框架,组件库是省时省力省心必不可少一部分,随着小程序日渐火爆,各种不同类型的小程序也渐渐更新,其中不乏一些优秀好用的框架/组件库. 1:WeUI 小程序–使用教程 h ...
- 信鸽推送 .NET (C#) 服务端 SDK rest api 调用库(v1.2)
信鸽推送 .NET 服务端 SDK rest api 调用库-介绍 该版本是基于信鸽推送v2版本的时候封装的,先拿出来与大家分享,封装还还凑合,不依赖其他http调用件,唯一依赖json序列化dll ...
- Expo大作战(二十九)--expo sdk api之registerRootComponent(注册跟组件),ScreenOrientation(屏幕切换),SecureStore,
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- Expo大作战(三十七)--expo sdk api之 GLView,GestureHandler,Font,Fingerprint,DeviceMotion,Brightness
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- Sentry 开发者贡献指南 - SDK 开发(性能监控:Sentry SDK API 演进)
内容整理自官方开发文档 本文档的目标是将 Sentry SDK 中性能监控功能的演变置于上下文中. 我们首先总结了如何将性能监控添加到 Sentry 和 SDK, 然后我们讨论 identified ...
- App 组件化/模块化之路——Android 框架组件(Android Architecture Components)使用指南
面对越来越复杂的 App 需求,Google 官方发布了Android 框架组件库(Android Architecture Components ).为开发者更好的开发 App 提供了非常好的样本. ...
- [转帖]Asp.net MVC 与 Asp.net Web API 区别
Asp.net MVC 与 Asp.net Web API 区别 https://www.cnblogs.com/viktor988/ https://www.cnblogs.com/terry283 ...
随机推荐
- Cesium官方英文论坛
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Cesium官方刚刚完成了将Google Groups论坛转移到 ...
- JuiceFS 在理想汽车的使用和展望
理想汽车是中国新能源汽车制造商,设计.研发.制造和销售豪华智能电动汽车,于 2015 年 7 月创立,总部位于北京,已投产的自有生产基地位于江苏常州,通过产品创新及技术研发,为家庭用户提供安全及便捷的 ...
- IDEA2017 maven Spark HelloWorld项目(本地断点调试)
作为windows下的spark开发环境 1.应用安装 首先安装好idea2017 java8 scalaJDK spark hadoop(注意scala和spark的版本要匹配) 2.打开idea, ...
- GoLang设计模式20 - 组合模式
定义 组合模式是一种结构型设计模式. 当我们想把一组对象当做一个整体来处理时就可以考虑使用组合模式. 组合模式被视为是接口型设计模式是因为它将一组对象组装为一个树状结构.这个树状结构中的每个独立组件都 ...
- Spring专题1: 静态代理和动态代理
合集目录 Spring专题1: 静态代理和动态代理 为什么需要代理模式? 代理对象处于访问者和被访问者之间,可以隔离这两者之间的直接交互,访问者与代理对象打交道就好像在跟被访者者打交道一样,因为代理者 ...
- 导入 static 修饰的包
一 static关键字,可以修饰变量 方法 代码块 , 静态内部类. 还可以用来修饰 需要导入的包 准备工作 package zhouxufeng; public class Text1 { ...
- Web:移动端阻止默认行为的小坑
问题 移动端 web 开发中,使用 addEventListener 阻止了 touchstart 事件的默认行为却发现没有生效 描述 再移动端 web 开发中,我们一般会用 addEventList ...
- 1.k8s的前世今生
k8s是Kubernetes的缩写,Google 于 2014 年开源了 Kubernetes 项目. 一.k8s的历史演变 k8s的演变过程:首先从传统的服务-->虚拟机部署-->容器部 ...
- SlidingMenu addIgnoreView() 无效的bug解决方法
## 感谢大佬:https://blog.csdn.net/fuchaosz/article/details/51513288 1 简介 最近在做侧滑的时候用到了SlidingMenu,在MainAc ...
- Copy as Markdown - 将页面链接按照 Markdown 格式copy
将页面文字和链接组成 Markdown 格式的网址 直接对页面链接右键使用时,无法获取链接标题,只能显示 No Title 所以需要: 选中「想作为标题的部分文字」, 然后去对「页面链接」右键-> ...