软考:中间件

中间件

中间件是一类位于操作系统软件与用户应用软件之间的计算机软件,它包括一组服务,以便于运行在一台或多台机器上的多个软件通过网络进行交互

中间件的主要功能包括通信支持和应用支持

  • 通信支持为应用软件提供平台化的运行环境,屏蔽底层通信之间的接口差异,实现互操作。
  • 应用支持则为上层应用开发提供统一的平台和运行环境,并封装不同操作系统提供的API接口,向应用提供统一的标准接口,使应用的开发和运行与操作系统无关,实现其独立性。

中间件提供两种不同类型的支持

复制代码
- 交互支持(通信功能,应用支持,为应用层不同服务之间提供互操作机制)
- 提供公共服务

嵌入式中间件

嵌入式中间件是一类在嵌入式系统中,位于嵌入式应用和操作系统之间的中间软件。其主要作用是对嵌入式应用屏蔽底层操作系统的异构性,提供网络通信、存储管理和数据处理等功能。网络通信功能实现系统的框架结构和基本的通信接口功能,存储管理功能实现数据跨平台、跨介质的存储接口功能,而数据处理功能则实现了分布式系统框架结构和事务间基本互操作的接口功能。嵌入式中间件的典型产品包括公共对象请求代理结构(CORBA)和数据分发服务(Data Distribution Service,DDS)。

消息中间件

  • 异步通信
  • 消息队列是保存消息的容器
  • 负责再系统之间传递消息,负责应用之间通信(异构),只需要调用MQ的API就可以通信,而不需要考虑底层系统和网络的复杂性
  • 能够支持点对点,发布订阅的模式

数据库是一种特殊的中间件

数据库管理系统(DBMS)通常不被认为是中间件,但它们确实在软件架构中扮演着类似中间件的角色。下面是对数据库和中间件的一些区分和联系:

  1. 功能定位不同

    • 数据库管理系统(DBMS):主要负责数据的存储、检索、更新和管理。它提供了数据的持久化存储、事务管理、数据完整性和安全性等功能。
    • 中间件:主要负责不同软件组件或系统之间的通信、数据传输、服务协调等。它提供了跨网络的通信能力、数据格式转换、事务管理、负载均衡等功能。
  2. 作用范围不同

    • 数据库:专注于数据层面的操作和管理,如SQL查询、数据索引、备份与恢复等。
    • 中间件 :关注于系统间的交互和集成,如远程过程调用(RPC)、消息队列、事件总线等。
  3. 技术实现不同

    • 数据库:通常基于关系模型或非关系模型,使用SQL或NoSQL语言进行数据操作。
    • 中间件:可能基于各种通信协议和数据交换格式,如SOAP、REST、AMQP等。
  4. 在软件架构中的位置

    • 数据库:通常位于应用层和数据存储层之间,作为数据持久化和访问的接口。
    • 中间件:位于客户端应用和服务器端应用之间,或者在多个服务器端应用之间,作为通信和集成的桥梁。

尽管数据库和中间件在功能和实现上有所不同,但在某些情况下,数据库可以被视为一种特殊的中间件,特别是在处理数据密集型应用时。例如,数据库可以提供数据访问的中间层服务,使得应用层可以通过数据库API与底层数据存储进行交互。

总的来说,数据库和中间件都是软件架构中的重要组成部分,它们各自解决不同的问题,但也可以相互配合,共同构建复杂的软件系统。

相关推荐
许长安11 小时前
protobuf 使用详解
c++·经验分享·笔记·中间件
jeCA EURG2 天前
docker离线安装及部署各类中间件(x86系统架构)
docker·中间件·系统架构
许彰午3 天前
CacheSQL:一个面向政务系统的内存缓存数据库中间件
java·数据库·缓存·中间件·面试·开源软件·政务
亿牛云爬虫专家4 天前
Go爬虫进阶:如何优雅地在Colly框架中实现无缝代理切换?
爬虫·中间件·golang·爬虫代理·colly框架·代理切换·api提取
SuperherRo4 天前
服务攻防-中间件安全&Apache&Tomcat&Jetty&Weblogic&AJP协议&反序列化&CVE漏洞
中间件·tomcat·apache·jetty·weblogic
空中海4 天前
第四篇:进阶篇 — 缓存、消息队列、安全与常用中间件
安全·缓存·中间件
逍遥德5 天前
MQTT教程详解-03. 高级知识点
java·物联网·中间件·信息与通信·iot·iotdb
前端小超人rui5 天前
【Node.js Express中间件理解及中间件分类和作用】
中间件·node.js·express
前端小超人rui5 天前
封装Express 自定义中间件
中间件·node.js·express
weixin_419658315 天前
RabbitMQ 应用问题
java·分布式·中间件·rabbitmq