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 附带了。
1、使⽤命令⾏CLI(command-line interface)⼯具⽤于安装、运⾏、卸载软件的原因是命令可以详细的显⽰出哪⾥出问题了,如果直接点击软件安装,不知道哪⾥出错了。cli对程序员提供更多信息
2、物联⽹、服务器是没有GUI界⾯的,只能通过CLI和机器交换
3、有时候运⾏效率更⾼,可以把命令写成.bat⽂件。
作者:LYYYYY
链接:zhuanlan.zhihu/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 等。
我在中写到什么是 RESTful API,有兴趣的⼩伙伴可以点击阅读,这是我正在写的⼀本 SpringBoot ⼊门教程,⽬前还没完⼯,欢迎读者们不要吝啬⾃⼰的建议。
API 的构成要素
那么,API 通常由什么组成呢?
⾸先,我们要发送⼀些数据到云端,即所谓的「请求」。
从本地应⽤发请求到云端,我们需要分⼏步完成,以 REST 为例。
对于 REST API 调⽤请求,第⼀步是指定传输的⽅法,通常是和 HTTP ⽅法对应的,如下图所⽰:
当你想要上传⼀张图⽚时,通常会使⽤ POST ⽅法,然后是传递⼀些参数,包括请求的内容(图像本⾝)。然后加上需要请求的地址,即可构成⼀个完整的请求。如下图所⽰:
之后,服务器再以 JSON 等形式将数据返还给你,在你使⽤的云服务的⽂档中也会有所标注。
SDK
说了这么多,你应该对 API 有所了解了,那么这时候问题就来了,作为开发⼈员,你如何在实际的项⽬中调⽤ API?
你要⾃⼰构造 HTTP 请求、拼接 URL、添加需要的参数、处理返回的 JSON 对象,⿇烦吗?
⿇烦。
那有没有什么好的办法简化这些操作,使得我只需要给⼀张图⽚然后就给我返回结果的呢?
⾃然是有的,这就是接下来我们要说的 SDK 了。
sdkSDK 全称 Software Development Kit,软件开发⼯具包。
⼀般都是⼀些软件⼯程师为特定的软件包、软件框架、硬件平台、操作系统等建⽴应⽤软件时的开发⼯具的集合。
通俗来讲就是第三⽅服务商提供的实现产品软件某项功能的⼯具包。例如 JDK 就是⼀种 SDK。
还是以上⾯的 OCR 应⽤为例,如果使⽤了某⼚商的 SDK 服务,那么我们连 HTTP 请求的构建都不需要了,仅调⽤⼀个⽅法,可能的代码如下图所⽰。
OCRResult res = ("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 封装层次更⾼。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论