什么是中间件?

时间:2010-05-25 13:05:57

标签: frameworks middleware

我听过很多人最近谈到中间件,但中间件的确切定义是什么?当我查看中间件时,我发现了很多信息和一些定义,但在阅读这些信息和定义时,似乎大多数所有“商品”都处于中间状态。那么,所有东西都是中间件吗?

或者你有一个不是中间件的软件的例子吗?

15 个答案:

答案 0 :(得分:179)

假设您的公司生产4种不同的产品,您的客户还有另外3种不同公司的3种不同产品。

有一天客户想,为什么我们不将所有系统整合到一个庞大的系统中。十分钟后,他们的IT部门表示需要2年时间。

您(明智的开发人员)说,为什么我们不只是整合所有不同的系统并使它们在同质环境中协同工作?客户经理盯着你......你继续,我们将使用中间件,我们将研究所有不同系统的输入/输出,他们使用的资源,然后选择适当的中间件框架。

仍然向非技术经理解释
中间件框架位于中间,第一个系统将产生X填充,系统Y和Z将消耗这些输出等等。

答案 1 :(得分:80)

中间件是一个非常模糊的术语。什么是“中间件”在一个案例中不会在另一个案例中。通常,您可以期望被归类为中间件的东西具有以下特征:

  • 主要(通常是专门)软件;通常不需要任何专门的硬件。

  • 如果不在那里,依赖它的应用程序必须将其作为其应用程序的一部分合并,并且会经历大量重复。

  • 几乎可以肯定地连接两个应用程序并在它们之间传递数据。

您会注意到这与操作系统的定义基本相同。因此,例如,TCP / IP堆栈或缓存可以被视为中间件。但是您的操作系统也可以提供相同的功能。实际上,中间件可以被认为是对操作系统的特殊扩展,特定于依赖于它的一组应用程序。它只是提供更高级别的服务。

中间件的一些示例:

  • 分布式缓存
  • 消息队列
  • 交易监控
  • 包重写器
  • 自动备份系统

答案 2 :(得分:18)

维基百科有一个很好的解释:http://en.wikipedia.org/wiki/Middleware

开头
  

中间件是连接软件组件或应用程序的计算机软件。该软件包含一组服务,允许在一台或多台机器上运行的多个进程进行交互。

What is Middleware举了几个例子。

答案 3 :(得分:14)

我知道(至少)有三种不同的定义

  • 在商业计算中,中间件是应用程序和服务之间的消息传递和集成软件

  • 在游戏中,中间件非常适合第三方提供的任何内容

  • 在(某些)嵌入式软件系统中,中间件提供应用程序使用的服务,这些服务由硬件抽象层提供的功能组成 - 它位于应用程序层和硬件抽象层之间。

答案 4 :(得分:12)

简单地说,Middleware是一个软件组件,它提供将不同系统集成在一起的服务。

在复杂的企业环境中,当您需要将两个或多个企业系统集成在一起以进行相互通信时,存在许多挑战。通常这些系统不会理解彼此的语言,因为它们是使用不同语言(如C ++,Java,Cobol等)在不同平台上开发的。

所以这里有中间件软件,提供像

这样的服务
  • 将消息格式从一个应用程序转换为另一个应用程序,
  • 除了保护安全之外,路由和丰富消息,
  • 加密,
  • 验证和
  • 对这些消息应用不同的业务规则。

中间件的典型示例是 ESB 产品,如IBM消息代理(WMB / IIB),WESB,Datapower XI50,Oracle Fusion,Mule等等。

因此,中间件主要位于服务消费应用和服务提供商应用之间,并帮助这些应用相互通信。

答案 5 :(得分:9)

中间件是关于我们的应用程序如何响应传入的请求。中间件查看传入的请求,并根据此请求做出决策。我们只能使用中间件构建整个应用程序。对于例如ASP.NET是一个Web框架,包含以下主要的HTTP中间件组件。

  1. 异常/错误处理
  2. 静态文件服务器
  3. 验证
  4. MVC Middlewares
  5. 如上图所示,ASP.NET中有各种中间件组件接收传入请求,并将其重定向到C#类(在本例中为控制器类)。

