协议和接口在IT技术中有什么区别?

9

我理解接口是一组公开的内容,供一个系统与其他系统交互使用。我正在阅读有关WEBRTC协议的内容,为了了解协议是什么,我查看了维基百科定义。它大致表示协议是一套规则系统,允许两个系统进行通信。这不就是接口吗?也许我没有理解其中一个或者两个。

3个回答

5

接口定义了两个实体如何通信。协议定义了它们应该如何通信以及通信的含义。

这里是一个接口:

public interface ICommunicate
{
    string SendMessageAndGetResponse(string message);
}

一个协议可能是:

发送"Hello",如果你得到的回复是"Hi",那么发送"How are you?",回复将是一个状态。如果你从初始消息得到的回复不是"Hi",那么该系统就无法正常工作,你必须发送消息 "Reboot",如果成功,你将得到"Rebooted!"的回复,否则得到其他任何东西表示失败。


因此,协议似乎更像是一个脚本,而不是像接口一样的定义。 - Emily

2
一般来说,接口的意思是“实体之间的交互或联系点”,当用于软件时,它指的是“软件部分之间的连接”,并且在面向对象编程中,它是指定义一组操作,其他代码必须实现的代码片段。(来源:Source
一般来说,协议的意思是“正式的公式,出现在某些官方文件(如宪章、教皇诏书等)的开头或结尾”,而在计算机上,它指的是“描述如何传输或交换数据的一组正式规则,特别是跨网络进行数据交换”。 (来源:Source
因此,协议更关注数据交换,而接口更关注软件交互而不受任何数据交换的影响。
当然,在最终分析中,软件交互大多数情况下都是数据交换。将参数传递给函数是数据交换。调用方法/函数不直接是数据交换,但您需要像这样想象:而不是调用不同的函数:
c = add(a, b);
c = sub(a, b);

你也可以始终调用相同的函数并将所需功能作为参数传递:
c = func("add", a, b);
c = func("sub", a, b);

“而这样,功能也成为数据。”
“这些术语有些可以互换使用。例如,一些编程语言称其为接口,以便专注于组件(类、对象等)的纯交互,而有些则称其为协议,以便专注于组件之间的数据交换。”
“在网络上,协议是数据交换的方式;想想 IP 协议或 TCP 协议。但如果您有通过网络与其通信的通信端点来触发功能,例如 REST API,则所有这些端点及其参数的总和可以称为接口,而触发接口函数之一将通过 HTTP 请求完成,而 HTTP 是一种协议,定义了数据传输方式。”

0

我认为在某些方面,“接口”这个词也可以用于此(特别是作为API中的I),但通常在谈论我们通过网络发送的内容时,常用的词语是协议。

当你深入到单词的确切定义时,意义和区别有时可能会有些模糊。

但是避免过于精确的语义,API /接口往往比协议更高级一些。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接