不管是硬件设备、软件概念或者是网络通讯中,协议、接口无处不在,软件系统离不开分层模型。我认为它们应该是计算机类专业中基础的基础,是必学的课程或概念。协议和分层,各种课程都有涉及,但可惜的是,很多计算机类专业都没有设立接口技术这一项。
我当年上大学,接口技术只是一门不受重视的选修课,老师不讲,学生不用看。接口技术的书籍里面,大都是艰涩难懂的硬件概念,罗列了各种各样天书般的技术参数,让人望而生畏。但是,接口技术不是硬件或嵌入式的专利。接口思维,是计算机类专业人员要必备的思维能力。它与协议思维、分层思维,并称为三大程序员基础思维。
计算机接口技术可以根据不同的标准和协议进行分类。最常见的是按照物理接口、逻辑接口和网络通讯来进行的分类。
硬件接口:包括串行接口、并行接口、USB接口、HDMI接口等,它们用于连接计算机和其他外部设备之间的通信和数据传输。当然,还有些ISA、PCI、I2C、SPI、CAN等硬件内部总线接口。
软件接口:包括应用程序接口(API)、驱动接口、类库、中间件、操作系统接口等,它们用于不同软件模块之间的通信和数据交换。
网络接口:包括网络协议栈、网络API等,它们用于实现计算机与网络之间的通信和数据传输。
接口技术的基本原理是,通过定义遵循相同的协议标准和规范,传递和转换不同的数据和信号,来实现设备之间、软件之间和网络之间的通信和进行交互操作。
例如,USB接口可以通过传输数字信号来连接计算机和外部设备,HDMI接口可以通过传输视频和音频信号来连接计算机和显示器,TCP/IP协议帮助我们传输数据包,HTML/CSS帮我们显现网页,操作系统API可以让我们创建新的应用进程。诸如此类的例子,多不胜数,举不胜举。
接口与协议是密切相关的,协议描述或暗含了接口,接口呈现了协议。协议与接口,有硬件的,有软件的,更多的是两者的结合。协议与接口,可以使用不同的和编程语言来实现,例如TCP/IP协议、XML协义,你可以用不同语言来描述、实现和使用它。
接口不是一个随性而为的东西,它具备以下特点:
可重用性,意味着接口可以在不同的系统和设备上被重复使用。
互换性,意味着不同的设备和系统可以使用相同的接口进行通信和交互。
可扩展性,意味着接口可以通过添加新的功能来扩展其能力。
可配置性,意味着接口可以根据需要进行配置和调整。
不仅硬件之间需要物理接口,不同软件之间,甚至同一软件内部各模块之间也需要接口。其实,软件的每个模块函数就是接口。广义来说,接口无处不在。无处不在的接口背后,都有相关的协议,比如我们打印A4、A4、A5等,它的尺寸也是协议定制的。再如,你实现的软件函数,其调用参数与返回值,内含了协议,外展露了调用接口。
一个互联网项目的API模型
如果只谈软件接口,包括应用程序接口API、驱动接口、类库、中间件、操作系统接口等,它们可以帮助不同的软件模块在运行时相互通信和协作。
应用程序接口(API):它定义了不同软件模块之间的通信方式和协议。API通常包括函数库、类库、命令行接口、Web服务接口等,这些接口可以让软件开发人员使用标准化的方式与其他软件组件进行交互。
类库:是一组已编写好的代码,用于封装特定功能的操作,例如文件输入输出、网络通信、图形界面等。类库可以被其他软件模块调用,从而实现代码的复用和模块化设计。
中间件:是一种软件接口技术,它用于连接不同的软件组件和系统。中间件通常包括消息队列、远程过程调用、对象请求代理、分布式事务处理等,它们可以让不同的软件模块在分布式系统中协同工作。
操作系统API接口:是操作系统提供给应用程序的一组接口,它们用于实现应用程序和硬件之间的交互,例如文件系统接口、进程管理接口、网络接口等。
驱动接口:设备的驱动指令是常人难以理解的。驱动程序封装这些细节抽象,提供的外部接口函数,供上层调用。
在编程中,接口是非常重要,因为它可以帮助程序员实现模块化和抽象化的编程方法。接口可以定义不同模块之间的通信和交互方式,从而使程序更加灵活、可扩展和可维护。此外,接口还可以使程序更加可测试和可靠。
而分层结构则是纯的软件思维。分层思维模型是一种将软件系统划分为不同层次的方法,每个层次有不同的职责和功能。每个层次之间都有明确的接口和约束条件,不同层次之间的通信通过接口进行。这种分层的思想可以使得系统的不同部分相对独立,从而更加容易维护和修改。此外,分层思想还可以促进团队协作,因为每个团队可以专注于自己的层次,而不必担心其他层次的细节。
我们的分层结构设计,都可以从OSI七层模型中得到营养。这方面的细节网上太多,不便详述。
因为协议、接口、分层,牵扯很广,不可能在一个短文里面说的透彻。但其中的本质、要点和原理,不会超出我的简谈。作为一个合格的码农,一定会在不知不觉的情况下,把这几项基本思维融入到了工作中。
以是上我这个老码农一时的兴起之作。这些思维看上去很简单明了,可能我很愚钝吧,这些居然是我工作多年之后才会有的感悟!
这些内容,可能对行外人来说是枯燥无味世界观、方法论,读起来一定是味同嚼蜡。如果你能看到这里,说明你恐怕是深有同感、或有不同见解的专业人士了,欢迎