中间件是用于弥合应用程序与其他工具或数据库之间差距的软件。中间件位于操作系统和在其上运行的应用程序之间。它是一种有效的软件,它提供了一种应用程序之间的通信和数据管理方法,否则这些应用程序将无法交换数据——例如使用软件工具和数据库。
中间件出现在很多地方;但是,组织和开发人员会专门使用中间件来更有效地构建应用程序。使用多云和容器化环境的组织通常还会使用中间件作为开发和扩展应用程序的更具成本效益的方式。
中间件活动的一些示例包括处理数据和API管理、身份验证和消息传递服务。
中间件这个名称源于这样一个事实,即它是位于前端客户端请求和所请求的后端资源之间的软件。
客户端可以通过基于网络的交互发出请求。该客户端通常是驻留在前端的应用程序,这是用户与软件交互的地方。数据库、消息队列、 NoSQL 数据存储 和文件服务器等资源通常被称为后端的一部分。中间件将位于这些端点之间。
基于网络的请求尝试与后端数据交互。这些数据可能像要显示的图像或要播放的视频一样简单,也可能像银行交易历史一样复杂。
请求的数据可以采用多种不同的形式,并且可以以多种方式存储,例如来自文件服务器、从消息队列中获取或保存在数据库中。中间件的作用是启用和简化对这些后端资源的访问。中间件程序通常会为应用程序提供消息传递服务以传输数据,例如简单对象访问协议 ( SOAP )、表示状态传输 ( REST ) 或 JavaScript 对象表示法 ( JSON )。
中间件提供多种功能。首先,它管理与各种后端资源的连接。中间件组件可能会创建一个连接池,以提供对流行后端数据库的快速高效访问。它还可以创建与消息队列和主题的连接。此外,一个中间件软件可以管理与基于云的资源的连接,例如 Amazon Simple Storage Service ( Amazon S3 )。
其次,中间件软件具有根据客户端请求实现逻辑的能力。例如,中间件组件可能会识别出发出给定请求的客户端浏览器将语言标头设置为英语,因此,它对后端的查询可能会被调整为只返回基于英语的结果。或者,也许服务器可以根据其IP 地址识别发出请求的客户端的地理位置, 并将数据返回给优先考虑附近结果的客户端。接受用户请求、执行逻辑然后自定义结果的能力是中间件软件执行的一项重要工作。
第三,中间件在并发处理、 负载均衡 和事务管理中起着重要的作用 。中间件软件通常具有垂直和水平扩展的能力,以帮助将传入的客户端请求分发到多个服务器、虚拟机或云的可用区。中间件软件还可以处理并发和事务管理问题,例如处理两个或多个客户端尝试同时访问或更新给定后端资源时出现的问题。
最后,中间件在保护对后端资源的访问方面发挥着重要作用。中间件软件具备挑战客户端的能力;它需要安全连接(使用 SSL等技术 )和身份验证 (使用用户名和密码组合或 数字证书)。然后使用此安全信息检查发出请求的客户端是否有权访问相关数据。如果确认了权限,则使用安全和加密的连接将数据从中间件服务器发送到客户端。
一般来说,Gartner 和 Forrester Research 等 IT 行业分析师将中间件分为两类:企业应用程序集成中间件和平台中间件。
企业应用程序集成 中间件使程序员能够创建业务应用程序,而无需为每个新应用程序定制集成。在这种情况下,中间件帮助软件和服务组件协同工作,为数据一致性和多企业或 B2B 集成提供一层功能。
通常,集成中间件提供消息传递服务,因此不同的应用程序可以使用 SOAP、Web 服务、REST 或 JSON 等消息传递框架进行通信。此类别中使用的其他中间件技术包括对象请求代理 (ORB) 和 XML 等数据表示技术。
企业可以购买单独的集成中间件产品、本地产品或基于云的应用集成套件。
平台中间件通过为应用程序逻辑提供运行时 托管环境(例如容器)来支持软件开发和交付 。它的主要组件是内存和企业应用程序服务器,以及 Web 服务器和内容管理。平台中间件包括支持应用程序开发和交付的工具,例如 Web 服务器、应用程序服务器和内容管理系统。
通常,嵌入式或外部通信平台中间件将允许不同的通信工具一起工作。这些通信工具支持应用程序和服务交互。资源管理服务,例如 Microsoft Azure 资源管理器,在运行时托管应用程序逻辑——平台中间件中的另一个关键功能。其他组件包括可信平台模块 ( TPM ) 和内存数据网格 ( IMDG )。
平台中间件产品也可用作特定的本地或云服务工具,以及多功能工具套件。在云套件站点上,中间件即服务提供运行时环境和一组集成的平台工具。
有许多中间件示例,每个示例都是为了实现连接应用程序、Web 和云服务的特定功能而创建的。以下是一些常用的中间件类型:
消息中间件促进了分布式应用程序和服务之间的通信。
对象或 ORB 中间件使软件组件或对象能够跨分布式系统与程序(例如容器)进行通信和交互。
远程过程调用 (RPC)中间件提供了一种协议,该协议允许程序从位于另一台计算机或网络上的另一个程序请求服务。
数据或数据库中间件可以直接访问数据库并与之交互;它通常包括 SQL 数据库软件。
事务或事务中间件通过事务过程监控确保事务从一个阶段转移到下一个阶段。
以内容为中心的中间件允许客户端对特定内容和摘要的请求并交付它;它类似于 Apache Kafka等发布/订阅中间件。
嵌入式中间件有助于嵌入式应用程序和实时操作系统之间的通信和集成。
中间件程序来自本地软件和云服务;它们可以单独使用,也可以一起使用,具体取决于用例。虽然云提供商将中间件捆绑到云服务套件中——例如中间件即服务 (MWaaS) 或集成平台即服务 ( iPaaS )——但许多企业可能会选择适合其特定需求的独立中间件产品。
一些提供中间件的供应商包括:
IBM与用于开发跨平台移动应用程序的 IBM Worklight。
Microsoft与 Microsoft BizTalk,用于集成中心。
SAP与 SAP NetWeaver Mobile 的移动应用程序。
Apache与 Apache Camel,它为基于 B2B 和微服务的环境提供开源中间件。
其他供应商包括 Oracle、Red Hat、TIBCO Software 和 ScaleOut Software。
选择中间件时应考虑个人或组织希望通过它实现的目标。例如,如果数据管理需要中间件,那么就应该使用数据库中间件;如果应用服务需要中间件,则应使用应用服务器中间件。关键思想是根据所需的性能找到合适的软件。
一些中间件会提供特定的工具来帮助开发人员。例如,红帽提供了基于容器的处理功能。如果某个特定的工具集脱颖而出,那么该特定的中间件可能是值得的。但是,组织应该确保中间件可以与它尝试连接的应用程序一起工作。
组织还应该将可靠性、复杂性和性能——因为某些性能速度可能会有很大差异——与其他中间件产品进行比较。
从 2000 年到大约 2010 年,中间件软件是应用服务器概念的代名词。然而,随着云计算的普及和微服务取代更多基于面向服务架构 ( SOA ) 的单体系统,中间件正在发生变化。
开发人员不再将完整的应用程序部署到中间件服务器,而是开始创建更小的、基于微服务的应用程序。然后,他们将这些微服务与连接到所需的后端资源所需的所有知识打包在一起,并将应用程序部署在基于容器的轻量级系统中,例如 Docker。然后将容器部署到基于云的服务。
在这种情况下,中间件将是容器内托管的微服务和运行容器的云计算基础设施的组合。这种安排是目前中间件的趋势方向。
通过上述介绍,相信大家对什么是中间件已经有所了解,大家如果想了解更多相关知识,不妨来关注一下本站的Java极悦在线学习,里面的课程内容由浅到深,很适合没有基础的小伙伴学习,希望对大家能够有所帮助。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习