什么是中间件?

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

还是你有一个不是中间件的软件的例子?

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

有一天客户想,为什么我们不把所有的系统集成到一个庞大的系统中。 十分钟后,他们的IT部门表示将花费两年时间。

你(明智的开发者)说,为什么我们不把所有不同的系统整合起来,让它们在同一个环境中一起工作? 客户经理盯着你…你继续,我们将使用中间件,我们将研究所有不同系统的input/输出,他们使用的资源,然后select一个合适的中间件框架。

仍然向非技术经理解释
在中间件框架的中间,第一个系统会产生X stuff,系统Y和Z会消耗这些输出等等。

中间件是一个非常模糊的术语。 什么是“中间件”在一个案件将不会在另一个案件。 一般来说,你可以期望中间件归类为以下特征:

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

  • 如果存在,依赖于它的应用程序将不得不将其作为其应用程序的一部分,并会经历很多重复。

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

您会注意到这与操作系统的定义非常相似。 所以,例如,TCP / IP堆栈或caching可以被认为是中间件。 但是你的操作系统也可以提供相同的function。 事实上,中间件可以被认为是操作系统的特殊扩展,特定于依赖于它的一组应用程序。 它只是提供更高级别的服务。

中间件的一些例子:

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

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

它开始

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

什么是中间件举几个例子。

我知道至less有三个不同的定义

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

  • 在游戏中,中间件是由第三方提供的任何东西

  • 在(一些)embedded式软件系统中,中间件提供应用程序使用的服务,这些服务由硬件抽象层提供的function组成 – 位于应用程序层和硬件抽象层之间。

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

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

在复杂的企业环境中,需要将两个或两个以上的企业系统集成在一起进行交stream时,会遇到许多挑战。 通常,这些系统不同于其他语言,因为它们是在使用不同语言(如C ++,Java,Cobol等)的不同平台上开发的。

所以这里提供了像提供服务的中间件软件

  • 消息格式从一个应用程序转换到其他应用程序
  • 路由和丰富消息,除了考虑到安全性,
  • encryption,
  • validation和
  • 对这些消息应用不同的业务规则。

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

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

中间件是关于我们的应用程序如何响应传入的请求。 中间件会检查传入的请求,并根据此请求做出决定。 我们只能使用中间件来构build整个应用程序。 例如,ASP.NET是一个由以下主要HTTP中间件组件组成的Web框架。

  1. exception/error handling
  2. 静态文件服务器
  3. authentication
  4. MVC 中间件

如上图所示,ASP.NET中有各种中间件组件,它们接收传入的请求,并将其redirect到C#类(在本例中为控制器类)。

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

上面提到的例子是所有的软件都可以让你处理不同进程之间的通信(或者运行在同一台机器上,或者通过互联网分发)。

它只是一个软件或一个工具,在这个软件或工具上,您的应用程序可以在高可用性,可扩展性,与其他软件或系统集成的情况下执行和应用function,而不必担心应用程序代码更改。

例如:应用程序在其上运行的操作系统需要更改IP,在代码中不必担心,它是可以简单更新configuration的中间件堆栈。

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

例3:你有多个完全不同的软件,你需要它们相互交谈,或者以一种通用的格式发送数据,这是所有系统都可以理解的,这就是中间件系统的用处。

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

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

从我自己的webwork经验来看,中间件是用户(web浏览器)和后端数据库之间的东西。 这是一个用户input的东西(例如:iPad的订单,做了一些神奇的业务逻辑,即检查是否有足够的iPad可用来填充订单),并更新后端数据库以反映这些变化。