答案 6 :(得分:8)

中间件是软件的通用术语,用于粘合在一起"单独的,通常是复杂的和已经存在的程序。一些经常与中间件连接的软件组件包括企业应用程序和Web服务。

答案 7 :(得分:5)

Middleware介于Web应用程序和本地无法通信的Web服务之间,通常使用不同的语言/框架编写。

一个这样的例子是OWIN middleware for .NET环境,之前owin人被迫在名为IIS的微软托管软件中托管网络应用程序。在owin开发之后,它增加了在IIS和自托管主机上托管的能力,在IIS中只增加了对作为接口的Owin的支持。此外,host .NET web apps on Linux via Mono也成为可能,这再次增加了对Owin的支持。

它还增加了创建Single Page Applications,Owin处理Http请求/响应上下文的容量,因此在owin之上您可以通过OAuth2添加authentication/authorization逻辑,例如,您可以配置中间件注册包含用户身份验证逻辑的类(例如OAuth2实现)或包含如何管理http请求/响应消息的逻辑的类,这样您就可以使一个应用程序通过不同的数据格式与其他应用程序/服务进行通信(像json,xml等,如果你的目标是web)。

答案 8 :(得分:4)

Web应用程序开发中有一个共同的定义(并且我正在制定这个措辞,但似乎很合适):<​​strong> 一个用于修改HTTP请求和/的组件或响应但不(通常)完整地提供响应,旨在链接在一起以形成请求处理期间的行为变化管道。

中间件通常实现的任务示例:

  • Gzip响应压缩
  • HTTP身份验证
  • 请求记录

这里的关键点是,这些都不是完全负责响应客户端。相反,每个都以某种方式将行为更改为管道的一部分,而实际的响应则来自序列中稍后的某些内容(管道)。

通常,中间件在某种&#34; router&#34;之前运行,它检查请求(通常是路径)并调用适当的代码来生成响应。

就个人而言,我讨厌术语&#34;中间件&#34;因为它的通用性,但它是常用的。

Here is an additional explanation specifically applicable to Ruby on Rails.

答案 9 :(得分:2)

中间件的一些示例:CORBA,远程方法调用(RMI),......

上面提到的例子都是软件,允许您处理不同进程之间的通信(运行在同一台机器上或分布在互联网上)。

答案 10 :(得分:1)

根据我自己的webwork经验,中间件是用户(Web浏览器)和后端数据库之间的东西。这是一个用户输入内容的软件(例如:iPad的订单,做了一些神奇的商业逻辑,即检查是否有足够的iPad可用于填写订单)并更新了后端数据库以反映这些变化。

答案 11 :(得分:1)

它只是您的应用程序执行的软件或工具,以及高可用性,可伸缩性,与其他软件或系统集成的rapplication功能,而无需您对应用程序级代码更改感到烦恼。

例如:运行应用程序的操作系统需要进行I.P更改,您不必担心代码中的问题,而是可以简单更新配置的中间件堆栈。

示例2:您遇到运行时内存分配问题并感觉应用程序使用率增加,除非您的代码中存在错误或瓶颈,否则您不必太多关于它,通过调整中间件可以轻松实现运行应用程序的软件配置。

示例3:您有多个不同的软件,您需要它们相互通信或以通用格式发送数据,这是所有系统都能理解的,那么这就是中间件系统的便利之处。

希望所提供的信息有所帮助。

答案 12 :(得分:1)

它是操作系统之间的软件层 和网络中分布式计算系统每一侧的应用程序。实际上,它连接异构网络和软件系统。

答案 13 :(得分:0)

我一直认为它是我必须安装的最古老的软件。应用程序总数使用Web服务器,数据库服务器和应用程序服务器。 Web服务器是数据和应用程序之间的中间件。

答案 14 :(得分:0)

如果我没看错,在软件应用程序框架中,基于上下文,您可以考虑使用middleware进行以下角色可以组合以在用户request和应用程序response之间执行某些活动。

  • 适配器
  • 消毒液
  • Validator