最近我听到很多人在谈论中间件,但是中间件的确切定义是什么呢?当我研究中间件时,我发现了很多信息和一些定义,但在阅读这些信息和定义时,似乎所有的“产品”都处于某种中间。那么,所有东西都是中间件吗?
或者你有一个不是中间件的软件的例子吗?
最近我听到很多人在谈论中间件,但是中间件的确切定义是什么呢?当我研究中间件时,我发现了很多信息和一些定义,但在阅读这些信息和定义时,似乎所有的“产品”都处于某种中间。那么,所有东西都是中间件吗?
或者你有一个不是中间件的软件的例子吗?
当前回答
中间件是一个非常模糊的术语。在一种情况下什么是“中间件”,在另一种情况下就不一样了。一般来说,你可以期望中间件具有以下特征:
主要(通常是专有的)软件;通常不需要任何专门的硬件。 如果没有它,依赖于它的应用程序将不得不将它作为应用程序的一部分合并,并将经历大量的重复。 几乎可以肯定连接两个应用程序并在它们之间传递数据。
您会注意到,这与操作系统的定义几乎相同。因此,例如,TCP/IP堆栈或缓存可以被认为是中间件。但是你的操作系统也可以提供同样的功能。实际上,中间件可以被看作是对操作系统的特殊扩展,特定于依赖它的一组应用程序。它只是提供了更高级别的服务。
中间件的一些例子:
分布式缓存 消息队列 事务监视器 包重写 自动备份系统
其他回答
我一直认为它是我安装过的最古老的软件。整个应用程序使用了一个web服务器、一个数据库服务器和一个应用服务器。web服务器是数据和应用程序之间的中间件。
维基百科给出了一个很好的解释:http://en.wikipedia.org/wiki/Middleware
首先是
中间件是连接软件组件或应用程序的计算机软件。该软件由一组服务组成,这些服务允许运行在一台或多台机器上的多个进程进行交互。
什么是中间件给出了几个例子。
如果我没有错的话,在软件应用程序框架中,基于上下文,您可以考虑用于以下角色的中间件,它们可以组合在一起,以便在用户请求和应用程序响应之间执行某些活动。
适配器 洗手液 验证器
中间件是软件的总称,用于将分离的、通常是复杂的、已经存在的程序“粘合在一起”。一些经常与中间件连接的软件组件包括企业应用程序和Web服务。
在web应用程序开发中有一个常见的定义(我编了这个词,但它似乎很合适):一个被设计用来修改HTTP请求和/或响应,但(通常)不服务于整个响应的组件,被设计成链接在一起,在请求处理期间形成行为变化的管道。
通常由中间件实现的任务示例:
Gzip响应压缩 HTTP身份验证 请求日志记录
这里的关键点是,这些人都不完全负责对客户端的响应。相反,作为管道的一部分,每一个都以某种方式改变行为,将实际响应留给序列(管道)的后面部分。
通常,中间件在某种“路由器”之前运行,后者检查请求(通常是路径)并调用适当的代码来生成响应。
就我个人而言,我讨厌“中间件”这个术语的泛型,但它却被广泛使用。
下面是一个特别适用于Ruby on Rails的额外解释。