首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >协议是应用程序吗?

协议是应用程序吗?
EN

Software Engineering用户
提问于 2016-11-25 10:35:46
回答 2查看 3.2K关注 0票数 2

基本上,我在脑中辩论API和协议是如何不同的。经过思考,我得出了我的新结论:我相信它们几乎是一样的,只不过协议更像是一个被广泛接受和使用的API。例如,API和协议都定义了两个或多个组件协同工作的标准和规范。API定义了特定程序的标准。一个协议,比如SSH,是一个程序本身,有它自己的规范。另一个需要考虑的问题是,协议只是一组规范。伙计们有什么想法吗?抱歉,如果我听起来无知的话。

EN

回答 2

Software Engineering用户

发布于 2016-11-25 11:06:31

不是的。协议不是应用程序。

协议是系统或系统组件之间相互通信、交换信息、从错误中恢复、建立语义的一组规则。

协议可以通过硬件、软件、人员或其中任何一个的组合来实现。

通常,指定的行为独立于任何特定的实现。

另一方面,一个应用程序是一个计算机程序,一个软件。

例如SSH这样的协议本身就是一个程序。

实际上,该应用程序是根据协议调用的。同名的两件事不一定是一回事。您可以编写一个实现SSH协议并称之为"Buba“的应用程序。应用程序不是协议,反之亦然。不同版本的Unix和或Linux可以有不同的ssh实用程序实现,但它们都调用程序SSH。

许多应用程序实现了XMPP协议,并且没有以该协议命名。

此外,如果还没有人实现协议,则协议可能只存在于文档或已发表(或未发表)的论文上。但它仍然是一项协议。即使没有软件应用程序、系统或API实现它。当协议被广泛接受(并被广泛实现)时,它可以成为一个标准(或者不是)。

票数 14
EN

Software Engineering用户

发布于 2016-11-25 14:27:57

所有的API都是协议,但不是所有的协议都是API。例如,键盘和主板之间的连接是由一个或多个协议(PS/2、USB、蓝牙等)控制的,但我们肯定不会称它为API。API是一种特殊的协议形式,它允许两个应用程序、子系统等(或同一应用程序的两个副本)相互通信和相互控制。

当我们开始讨论库(如OpenGL、Win32、.Net等)时,API也是我们所指的。用任何语言编写的源代码调用API端点,API端点反过来调用库,并最终调用操作系统或特定的硬件。API将文字机器或网络解释从开发人员身边抽象出来,这样他们就可以专注于实现应用程序,而不是担心这个特性是如何在较低级别上实现的。从这个意义上说,API是一种抽象形式。

例如,许多企业应用程序的SOAP允许开发人员将API导入到他们选择的开发环境中,以便以指定的方式进行通信。一旦实现,客户端软件就可以与服务器对话,并使其以服务器规定的方法插入数据、更新数据、检索数据、删除数据等等。

有时,协议和应用程序被巧合地命名为相同的东西,通常是为了方便,或者因为它是同类中的第一个。在您的示例中,SSH应用程序使用SSH协议与基于文本的终端进行通信。但是,Git还允许将SSH协议用作与上游存储库的通信形式,但Git并不称为SSH。

但是,区别在于:Git对SSH协议的使用构成了一个API,而SSH应用程序对SSH协议的使用只是一个通向服务器的隧道,而不是一个API。Git命令,如"push“、"pull”、"merge“等,通过SSH协议进行通信,但使用Git。通过SSH操作服务器需要由shell解释的附加命令,其中shell充当API,SSH充当协议。

票数 6
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/336858

复制
相关文章
SPA PP COGI中禁用删除按钮?
本文章仅用于SAP软件的应用、学习沟通,文中所示的截图来源于SAP软件,相应著作权归SAP公司所有。
SPA_小阿龙
2021/02/24
1.7K0
vim中对文本的选择
c. 用上下键选择文本;(v选择多个连续的字符,V选择连续的行,Ctrl+v选择对应的块)
全栈程序员站长
2022/07/12
1.7K0
django admin 列表禁用删除操作,编辑页面禁用删除按钮
class AnchorBindAgentAdmin(admin.ModelAdmin): def get_actions(self, request): # 列表禁用删除操作 if 'delete_selected' in actions: del actions['delete_selected'] return actions def has_delete_permission(self, request, o
卓越笔记
2023/02/18
2.1K0
Android实现EditText文本颜色渐变
刚开始想着先是设置textColor属性就可以了,然后写了个一个带渐变的shap感觉不好使,于是乎就自定义解决,代码如下
程序员飞飞
2020/02/27
3.3K0
Android实现EditText文本颜色渐变
Linux 删除文本中的重复行
这里我做了个简单的测试,当file中的重复行不再一起的时候,uniq将服务删除所有的重复行。经过排序后,所有相同的行都在相邻,因此unqi可以正常删除重复行。
阳光岛主
2019/02/19
8.7K0
EditText把光标放在文本的末尾处
当手动设置EditText的文本时,光标会恢复到最前面,可以再监听中设置光标到末尾处,这样就好了,大家有什么问题可以在下方留言。
程思扬
2022/01/11
5830
Android中EditText
1.android:hint="只能输入指定数字",文本框中显示提示信息 2.android:password="true"该文本框是一个密码框 3.android:phoneNumber="true"该文本框是一个电话框 4.android:digits="abcdefghijk"指输入内容限制为指定内容 5.android:drawableLeft="@drawable/icon"设置文本左边绘制指定图像 6.android:drawablePadding设置文本框内文本与图形间的间距 7.androi
欢醉
2018/01/22
7470
文本分类中的特征选择方法
在文本分类中,特征选择是选择训练集的特定子集的过程并且只在分类算法中使用它们。特征选择过程发生在分类器的训练之前。
数据分析
2018/01/29
1.7K0
文本分类中的特征选择方法
linux中有选择的删除目录中的文件
某些场景下我们需要删除目录下指定类型,后缀的文件。这时候就需要一些小技巧。 首先我们先要了解一下模式匹配。在Linux中,shell模式是由以下特殊字符组成的字符串,称为wildcards或者meta
入门笔记
2022/06/02
3K0
如何禁用或者删除Jenkins项目
禁用Jenkins项目 登录Jenkins系统 找到对应的项目 在右边点击「DISABLE PROJECT」 删除Jenkins 项目 找到对应的项目,直接点击「Delete Project」
叉叉敌
2019/02/20
5.5K0
Edittext In Listview,当listview的item中有edittext时,怎么保存edittext的值?
http://blog.csdn.net/lxk_1993/article/details/50527886
103style
2022/12/19
8630
Edittext In Listview,当listview的item中有edittext时,怎么保存edittext的值?
java的句柄_java获取窗口句柄
Java代码书写过程,文件资源的释放需要特别谨慎的对待.通常文件资源使用后必须close,然后再删除。
全栈程序员站长
2022/11/02
2.4K0
【Oracle笔记】外键的查询、启用禁用、删除
文章目录 一、查询所有表的外键 二、启用/禁用外键约束 三、删除外键 一、查询所有表的外键 select table_name, constraint_name from user_constraints where constraint_type = 'R'; 二、启用/禁用外键约束 alter table FM_CLIENT enable constraint CLIENT_TYPE_2019; //启用 alter table FM_CLIENT disable constraint CLIEN
程序员云帆哥
2022/05/12
1.8K0
python中str.translate的用法,删除文本中的标点符号
table=str.maketrans('','',string.punctuation)
用户7886150
2021/01/14
1.9K0
表单文本框的使用(一) 选择文本
input和textarea都会在value属性保存自己的内容,可设置和读取文本框的值。在textarea中设置value属性无效
赤蓝紫
2023/03/16
1.7K0
表单文本框的使用(一)  选择文本
EditText在RecyclerView中的解决方案
有时候,一个列表中的Item会有EditText的出现,而由于View复用机制,如果不好好处理EditText,将会出现一些问题。之前做项目中也遇到了这个问题,通过摸索以及思考,最终得到了解决方案。
用户1108631
2019/08/14
2.8K0
Android自定义EditText:一款简单实用的智能EditText(一键删除&自定义样式)
具体请看文章:Android自定义View:手把手教你做一款简单实用的SuperEditText(一键删除&自定义样式)
Carson.Ho
2022/03/25
9510
Android自定义EditText:一款简单实用的智能EditText(一键删除&自定义样式)
点击加载更多

相似问题

Python3.9.0 Idle不会打开,我该如何解决这个问题呢?

212

正在尝试创建altcase。Char失效了,我该怎么解决这个问题?

30

XCode不会打开我的任何文件夹...我该如何解决这个问题?

197

fopen未打开文件流...我该如何解决这个问题?

42

我该如何解决这个问题?

218
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文